版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、國家應(yīng)用軟件產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)中心國家應(yīng)用軟件產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)中心軟件測(cè)試工程師培訓(xùn)軟件結(jié)構(gòu)性測(cè)試概覽在本章中,我們將學(xué)習(xí):結(jié)構(gòu)性測(cè)試概述 程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)性測(cè)試案例 目標(biāo)完成此課程之后,學(xué)員將具備以下能力: 了解結(jié)構(gòu)性測(cè)試的含義 進(jìn)行程序結(jié)構(gòu)分析 使用邏輯覆蓋的方法進(jìn)行白盒測(cè)試 使用devpartner進(jìn)行白盒測(cè)試課程目錄結(jié)構(gòu)測(cè)試結(jié)構(gòu)測(cè)試概述概述 程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)測(cè)試案例分析結(jié)構(gòu)測(cè)試工具使用結(jié)構(gòu)測(cè)試定義 把測(cè)試對(duì)象看做一個(gè)透明的盒子白盒測(cè)試是根據(jù)被測(cè)程序的內(nèi)部結(jié)構(gòu)設(shè)計(jì)測(cè)試用例并完成測(cè)試的一種測(cè)試方法白盒測(cè)試或邏輯驅(qū)動(dòng)測(cè)試基于一個(gè)應(yīng)用代碼的內(nèi)部邏輯知識(shí),測(cè)試覆蓋全部代碼、
2、分支、路徑和條件結(jié)構(gòu)測(cè)試特點(diǎn)可以構(gòu)成測(cè)試數(shù)據(jù)使特定程序部分得到測(cè)試有一定的充分性度量手段可獲得較多工具支持通常只用于單元測(cè)試結(jié)構(gòu)測(cè)試的方法程序結(jié)構(gòu)分析 代碼走查 代碼審查 控制流分析 數(shù)據(jù)流分析 信息流分析邏輯覆蓋 語句覆蓋 分支覆蓋 條件覆蓋 分支-條件覆蓋 路徑覆蓋結(jié)構(gòu)測(cè)試的局限不可能查出程序是否違反了設(shè)計(jì)規(guī)范不可能查出程序中因遺漏路徑而出錯(cuò)可能發(fā)現(xiàn)不了一些與數(shù)據(jù)有關(guān)的錯(cuò)誤不易生成測(cè)試數(shù)據(jù)代碼覆蓋率采用白盒法進(jìn)行測(cè)試時(shí),考慮的是測(cè)試用例對(duì)程序內(nèi)部邏輯的覆蓋程度最徹底的白盒法是覆蓋程序中的每一條路徑,但這往往無法實(shí)現(xiàn)采用其它一些標(biāo)準(zhǔn)來量度覆蓋的程度,并希望覆蓋程度盡可能高些課程目錄結(jié)構(gòu)測(cè)試概
3、述 程序結(jié)構(gòu)分析程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)測(cè)試案例分析結(jié)構(gòu)測(cè)試工具使用程序結(jié)構(gòu)分析代碼走查代碼審查控制流分析數(shù)據(jù)流分析信息流分析代碼走查 含義代碼走查是由一組程序和錯(cuò)誤檢查技術(shù)組成,并以代碼審查組方式進(jìn)行 人員組長(zhǎng)(有威信的資深程序員擔(dān)任):負(fù)責(zé)分配資料、安排計(jì)劃、主持會(huì)議、記錄并保存被發(fā)現(xiàn)的錯(cuò)誤資深程序員測(cè)試人員程序開發(fā)員(可做會(huì)議主持)代碼走查原因 功能性測(cè)試很難實(shí)現(xiàn)有太多的條件有太多的測(cè)試用例代碼審查內(nèi)容檢查代碼和設(shè)計(jì)的一致性檢查代碼對(duì)標(biāo)準(zhǔn)的遵循、可讀性檢查代碼的邏輯表達(dá)的正確性檢查代碼結(jié)構(gòu)的合理性代碼審查步驟準(zhǔn)備程序閱讀審查會(huì)跟蹤及報(bào)告控制流分析 非結(jié)構(gòu)化程序會(huì)給測(cè)試、排錯(cuò)、和程序的
4、維護(hù)帶來許多困難要求寫出的程序結(jié)構(gòu)良好檢查程序的控制結(jié)構(gòu)成為十分有意義的工作程序流程圖 1325控制流圖12435abcdef控制流圖節(jié)點(diǎn)標(biāo)有編號(hào)的圓圈 程序流程圖中矩形框所表示的處理 菱形表示的兩個(gè)甚至多個(gè)出口判斷 多條流線相交的匯合點(diǎn) 控制流圖控制流線或弧 箭頭 與程序流程圖中的流線一致,表明了控制的順序 控制流線通常標(biāo)有名字控制流圖矩陣 acbdef1234512345控制流圖矩陣便于機(jī)器表示和處理控制流圖 連接弧的節(jié)點(diǎn)的號(hào)碼決定了矩陣中元素的位置注意控制流的方向兩個(gè)節(jié)點(diǎn)沒有弧線,所對(duì)應(yīng)的位置也就沒有元素程序結(jié)構(gòu)的基本要求 寫出的程序不應(yīng)包含:轉(zhuǎn)向并不存在的標(biāo)號(hào) 沒有用的語句標(biāo)號(hào) 從程序
5、入口進(jìn)入后無法達(dá)到的語句 不能達(dá)到停機(jī)語句的語句 數(shù)據(jù)流分析 查找引用未定義變量等程序錯(cuò)誤 查找對(duì)以前未曾使用的變量再次賦值等數(shù)據(jù)流異常的情況 常見的錯(cuò)誤表現(xiàn)形式錯(cuò)拼名字名字混淆語句丟失數(shù)據(jù)流如果程序中某一語句執(zhí)行時(shí)能改變某程序變量v的值,則稱v被該語句定義如果一語句的執(zhí)行引用了內(nèi)存中變量v的值,則稱v被該語句引用例如:x=y+z;if yz then return;控制流圖與數(shù)據(jù)流表1234106758911節(jié)點(diǎn)被定義變量被引用變量1x,y,z2xw,x3x,y4y,z5yv,y6zv,z7vx8wy9zv10zz11z信息流分析通過對(duì)輸入數(shù)據(jù)、輸出數(shù)據(jù)、語句之間的關(guān)系的分析來檢查程序錯(cuò)誤整
6、除算法例子輸入:in_m是被除數(shù),in_n是除數(shù)輸出:out_q是商,out_r是余數(shù)整除算法例子1out_q = 0;2out_r = in_m;3while(out_r = in_n) 4 out_q +;5 out_r = out_r in_n; 信息流關(guān)系圖in_min_n12345out_q out_r12345out_q out_rin_min_n(1)(2)(3)信息流分析能夠列出對(duì)輸入變量的所有可能的引用在程序的任何指定點(diǎn)檢查其執(zhí)行可能影響某一輸出變量值的語句輸入輸出關(guān)系提供一種檢查,看每個(gè)輸出值是否由相關(guān)的輸入值,而不是其他值導(dǎo)出課程目錄白盒測(cè)試概述 程序結(jié)構(gòu)分析 邏輯覆蓋邏
7、輯覆蓋 結(jié)構(gòu)測(cè)試案例分析結(jié)構(gòu)測(cè)試工具使用覆蓋準(zhǔn)則 測(cè)試到什么地步可以結(jié)束測(cè)試? 覆蓋準(zhǔn)則被測(cè)小程序 if (a 1 & b = 0) x = x/a;if (a = 2 | x 1) x = x + 1;被測(cè)程序段流程圖a 1 & b = 0aa = 2 | x 1x = x/aftbcx = x + 1tefd邏輯覆蓋測(cè)試方法 語句覆蓋 分支覆蓋 條件覆蓋 分支-條件覆蓋 路徑覆蓋 語句覆蓋 原理:如果語句中有錯(cuò)誤,僅靠觀察不執(zhí)行可能發(fā)現(xiàn)不了在測(cè)試時(shí),首先設(shè)計(jì)若干個(gè)測(cè)試用例,然后運(yùn)行被測(cè)程序,使程序中的每個(gè)可執(zhí)行語句至少執(zhí)行一次 若干個(gè) - 盡量少 語句覆蓋、程序段覆蓋、程序
8、塊覆蓋語句覆蓋率語句覆蓋率 已執(zhí)行的可執(zhí)行語句占程序中可執(zhí)行語句總數(shù)的百分比復(fù)雜的程序不可能達(dá)到語句的完全覆蓋語句覆蓋率越高越好語句覆蓋測(cè)試用例 達(dá)到語句覆蓋100%的測(cè)試用例(路徑ace) a = 2 b = 0 x = 3未達(dá)到語句覆蓋100%的測(cè)試用例(路徑abe) a = 2 b = 1 x = 3語句覆蓋的優(yōu)點(diǎn)檢查所有語句結(jié)構(gòu)簡(jiǎn)單的代碼的測(cè)試效果較好容易實(shí)現(xiàn)自動(dòng)測(cè)試代碼覆蓋率高 如果是程序塊覆蓋,則不涉及程序塊中的源代碼 語句覆蓋不能檢查出的錯(cuò)誤條件語句錯(cuò)誤 “a 1 & b = 0” - “a 0 & b = 0”邏輯運(yùn)算(&、|)錯(cuò)誤 “a 1 &
9、 b = 0” - “a 1 | b = 0” “ u = a2 ” - “ u = a1 ” 語句覆蓋不能檢查出的錯(cuò)誤循環(huán)語句錯(cuò)誤 循環(huán)次數(shù)錯(cuò)誤 跳出循環(huán)條件錯(cuò)誤語句覆蓋不能檢查出的錯(cuò)誤循環(huán)語句例子for(i=0;i3) statement;語句覆蓋率的問題能達(dá)到很高的語句覆蓋率語句覆蓋率看似很高,卻有嚴(yán)重缺陷 if(x!=1) statements; ; else statement; 99句1句測(cè)試用例x = 2語句覆蓋率99%50%的分支沒有達(dá)到分支覆蓋設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的真假分支至少經(jīng)歷一次又稱判定覆蓋while語句、switch語句、異常處理、跳轉(zhuǎn)語
10、句等等同樣可以使用分支覆蓋來測(cè)試分支覆蓋率 已取過“真”和“假”兩個(gè)值的判定占程序中所有條件判定個(gè)數(shù)的百分比分支覆蓋測(cè)試用例 路徑ace a=2 b=0 x=3 路徑abd a=1 b=0 x=1 路徑acd a=3 b=0 x=3路徑abe a=2 b=1 x=2或分支覆蓋的利弊分支覆蓋要比語句覆蓋查錯(cuò)能力強(qiáng)一些:執(zhí)行了分支覆蓋,實(shí)際也就執(zhí)行了語句覆蓋分支覆蓋與語句覆蓋存在同樣的缺點(diǎn) 不能查出條件語句錯(cuò)誤 不能查出邏輯運(yùn)算錯(cuò)誤 不能查出循環(huán)次數(shù)錯(cuò)誤 不能查出循環(huán)條件錯(cuò)誤條件覆蓋設(shè)計(jì)若干測(cè)試用例,執(zhí)行被測(cè)程序以后,要使每個(gè)判斷中的每個(gè)條件的可能取值至少滿足一次條件覆蓋分析第1個(gè)判斷應(yīng)考慮 a
11、1,記為t1 a 1,記為t4 x 1, b = 0, 記為t1, t2(2) a 1, b != 0, 記為t1, f2(3) a = 1, b = 0, 記為f1, t2(4) a 1, 記為t3, t4(6) a = 2, x 1, 記為f3, t4(8) a != 2, x , = , =, =)b,測(cè)試時(shí)應(yīng)選擇ab的情況分別測(cè)試一次對(duì)于分支a (, c時(shí),選擇a=c小正數(shù) 當(dāng)ac時(shí),選擇a=c小正數(shù)對(duì)于測(cè)試用例取值,在每個(gè)測(cè)試用例中盡量不同的值或符號(hào)覆蓋率要求對(duì)單元測(cè)試來說,語句覆蓋和分支覆蓋是最基本的要求由于程序中錯(cuò)誤(異常)處理工作的重要性以及其結(jié)構(gòu)相對(duì)簡(jiǎn)單,要求錯(cuò)誤處理要做到路
12、徑覆蓋對(duì)質(zhì)量要求高的軟件單元,可根據(jù)情況提出條件覆蓋、分支-條件覆蓋以及路徑覆蓋要求課程目錄結(jié)構(gòu)測(cè)試概述 程序結(jié)構(gòu)分析 邏輯覆蓋 結(jié)構(gòu)測(cè)試案例分析結(jié)構(gòu)測(cè)試案例分析結(jié)構(gòu)測(cè)試工具使用結(jié)構(gòu)測(cè)試案例求最小值 求數(shù)組中的最小值 k = i; for(j = i+1; j = n; j+) if(aj ak) k = j; 程序流程圖 k = i; j = i+1j = n?aj ak?k = jj+acbdef最少測(cè)試用例數(shù) 3測(cè)試用例(最少)用例編號(hào)輸入輸出循環(huán)in ai ai+1路徑k10111ac1211212abefc1311221abdfc2疑問 測(cè)試用例是否足夠?循環(huán)測(cè)試是否足夠? 在結(jié)構(gòu)復(fù)雜,測(cè)試用例數(shù)非常多的情況下,這些測(cè)試用例已經(jīng)可以滿足測(cè)試,但并不具有充分性如何達(dá)到充分性? 測(cè)試2次循環(huán) 測(cè)試用例(充分)用例編號(hào)輸入輸出循環(huán) i n ai ai+1 ai+2路徑k101 11ac1211 212abefc1311 221abdfc2421 3123abefbefc1521 3213abdfbefc2621 3231abefbdfc3721 3321abdfbdfc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省肇慶市2024年中考一模數(shù)學(xué)試題含答案
- 晉中學(xué)院《數(shù)字化教學(xué)資源設(shè)計(jì)與開發(fā)(C)》2023-2024學(xué)年第一學(xué)期期末試卷
- 淮陰工學(xué)院《豎向設(shè)計(jì)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】第九章壓強(qiáng) 復(fù)習(xí)++2024-2025學(xué)年人教版物理八年級(jí)下冊(cè)
- 黑龍江八一農(nóng)墾大學(xué)《大數(shù)據(jù)審計(jì)虛擬仿真實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江育英職業(yè)技術(shù)學(xué)院《火電廠典型控制與保護(hù)策略專題研討》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué)《企業(yè)虛擬仿真綜合實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 長(zhǎng)治職業(yè)技術(shù)學(xué)院《土木工程結(jié)構(gòu)抗震》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南外事外語職業(yè)學(xué)院《GIS軟件應(yīng)用實(shí)驗(yàn)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 企業(yè)社會(huì)責(zé)任在價(jià)值鏈中的作用機(jī)理
- 常用靜脈藥物溶媒的選擇
- 當(dāng)代西方文學(xué)理論知到智慧樹章節(jié)測(cè)試課后答案2024年秋武漢科技大學(xué)
- 2024年預(yù)制混凝土制品購銷協(xié)議3篇
- 2024-2030年中國高端私人會(huì)所市場(chǎng)競(jìng)爭(zhēng)格局及投資經(jīng)營管理分析報(bào)告
- GA/T 1003-2024銀行自助服務(wù)亭技術(shù)規(guī)范
- 《消防設(shè)備操作使用》培訓(xùn)
- 新交際英語(2024)一年級(jí)上冊(cè)Unit 1~6全冊(cè)教案
- 2024年度跨境電商平臺(tái)運(yùn)營與孵化合同
- 2024年電動(dòng)汽車充電消費(fèi)者研究報(bào)告-2024-11-新能源
- 湖北省黃岡高級(jí)中學(xué)2025屆物理高一第一學(xué)期期末考試試題含解析
- 上海市徐匯中學(xué)2025屆物理高一第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含解析
評(píng)論
0/150
提交評(píng)論