版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件結(jié)構(gòu)性測試第一頁,共八十四頁,2022年,8月28日概覽在本章中,我們將學(xué)習(xí):結(jié)構(gòu)性測試概述程序結(jié)構(gòu)分析邏輯覆蓋結(jié)構(gòu)性測試案例第二頁,共八十四頁,2022年,8月28日目標(biāo)完成此課程之后,學(xué)員將具備以下能力:了解結(jié)構(gòu)性測試的含義進(jìn)行程序結(jié)構(gòu)分析使用邏輯覆蓋的方法進(jìn)行白盒測試使用Devpartner進(jìn)行白盒測試第三頁,共八十四頁,2022年,8月28日課程目錄結(jié)構(gòu)測試概述
程序結(jié)構(gòu)分析
邏輯覆蓋結(jié)構(gòu)測試案例分析結(jié)構(gòu)測試工具使用第四頁,共八十四頁,2022年,8月28日結(jié)構(gòu)測試定義
把測試對象看做一個透明的盒子白盒測試是根據(jù)被測程序的內(nèi)部結(jié)構(gòu)設(shè)計測試用例并完成測試的一種測試方法白盒測試或邏輯驅(qū)動測試基于一個應(yīng)用代碼的內(nèi)部邏輯知識,測試覆蓋全部代碼、分支、路徑和條件第五頁,共八十四頁,2022年,8月28日結(jié)構(gòu)測試特點(diǎn)可以構(gòu)成測試數(shù)據(jù)使特定程序部分得到測試有一定的充分性度量手段可獲得較多工具支持通常只用于單元測試第六頁,共八十四頁,2022年,8月28日結(jié)構(gòu)測試的方法程序結(jié)構(gòu)分析代碼走查代碼審查控制流分析數(shù)據(jù)流分析信息流分析邏輯覆蓋語句覆蓋分支覆蓋條件覆蓋分支-條件覆蓋路徑覆蓋第七頁,共八十四頁,2022年,8月28日結(jié)構(gòu)測試的局限不可能查出程序是否違反了設(shè)計規(guī)范不可能查出程序中因遺漏路徑而出錯可能發(fā)現(xiàn)不了一些與數(shù)據(jù)有關(guān)的錯誤不易生成測試數(shù)據(jù)第八頁,共八十四頁,2022年,8月28日代碼覆蓋率采用白盒法進(jìn)行測試時,考慮的是測試用例對程序內(nèi)部邏輯的覆蓋程度最徹底的白盒法是覆蓋程序中的每一條路徑,但這往往無法實(shí)現(xiàn)采用其它一些標(biāo)準(zhǔn)來量度覆蓋的程度,并希望覆蓋程度盡可能高些第九頁,共八十四頁,2022年,8月28日課程目錄結(jié)構(gòu)測試概述程序結(jié)構(gòu)分析
邏輯覆蓋結(jié)構(gòu)測試案例分析結(jié)構(gòu)測試工具使用第十頁,共八十四頁,2022年,8月28日程序結(jié)構(gòu)分析代碼走查代碼審查控制流分析數(shù)據(jù)流分析信息流分析第十一頁,共八十四頁,2022年,8月28日代碼走查含義代碼走查是由一組程序和錯誤檢查技術(shù)組成,并以代碼審查組方式進(jìn)行人員組長(有威信的資深程序員擔(dān)任):負(fù)責(zé)分配資料、安排計劃、主持會議、記錄并保存被發(fā)現(xiàn)的錯誤資深程序員測試人員程序開發(fā)員(可做會議主持)第十二頁,共八十四頁,2022年,8月28日代碼走查原因功能性測試很難實(shí)現(xiàn)有太多的條件有太多的測試用例第十三頁,共八十四頁,2022年,8月28日代碼審查內(nèi)容檢查代碼和設(shè)計的一致性檢查代碼對標(biāo)準(zhǔn)的遵循、可讀性檢查代碼的邏輯表達(dá)的正確性檢查代碼結(jié)構(gòu)的合理性第十四頁,共八十四頁,2022年,8月28日代碼審查步驟準(zhǔn)備程序閱讀審查會跟蹤及報告第十五頁,共八十四頁,2022年,8月28日控制流分析
非結(jié)構(gòu)化程序會給測試、排錯、和程序的維護(hù)帶來許多困難要求寫出的程序結(jié)構(gòu)良好檢查程序的控制結(jié)構(gòu)成為十分有意義的工作第十六頁,共八十四頁,2022年,8月28日程序流程圖1325第十七頁,共八十四頁,2022年,8月28日控制流圖12435abcdef第十八頁,共八十四頁,2022年,8月28日控制流圖節(jié)點(diǎn)標(biāo)有編號的圓圈
程序流程圖中矩形框所表示的處理
菱形表示的兩個甚至多個出口判斷
多條流線相交的匯合點(diǎn)
第十九頁,共八十四頁,2022年,8月28日控制流圖控制流線或弧箭頭
與程序流程圖中的流線一致,表明了控制的順序
控制流線通常標(biāo)有名字第二十頁,共八十四頁,2022年,8月28日控制流圖矩陣
acbdef1234512345第二十一頁,共八十四頁,2022年,8月28日控制流圖矩陣便于機(jī)器表示和處理控制流圖
連接弧的節(jié)點(diǎn)的號碼決定了矩陣中元素的位置注意控制流的方向兩個節(jié)點(diǎn)沒有弧線,所對應(yīng)的位置也就沒有元素第二十二頁,共八十四頁,2022年,8月28日程序結(jié)構(gòu)的基本要求寫出的程序不應(yīng)包含:轉(zhuǎn)向并不存在的標(biāo)號
沒有用的語句標(biāo)號
從程序入口進(jìn)入后無法達(dá)到的語句
不能達(dá)到停機(jī)語句的語句
第二十三頁,共八十四頁,2022年,8月28日數(shù)據(jù)流分析
查找引用未定義變量等程序錯誤
查找對以前未曾使用的變量再次賦值等數(shù)據(jù)流異常的情況
常見的錯誤表現(xiàn)形式錯拼名字名字混淆語句丟失第二十四頁,共八十四頁,2022年,8月28日數(shù)據(jù)流如果程序中某一語句執(zhí)行時能改變某程序變量V的值,則稱V被該語句定義如果一語句的執(zhí)行引用了內(nèi)存中變量V的值,則稱V被該語句引用例如:X=Y+Z;ifY>Zthenreturn;第二十五頁,共八十四頁,2022年,8月28日控制流圖與數(shù)據(jù)流表1234106758911節(jié)點(diǎn)被定義變量被引用變量1X,Y,Z2XW,X3X,Y4Y,Z5YV,Y6ZV,Z7VX8WY9ZV10ZZ11Z第二十六頁,共八十四頁,2022年,8月28日信息流分析通過對輸入數(shù)據(jù)、輸出數(shù)據(jù)、語句之間的關(guān)系的分析來檢查程序錯誤整除算法例子輸入:in_m是被除數(shù),in_n是除數(shù)輸出:out_q是商,out_r是余數(shù)第二十七頁,共八十四頁,2022年,8月28日整除算法例子out_q=0;out_r=in_m;While(out_r>=in_n){out_q++;out_r=out_r–in_n;}第二十八頁,共八十四頁,2022年,8月28日信息流關(guān)系圖√√√√√√√in_min_n12345√√√√√√√√out_qout_r12345√√√√out_qout_rin_mIn_n(1)(2)(3)第二十九頁,共八十四頁,2022年,8月28日信息流分析能夠列出對輸入變量的所有可能的引用在程序的任何指定點(diǎn)檢查其執(zhí)行可能影響某一輸出變量值的語句輸入輸出關(guān)系提供一種檢查,看每個輸出值是否由相關(guān)的輸入值,而不是其他值導(dǎo)出第三十頁,共八十四頁,2022年,8月28日課程目錄白盒測試概述程序結(jié)構(gòu)分析
邏輯覆蓋
結(jié)構(gòu)測試案例分析結(jié)構(gòu)測試工具使用第三十一頁,共八十四頁,2022年,8月28日覆蓋準(zhǔn)則測試到什么地步可以結(jié)束測試?覆蓋準(zhǔn)則第三十二頁,共八十四頁,2022年,8月28日被測小程序if(A>1&&B==0)X=X/A;if(A==2||X>1)X=X+1;第三十三頁,共八十四頁,2022年,8月28日被測程序段流程圖A>1&&B==0aA==2||X>1X=X/AFTbcX=X+1TeFd第三十四頁,共八十四頁,2022年,8月28日邏輯覆蓋測試方法
語句覆蓋
分支覆蓋
條件覆蓋
分支-條件覆蓋
路徑覆蓋
第三十五頁,共八十四頁,2022年,8月28日語句覆蓋原理:如果語句中有錯誤,僅靠觀察不執(zhí)行可能發(fā)現(xiàn)不了在測試時,首先設(shè)計若干個測試用例,然后運(yùn)行被測程序,使程序中的每個可執(zhí)行語句至少執(zhí)行一次若干個->盡量少語句覆蓋、程序段覆蓋、程序塊覆蓋第三十六頁,共八十四頁,2022年,8月28日語句覆蓋率語句覆蓋率已執(zhí)行的可執(zhí)行語句占程序中可執(zhí)行語句總數(shù)的百分比復(fù)雜的程序不可能達(dá)到語句的完全覆蓋語句覆蓋率越高越好第三十七頁,共八十四頁,2022年,8月28日語句覆蓋測試用例達(dá)到語句覆蓋100%的測試用例(路徑ace)A=2B=0X=3未達(dá)到語句覆蓋100%的測試用例(路徑abe)A=2B=1X=3第三十八頁,共八十四頁,2022年,8月28日語句覆蓋的優(yōu)點(diǎn)檢查所有語句結(jié)構(gòu)簡單的代碼的測試效果較好容易實(shí)現(xiàn)自動測試代碼覆蓋率高
如果是程序塊覆蓋,則不涉及程序塊中的源代碼
第三十九頁,共八十四頁,2022年,8月28日語句覆蓋不能檢查出的錯誤條件語句錯誤“A>1&&B==0”
->“A>0&&B==0”邏輯運(yùn)算(&&、||)錯誤“A>1&&B==0”
->“A>1||B==0”“U=A<1||B>2”
->“U=A<1”
第四十頁,共八十四頁,2022年,8月28日語句覆蓋不能檢查出的錯誤循環(huán)語句錯誤循環(huán)次數(shù)錯誤跳出循環(huán)條件錯誤第四十一頁,共八十四頁,2022年,8月28日語句覆蓋不能檢查出的錯誤循環(huán)語句例子for(i=0;i<10;i++){statement;}While(x>3){statement;}for(i=0;i<=10;i++){statement;}While(x>3&&x<7){statement;}第四十二頁,共八十四頁,2022年,8月28日語句覆蓋率的問題能達(dá)到很高的語句覆蓋率語句覆蓋率看似很高,卻有嚴(yán)重缺陷
if(x!=1){statements;……;}else{statement;}}99句}1句測試用例x=2語句覆蓋率99%50%的分支沒有達(dá)到第四十三頁,共八十四頁,2022年,8月28日分支覆蓋設(shè)計若干測試用例,運(yùn)行被測程序,使得程序中每個判斷的真假分支至少經(jīng)歷一次又稱判定覆蓋while語句、switch語句、異常處理、跳轉(zhuǎn)語句等等同樣可以使用分支覆蓋來測試分支覆蓋率已取過“真”和“假”兩個值的判定占程序中所有條件判定個數(shù)的百分比第四十四頁,共八十四頁,2022年,8月28日分支覆蓋測試用例
路徑aceA=2B=0X=3
路徑abdA=1B=0X=1路徑acdA=3B=0X=3
路徑abeA=2B=1X=2或第四十五頁,共八十四頁,2022年,8月28日分支覆蓋的利弊分支覆蓋要比語句覆蓋查錯能力強(qiáng)一些:執(zhí)行了分支覆蓋,實(shí)際也就執(zhí)行了語句覆蓋分支覆蓋與語句覆蓋存在同樣的缺點(diǎn)不能查出條件語句錯誤不能查出邏輯運(yùn)算錯誤不能查出循環(huán)次數(shù)錯誤不能查出循環(huán)條件錯誤第四十六頁,共八十四頁,2022年,8月28日條件覆蓋設(shè)計若干測試用例,執(zhí)行被測程序以后,要使每個判斷中的每個條件的可能取值至少滿足一次第四十七頁,共八十四頁,2022年,8月28日條件覆蓋分析第1個判斷應(yīng)考慮
A>1,記為T1A<=1,即記為F1B==0,記為T2B!=0,記為F2第2個判斷應(yīng)考慮
A==2,記為T3A!=2,記為F3X>1,記為T4X<=1,記為F4第四十八頁,共八十四頁,2022年,8月28日條件覆蓋測試用例用例編號ABX路徑覆蓋條件1203aceT1,T2,T3,T42101abdF1,T2,F3,F43211abeT1,F2,T3,F4似乎執(zhí)行了條件覆蓋必然實(shí)現(xiàn)了分支覆蓋?第四十九頁,共八十四頁,2022年,8月28日條件覆蓋測試用例用例編號ABX路徑覆蓋條件1103abeF1,T2,F3,T42211abeT1,F2,T3,F4執(zhí)行條件覆蓋并不能實(shí)現(xiàn)分支覆蓋第五十頁,共八十四頁,2022年,8月28日條件覆蓋的利弊能夠檢查所有的條件錯誤不能實(shí)現(xiàn)對每個分支的檢查用例數(shù)量的增加a&&b&&(c||(d&&e))((a||b)&&(c||d))&&e第五十一頁,共八十四頁,2022年,8月28日分支-條件覆蓋設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能至少出現(xiàn)一次,并且每個判斷本身的判定結(jié)果也至少出現(xiàn)一次第五十二頁,共八十四頁,2022年,8月28日分支-條件覆蓋分析(1)A>1,B==0,記為T1,T2(2)A>1,B!=0,記為T1,F2(3)A<=1,B==0,記為F1,T2(4)A<=1,B!=0,記為F1,F2(5)A==2,X>1,記為T3,T4(6)A==2,X<=1,記為T3,F4(7)A!=2,X>1,記為F3,T4(8)A!=2,X<=1,記為F3,F4第五十三頁,共八十四頁,2022年,8月28日分支-條件覆蓋測試用例用例編號ABX覆蓋組合號路徑覆蓋條件1203(1)(5)aceT1,T2,T3,T42211(2)(6)abcT1,F2,T3,F43103(3)(7)abeF1,T2,F3,T44111(4)(8)abdF1,F2,F3,F4覆蓋了3條路徑,漏掉了路徑acd第五十四頁,共八十四頁,2022年,8月28日分支-條件覆蓋的利弊既考慮了每一個條件,又考慮了每一個分支,發(fā)現(xiàn)錯誤能力強(qiáng)于分支覆蓋和條件覆蓋并不能全面覆蓋所有路徑用例數(shù)量的增加第五十五頁,共八十四頁,2022年,8月28日路徑覆蓋設(shè)計足夠多的測試用例,要求覆蓋程序中所有可能的路徑路徑ace記為L1abd記為L2abe記為L3acd記為L4第五十六頁,共八十四頁,2022年,8月28日路徑覆蓋測試用例用例編號ABX覆蓋路徑1203ace(L1)2101abd(L2)3211abe(L3)4301acd(L4)第五十七頁,共八十四頁,2022年,8月28日路徑覆蓋的利弊實(shí)現(xiàn)了所有路徑的測試,發(fā)現(xiàn)錯誤能力強(qiáng)某些條件錯誤可能無法發(fā)現(xiàn)路徑數(shù)龐大,不可能覆蓋所有路徑用例數(shù)量的增加第五十八頁,共八十四頁,2022年,8月28日循環(huán)測試路徑覆蓋0次循環(huán)檢查跳出循環(huán)1次循環(huán)檢查循環(huán)初始值2次循環(huán)檢查多次循環(huán)m次循環(huán)檢查某次循環(huán)最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次循環(huán)檢查循環(huán)次數(shù)邊界第五十九頁,共八十四頁,2022年,8月28日簡化循環(huán)路徑循環(huán)使路徑數(shù)量急劇增長簡化無論循環(huán)的形式和實(shí)際執(zhí)行循環(huán)體的次數(shù)多少,只考慮循環(huán)一次和0次兩種情況進(jìn)入循環(huán)體一次跳出循環(huán)體第六十頁,共八十四頁,2022年,8月28日循環(huán)程序流程圖CBCB(1)(2)第六十一頁,共八十四頁,2022年,8月28日簡化循環(huán)路徑圖(1)和(2)都可簡化為(3)CB第六十二頁,共八十四頁,2022年,8月28日最少測試用例數(shù)計算對于具體的程序,至少要設(shè)計多少測試用例?估算最少測試用例數(shù)幫助執(zhí)行測試有助于估算測試的時間第六十三頁,共八十四頁,2022年,8月28日結(jié)構(gòu)化程序與N-S圖結(jié)構(gòu)化程序是由3種基本控制結(jié)構(gòu)組成順序型選擇型(條件分支)重復(fù)型(循環(huán))測試時考慮的結(jié)構(gòu)順序型選擇型(條件分支)第六十四頁,共八十四頁,2022年,8月28日程序結(jié)構(gòu)與測試用例數(shù)第六十五頁,共八十四頁,2022年,8月28日程序結(jié)構(gòu)與測試用例數(shù)當(dāng)程序中判定多于一個時,形成的分支結(jié)構(gòu)可以分為兩類:嵌套型分支結(jié)構(gòu)和連鎖型分支結(jié)構(gòu)對于嵌套型分支結(jié)構(gòu),若有n個判定語句,需要n+1個測試用例對于連鎖型分支結(jié)構(gòu),若有n個判定語句,需要有2n個測試用例,覆蓋它的2n條路徑第六十六頁,共八十四頁,2022年,8月28日最少測試用例數(shù)計算實(shí)例計算最少測試用例數(shù)第六十七頁,共八十四頁,2022年,8月28日最少測試用例數(shù)計算實(shí)例第六十八頁,共八十四頁,2022年,8月28日最少測試用例數(shù)計算實(shí)例第六十九頁,共八十四頁,2022年,8月28日測試覆蓋準(zhǔn)則Foster的ESTCA覆蓋準(zhǔn)則錯誤敏感測試用例分析(ErrorSensitiveTestCasesAnalysis)問題第七十頁,共八十四頁,2022年,8月28日ESTCA覆蓋準(zhǔn)則對于分支A(>,=,<,>=,<=)B,測試時應(yīng)選擇A<B,A=B,A>B的情況分別測試一次對于分支A(>,<)C,A是變量,C是常量當(dāng)A>C時,選擇A=C+小正數(shù)當(dāng)A<C時,選擇A=C-小正數(shù)對于測試用例取值,在每個測試用例中盡量不同的值或符號第七十一頁,共八十四頁,2022年,8月28日覆蓋率要求對單元測試來說,語句覆蓋和分支覆蓋是最基本的要求由于程序中錯誤(異常)處理工作的重要性以及其結(jié)構(gòu)相對簡單,要求錯誤處理要做到路徑覆蓋對質(zhì)量要求高的軟件單元,可根據(jù)情況提出條件覆蓋、分支-條件覆蓋以及路徑覆蓋要求第七十二頁,共八十四頁,2022年,8月28日課程目錄結(jié)構(gòu)測試概述程序結(jié)構(gòu)分析
邏輯覆蓋結(jié)構(gòu)測試案例分析結(jié)構(gòu)測試工具使用第七十三頁,共八十四頁,2022年,8月28日結(jié)構(gòu)測試案例求最小值
求數(shù)組中的最小值
k=i;for(j=i+1;j<=n;j++){if(A[j]<A[k])k=j;}第七十四頁,共八十四頁,2022年,8月28日程序流程圖k=i;j=i+1j<=n?A[j]<A[k]?k=jj++
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河北省建筑安全員-A證考試題庫及答案
- 2025河南省建筑安全員A證考試題庫
- 《家禽常見病資料》課件
- 《法醫(yī)檢驗相關(guān)》課件
- 單位人力資源管理制度集粹匯編十篇
- 單位人力資源管理制度呈現(xiàn)大合集十篇
- 北方華創(chuàng)刻蝕和薄膜沉積設(shè)備領(lǐng)域優(yōu)勢突出打造平臺型設(shè)備龍頭
- 2025年人形機(jī)器人行業(yè)投資策略報告:量產(chǎn)元年曙光將現(xiàn)
- 單位管理制度收錄大全人事管理十篇
- 單位管理制度收錄大合集員工管理篇十篇
- 2025年國家計算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心省級分中心招聘39人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之21:“7支持-7.5成文信息”(雷澤佳編制-2025B0)
- 2023-2024年電商直播行業(yè)現(xiàn)狀及發(fā)展趨勢研究報告
- 中央2024年市場監(jiān)管總局直屬事業(yè)單位招聘中層干部歷年參考題庫(頻考版)含答案解析
- 阜陽市重點(diǎn)中學(xué)2025屆高考數(shù)學(xué)全真模擬密押卷含解析
- 2024年市特殊教育學(xué)校工作總結(jié)范文(2篇)
- LNG采購框架合同范例
- 課題1 金屬材料 教學(xué)設(shè)計 九年級化學(xué)下冊人教版2024
- 能源崗位招聘筆試題與參考答案(某大型國企)
- 工業(yè)設(shè)計基礎(chǔ)知識單選題100道及答案解析
- 山西省晉中市2023-2024學(xué)年高一上學(xué)期期末考試 化學(xué) 含解析
評論
0/150
提交評論