軟件測試技術(shù)



《軟件測試技術(shù)》由會員分享,可在線閱讀,更多相關(guān)《軟件測試技術(shù)(170頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1vv軟軟軟軟件件件件測測測測試試試試方方方方法法法法和和和和技技技技術(shù)術(shù)術(shù)術(shù)是是是是多多多多種種種種多多多多樣樣樣樣的的的的,可可可可以以以以從從從從不不不不同的角度加以分類同的角度加以分類同的角度加以分類同的角度加以分類vv從從從從測測測測試試試試是是是是否否否否針針針針對對對對系系系系統(tǒng)統(tǒng)統(tǒng)統(tǒng)的的的的內(nèi)內(nèi)內(nèi)內(nèi)部部部部結(jié)結(jié)結(jié)結(jié)構(gòu)構(gòu)構(gòu)構(gòu)和和和和具具具具體體體體實實實實現(xiàn)現(xiàn)現(xiàn)現(xiàn)算算算算法法法法的的的的角角角角度度度度來來來來看看看看,可可可可分分分分為為為為黑黑黑黑盒盒盒盒測測測測試試試試和和和和白白白白盒盒盒盒測測測測試試試試vv從從從從是是是是否否否否需需需需要要要要執(zhí)執(zhí)執(zhí)執(zhí)行行行行被被被
2、被測測測測軟軟軟軟件件件件的的的的角角角角度度度度,可可可可分分分分為為為為靜靜靜靜態(tài)測試態(tài)測試態(tài)測試態(tài)測試和和和和動態(tài)測試動態(tài)測試動態(tài)測試動態(tài)測試軟件測試方法軟件測試方法2vv兩兩兩兩種種種種測測測測試試試試方方方方法法法法從從從從不不不不同同同同的的的的角角角角度度度度出出出出發(fā)發(fā)發(fā)發(fā),反反反反映映映映了了了了軟軟軟軟件件件件的不同側(cè)面,也適用于不同的開發(fā)環(huán)境的不同側(cè)面,也適用于不同的開發(fā)環(huán)境的不同側(cè)面,也適用于不同的開發(fā)環(huán)境的不同側(cè)面,也適用于不同的開發(fā)環(huán)境vv黑盒測試:基于黑盒測試:基于黑盒測試:基于黑盒測試:基于軟件設(shè)計規(guī)范軟件設(shè)計規(guī)范軟件設(shè)計規(guī)范軟件設(shè)計規(guī)范設(shè)計測試用例設(shè)計測試用例
3、設(shè)計測試用例設(shè)計測試用例vv白盒測試:基于白盒測試:基于白盒測試:基于白盒測試:基于代碼覆蓋情況代碼覆蓋情況代碼覆蓋情況代碼覆蓋情況設(shè)計測試用例設(shè)計測試用例設(shè)計測試用例設(shè)計測試用例eg.eg.eg.eg.排水系統(tǒng)排水系統(tǒng)排水系統(tǒng)排水系統(tǒng)測試方法黑盒與白盒測試方法黑盒與白盒3白盒測試白盒測試白盒測試白盒測試(WHITE-BOX TESTING)(WHITE-BOX TESTING)(WHITE-BOX TESTING)(WHITE-BOX TESTING)也稱也稱也稱也稱結(jié)構(gòu)測試結(jié)構(gòu)測試結(jié)構(gòu)測試結(jié)構(gòu)測試、邏輯驅(qū)動測試邏輯驅(qū)動測試邏輯驅(qū)動測試邏輯驅(qū)動測試。vv此此此此方方方方法法法法把把把把測測測
4、測試試試試對對對對象象象象看看看看做做做做一一一一個個個個透透透透明明明明的的的的盒盒盒盒子子子子,它它它它允允允允許許許許測測測測試試試試人人人人員員員員利利利利用用用用程程程程序序序序內(nèi)內(nèi)內(nèi)內(nèi)部部部部的的的的邏邏邏邏輯輯輯輯結(jié)結(jié)結(jié)結(jié)構(gòu)構(gòu)構(gòu)構(gòu)及及及及有有有有關(guān)關(guān)關(guān)關(guān)信信信信息息息息,設(shè)設(shè)設(shè)設(shè)計計計計或或或或選選選選擇擇擇擇測測測測試試試試用用用用例例例例,對程序所有邏輯路徑進行測試。對程序所有邏輯路徑進行測試。對程序所有邏輯路徑進行測試。對程序所有邏輯路徑進行測試。vv通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期通過在不同點檢查程序
5、的狀態(tài),確定實際的狀態(tài)是否與預(yù)期通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為邏輯測試。白盒測試的主的狀態(tài)一致。因此白盒測試又稱為邏輯測試。白盒測試的主的狀態(tài)一致。因此白盒測試又稱為邏輯測試。白盒測試的主的狀態(tài)一致。因此白盒測試又稱為邏輯測試。白盒測試的主要方法有邏輯驅(qū)動、基路測試等。要方法有邏輯驅(qū)動、基路測試等。要方法有邏輯驅(qū)動、基路測試等。要方法有邏輯驅(qū)動、基路測試等。第第4 4章章 白盒測試白盒測試4軟軟軟軟件件件件人人人人員員員員使使使使用用用用白白白白盒盒盒盒測測測測試試試試方方方方法法法法,主主主主要要要要想想想想對對對對程程程程序序序序模模模模
6、塊塊塊塊進進進進行行行行如如如如下下下下的的的的檢檢檢檢查:查:查:查:vv對程序模塊的所有獨立的執(zhí)行路徑至少測試一次;對程序模塊的所有獨立的執(zhí)行路徑至少測試一次;對程序模塊的所有獨立的執(zhí)行路徑至少測試一次;對程序模塊的所有獨立的執(zhí)行路徑至少測試一次;vv對對對對所所所所有有有有的的的的邏邏邏邏輯輯輯輯判判判判定定定定,取取取取“真真真真”與與與與取取取取“假假假假”的的的的兩兩兩兩種種種種情情情情況況況況都都都都至至至至少少少少測試一次;測試一次;測試一次;測試一次;vv在循環(huán)的邊界和運行界限內(nèi)執(zhí)行循環(huán)體;在循環(huán)的邊界和運行界限內(nèi)執(zhí)行循環(huán)體;在循環(huán)的邊界和運行界限內(nèi)執(zhí)行循環(huán)體;在循環(huán)的邊界和
7、運行界限內(nèi)執(zhí)行循環(huán)體;vv測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。白盒測試的作用白盒測試的作用5vv對對對對一一一一個個個個具具具具有有有有多多多多重重重重選選選選擇擇擇擇和和和和循循循循環(huán)環(huán)環(huán)環(huán)嵌嵌嵌嵌套套套套的的的的程程程程序序序序,不不不不同同同同的的的的路徑數(shù)目可能是天文數(shù)字。路徑數(shù)目可能是天文數(shù)字。路徑數(shù)目可能是天文數(shù)字。路徑數(shù)目可能是天文數(shù)字。vv給給給給出出出出一一一一個個個個小小小小程程程程序序序序的的的的流流流流程程程程圖圖圖圖,它它它它包包包包括括括括了了了了一一一一個個個個執(zhí)執(zhí)執(zhí)執(zhí)行行行行202020
8、20次的循環(huán)。次的循環(huán)。次的循環(huán)。次的循環(huán)。vv包包包包含含含含的的的的不不不不同同同同執(zhí)執(zhí)執(zhí)執(zhí)行行行行路路路路徑徑徑徑數(shù)數(shù)數(shù)數(shù)達達達達5 5 5 520202020條條條條,對對對對每每每每一一一一條條條條路路路路徑徑徑徑進進進進行行行行測測測測試試試試需需需需要要要要1 1 1 1毫毫毫毫秒秒秒秒,假假假假定定定定一一一一年年年年工工工工作作作作365 365 365 365 24242424小小小小時,要想把所有路徑測試完,需時,要想把所有路徑測試完,需時,要想把所有路徑測試完,需時,要想把所有路徑測試完,需3170317031703170年。年。年。年。白盒測試白盒測試615 side
9、A=atoi(argv1);15 sideA=atoi(argv1);16 sideB=atoi(argv2);16 sideB=atoi(argv2);17 sideC=atoi(argv3);17 sideC=atoi(argv3);181819 If(sideA=sideB)&(sideA=sideC)19 If(sideA=sideB)&(sideA=sideC)20 20 21 s=0.5*(sideA+sideB+sideC);21 s=0.5*(sideA+sideB+sideC);22 Area=sqrt(s/(s-sideA)*(s-sideB)*(s-sideC);22 A
10、rea=sqrt(s/(s-sideA)*(s-sideB)*(s-sideC);23 printf(“area=%gn”,Area);23 printf(“area=%gn”,Area);24 24 25 else 25 else 26 puts(“not an equilateral triangle”);26 puts(“not an equilateral triangle”);27 return 0;27 return 0;28 28 Figure1.Code Under TestFigure1.Code Under Test白盒測試技術(shù)S=0.5(SideA+SideB+SideC
11、)S=0.5(SideA+SideB+SideC)Area=S(S-SideA)(S-SideB)(S-SideC)Area=S(S-SideA)(S-SideB)(S-SideC)1/21/2白盒測試白盒測試7TrueTrueDirect GraphDirect GraphTest Case1Test Case1Test Case2Test Case2Inputs:Inputs:Inputs:Inputs:SideA=2 SideA=2 SideA=3 SideA=3 SideB=2 SideB=2 SideB=4 SideB=4 SideC=2 SideC=2 SideC=5 SideC=
12、5EntranceEntrance15151616171719192121222223232626ExitExitTrueTrueFalseFalseEntranceEntrance15151616171719192121222223232626ExitExitFalseFalseEntranceEntrance1515161617171919ExitExitFalseFalse2626212122222323TrueTrueActual OutputActual Output Actual Output Actual OutputArea=1.73205Area=1.73205 not eq
13、uilateral triangle not equilateral triangle白盒測試技術(shù)白盒測試白盒測試8vv 語句覆蓋語句覆蓋vv 判定覆蓋判定覆蓋vv 條件覆蓋條件覆蓋vv 判定條件覆蓋判定條件覆蓋vv 條件組合覆蓋條件組合覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。它屬白盒測試范疇。的技術(shù)。它屬白盒測試范疇。4.1 邏輯覆蓋邏輯覆蓋9(A1)and(B=0)(A=2)or(X1)X=X/AX=X+1T TT TF FF Fabdce 四條路徑101、語句覆蓋、語句覆蓋n n使程序中每個語句至少執(zhí)行一次。使程序中
14、每個語句至少執(zhí)行一次。使程序中每個語句至少執(zhí)行一次。使程序中每個語句至少執(zhí)行一次。n n選擇足夠的測試用例選擇足夠的測試用例選擇足夠的測試用例選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次使得程序中每個語句至少都能被執(zhí)行一次使得程序中每個語句至少都能被執(zhí)行一次使得程序中每個語句至少都能被執(zhí)行一次.開始開始(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce只需設(shè)計一個測試用例只需設(shè)計一個測試用例:輸入數(shù)據(jù):輸入數(shù)據(jù):A=2,B=0,X=4 即達到了語句覆蓋。即達到了語句覆蓋。語句覆蓋是語句覆蓋是最弱最弱的的邏輯覆蓋邏輯覆蓋(如:(如:AND A
15、ND 寫成寫成 OROR,X1寫成寫成X1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce可設(shè)計兩組測試用例可設(shè)計兩組測試用例:A=3,B=0,X=3可覆蓋可覆蓋c、d分支分支A=2,B=1,X=1可覆蓋可覆蓋b、e分支分支兩組測試用例可覆蓋所兩組測試用例可覆蓋所有判定的真假分支有判定的真假分支判定覆蓋仍是判定覆蓋仍是弱弱的邏輯的邏輯覆蓋,只覆蓋了全部路覆蓋,只覆蓋了全部路徑的一半。徑的一半。123 3、條件覆蓋、條件覆蓋、條件覆蓋、條件覆蓋n n使每個判定的每個條件的可能取值至少執(zhí)行一次。使每個判定的每個條件的可能取值至少執(zhí)行一次。使每個判定的每個條件的
16、可能取值至少執(zhí)行一次。使每個判定的每個條件的可能取值至少執(zhí)行一次。n n執(zhí)行足夠的測試用例執(zhí)行足夠的測試用例執(zhí)行足夠的測試用例執(zhí)行足夠的測試用例,使得判定中的每個條件獲得各種可能的結(jié)果使得判定中的每個條件獲得各種可能的結(jié)果使得判定中的每個條件獲得各種可能的結(jié)果使得判定中的每個條件獲得各種可能的結(jié)果.開始開始(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce滿足條件滿足條件:T1,T1,T2,T2 T3,T3 T4,T4第一判定表達式第一判定表達式:設(shè)條件設(shè)條件 A1 A1 取真取真 記為記為T1T1 假假 T1T1 條件條件 B=0 B=0 取真取真
17、記為記為T2T2 假假 T2T2第二判定表達式第二判定表達式:設(shè)條件設(shè)條件 A=2 A=2 取真取真 記為記為T3T3 假假 T3T3 條件條件 X1 X1 取真取真 記為記為T4T4 假假 T4T413測試用例測試用例通過通過滿足的滿足的覆蓋覆蓋ABX路徑路徑條件條件分支分支103abeT1,T2,T3,T4b,e211abeT1,T2,T3,T4b,e兩個測試用例覆蓋了四個條件八種可能取值。兩個測試用例覆蓋了四個條件八種可能取值。未覆蓋未覆蓋c、d分支,不滿足判定覆蓋的要求分支,不滿足判定覆蓋的要求.條件覆蓋不一定包含判定覆蓋條件覆蓋不一定包含判定覆蓋 判定覆蓋也不一定包含條件覆蓋判定覆蓋
18、也不一定包含條件覆蓋144、判定判定/條件覆蓋條件覆蓋選取足夠多的選取足夠多的測試用例,使判斷測試用例,使判斷中的每個條件的所中的每個條件的所有可能取值至少執(zhí)有可能取值至少執(zhí)行一次,同時每個行一次,同時每個判斷本身的所有可判斷本身的所有可能判斷結(jié)果至少執(zhí)能判斷結(jié)果至少執(zhí)行一次行一次.開始開始(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce滿足條件滿足條件:T1,T1,T2,T2 T3,T3 T4,T415測試用例測試用例通過通過滿足的條件滿足的條件覆蓋覆蓋ABX路徑路徑分支分支204aceT1,T2,T3,T4c,e111abdT1,T2,T3,T4
19、b,d能同時滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)的取值能同時滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)的取值165、條件組合覆蓋、條件組合覆蓋所有可能的條件取值組合至少執(zhí)行一次所有可能的條件取值組合至少執(zhí)行一次A1,B=0A1,B0A 1,B=0A 1,B0A=2,X1A=2,X 1A2,X1A2,X 1測試用例測試用例通過通過滿足的滿足的覆蓋覆蓋ABX路徑路徑條件條件分支分支204aceT1,T2,T3,T4c,e211abeT1,T2,T3,T4b,e102abdT1,T2,T3,T4b,d111abdT1,T2,T3,T4b,d176、修正條件判定覆蓋、修正條件判定覆蓋每一個程序模塊的入口、出口都至少被調(diào)每一個程
20、序模塊的入口、出口都至少被調(diào)用一次;每個條件對于判定的結(jié)果值是獨立用一次;每個條件對于判定的結(jié)果值是獨立的。的。借助于表達式語法分析樹進行測試用例的借助于表達式語法分析樹進行測試用例的分析和設(shè)計:分析和設(shè)計:中間內(nèi)部結(jié)點:二元中間內(nèi)部結(jié)點:二元/一元操作符一元操作符葉子結(jié)點:變量葉子結(jié)點:變量/常量常量Eg.A BC(借助于表達式語法分析樹進行分析)(借助于表達式語法分析樹進行分析)18修正條件判定覆蓋測試數(shù)據(jù)設(shè)計方法及案例修正條件判定覆蓋測試數(shù)據(jù)設(shè)計方法及案例n對于一個給定的表達式語法分析樹,遍歷完此樹即可達到對于一個給定的表達式語法分析樹,遍歷完此樹即可達到修正判定覆蓋。修正判定覆蓋。n步
21、驟:步驟:n首先選擇一個條件(即子句,作為待考察因素首先選擇一個條件(即子句,作為待考察因素/測試子句),然后測試子句),然后從此子句的葉子結(jié)點往上一直走到該語法樹的根節(jié)點,再從根節(jié)從此子句的葉子結(jié)點往上一直走到該語法樹的根節(jié)點,再從根節(jié)點到其他的每個子句(葉子節(jié)點)。點到其他的每個子句(葉子節(jié)點)。n在遍歷樹的過程中,若給定子句的父節(jié)點是在遍歷樹的過程中,若給定子句的父節(jié)點是or,則其兄弟結(jié)點的,則其兄弟結(jié)點的值必須是值必須是false;是;是and,則必須是,則必須是true;是;是not,則其父節(jié)點的值,則其父節(jié)點的值是是not結(jié)點上值的反值。結(jié)點上值的反值。n如此重復(fù)下去,直至遍歷完成
22、。如此重復(fù)下去,直至遍歷完成。nEg.A BCn若若B作為測試子句,則作為測試子句,則A應(yīng)為應(yīng)為false,C應(yīng)為應(yīng)為truen同理,若同理,若A作為測試子句,則作為測試子句,則B應(yīng)為應(yīng)為false,C為為truen若若C作為測試子句,則作為測試子句,則A、B的取值保證的取值保證A B為真即可為真即可19發(fā)現(xiàn)錯誤發(fā)現(xiàn)錯誤的能力的能力標(biāo)標(biāo) 準(zhǔn)準(zhǔn)含含 義義 1 1(弱弱)語句覆蓋語句覆蓋每條每條語語句句至少執(zhí)行一次至少執(zhí)行一次 2 2判定覆蓋判定覆蓋每一判定的每個每一判定的每個分支分支至少執(zhí)行一次至少執(zhí)行一次 3 3條件覆蓋條件覆蓋每一判定中的每個每一判定中的每個條件條件,分別按,分別按“真真”、
23、“假假”至少各執(zhí)行一次至少各執(zhí)行一次4 4 判定判定/條件覆蓋條件覆蓋 同時滿足同時滿足判定覆蓋判定覆蓋和和條件覆蓋條件覆蓋的要求的要求5 5(強強)條件組合覆蓋條件組合覆蓋求出判定中求出判定中所有條件的各種可能組合所有條件的各種可能組合值,每一可能的條件組合至少執(zhí)行一值,每一可能的條件組合至少執(zhí)行一次次 邏輯覆蓋測試的邏輯覆蓋測試的5 5種標(biāo)準(zhǔn)種標(biāo)準(zhǔn) 204.2 路徑測試路徑測試n n路徑測試就是設(shè)計足夠的測試用例,路徑測試就是設(shè)計足夠的測試用例,路徑測試就是設(shè)計足夠的測試用例,路徑測試就是設(shè)計足夠的測試用例,覆蓋程序覆蓋程序覆蓋程序覆蓋程序中所有可能的路徑中所有可能的路徑中所有可能的路徑中
24、所有可能的路徑。測測測測 試試試試 用用用用 例例例例 通過路徑通過路徑通過路徑通過路徑 覆蓋條件覆蓋條件覆蓋條件覆蓋條件【(2,0,4),(2,0,3)(2,0,4),(2,0,3)】ace ace 【(1,1,1),(1,1,1)(1,1,1),(1,1,1)】abdabd【(1,1,2),(1,1,3)(1,1,2),(1,1,3)】abe abe 【(3,0,3),(3,0,1)(3,0,3),(3,0,1)】acdacd21案例:案例:P99條條 件件 測測 試試 路路 徑徑 選選 擇擇n n當(dāng)程序中判定多于一個時,形成的當(dāng)程序中判定多于一個時,形成的分支結(jié)構(gòu)可以分為兩類:分支結(jié)構(gòu)可
25、以分為兩類:嵌套型分嵌套型分支結(jié)構(gòu)支結(jié)構(gòu)和和連鎖型分支結(jié)構(gòu)連鎖型分支結(jié)構(gòu)。n n對于連鎖型分支結(jié)構(gòu),對于連鎖型分支結(jié)構(gòu),若有若有n個判定個判定語句,需要有語句,需要有2n個測試用例,覆蓋個測試用例,覆蓋它的它的2n條路徑。條路徑。n n對于嵌套型分支結(jié)構(gòu),若有對于嵌套型分支結(jié)構(gòu),若有n個判定個判定語句,需要語句,需要n+1個測試用例;個測試用例;22循環(huán)測試路徑選擇循環(huán)測試路徑選擇n n循環(huán)分為循環(huán)分為4種不同類型:種不同類型:簡單循環(huán)簡單循環(huán)、連連鎖循環(huán)鎖循環(huán)、嵌套循環(huán)嵌套循環(huán)和和非結(jié)構(gòu)循環(huán)非結(jié)構(gòu)循環(huán)。(1)簡單循環(huán)簡單循環(huán) 零次循環(huán)零次循環(huán):從循環(huán)入口到出口:從循環(huán)入口到出口 一次循環(huán)一次
26、循環(huán):檢查循環(huán)初始值:檢查循環(huán)初始值 二次循環(huán)二次循環(huán):檢查:檢查2次循環(huán)次循環(huán) m次循環(huán):次循環(huán):檢查多次循環(huán)檢查多次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。少一次的循環(huán)。23例:求數(shù)組中的最小值例:求數(shù)組中的最小值k=i;for(j=i+1;j=n;j+)if(Aj Ak)k=j;24k=i;j=i+1;j=n?AjAk?j+fdcabek=jYN測試用例選擇測試用例選擇26 對最內(nèi)層循環(huán)做簡單循環(huán)的全部測試。對最內(nèi)層循環(huán)做簡單循環(huán)的全部測試。對最內(nèi)層循環(huán)做簡單循環(huán)的全部測試。對最內(nèi)層循環(huán)做簡單循環(huán)的全部測試。所有其它層的循環(huán)變量置為最小值;所有
27、其它層的循環(huán)變量置為最小值;所有其它層的循環(huán)變量置為最小值;所有其它層的循環(huán)變量置為最小值;逐步外推,對其外面一層循環(huán)進行測試。逐步外推,對其外面一層循環(huán)進行測試。逐步外推,對其外面一層循環(huán)進行測試。逐步外推,對其外面一層循環(huán)進行測試。測試時保持所有外層循環(huán)的循環(huán)變量取最小值,測試時保持所有外層循環(huán)的循環(huán)變量取最小值,測試時保持所有外層循環(huán)的循環(huán)變量取最小值,測試時保持所有外層循環(huán)的循環(huán)變量取最小值,所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取“典型典型典型典型”值;值;值;值;反復(fù)進行,直到所有各層循環(huán)測試完
28、畢。反復(fù)進行,直到所有各層循環(huán)測試完畢。反復(fù)進行,直到所有各層循環(huán)測試完畢。反復(fù)進行,直到所有各層循環(huán)測試完畢。對全部各層循環(huán)同時取最小循環(huán)次數(shù),對全部各層循環(huán)同時取最小循環(huán)次數(shù),對全部各層循環(huán)同時取最小循環(huán)次數(shù),對全部各層循環(huán)同時取最小循環(huán)次數(shù),或者同時取最大循環(huán)次數(shù)或者同時取最大循環(huán)次數(shù)或者同時取最大循環(huán)次數(shù)或者同時取最大循環(huán)次數(shù)(2)嵌套循環(huán)嵌套循環(huán)2728(3)連鎖循環(huán)連鎖循環(huán)如果各個循環(huán)如果各個循環(huán)互相獨立互相獨立,則可以用與簡單,則可以用與簡單循環(huán)相同的方法進行測試。但如果幾個循循環(huán)相同的方法進行測試。但如果幾個循環(huán)不環(huán)不是互相獨立是互相獨立的,則需要使用測試嵌套的,則需要使用測試
29、嵌套循環(huán)的辦法來處理。循環(huán)的辦法來處理。(4)非結(jié)構(gòu)循環(huán)非結(jié)構(gòu)循環(huán)這一類循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計方法這一類循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計方法重新設(shè)計測試用例。重新設(shè)計測試用例。29基本路徑測試基本路徑測試n n基本路徑測試方法把覆蓋的路徑數(shù)基本路徑測試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),壓縮到一定限度內(nèi),程序中的循環(huán)程序中的循環(huán)體最多只執(zhí)行一次體最多只執(zhí)行一次。n n簡化循環(huán)路徑簡化循環(huán)路徑n n循環(huán)使路徑數(shù)量急劇增長循環(huán)使路徑數(shù)量急劇增長n n簡化簡化n n無論循環(huán)的形式和實際執(zhí)行循環(huán)體的次數(shù)多少,只無論循環(huán)的形式和實際執(zhí)行循環(huán)體的次數(shù)多少,只考慮循環(huán)考慮循環(huán)0 0次和次和1 1次次n n兩種
30、情況兩種情況n n進入循環(huán)體一次進入循環(huán)體一次n n跳出循環(huán)體跳出循環(huán)體30基本路徑測試思路基本路徑測試思路n n在程序控制流圖的基礎(chǔ)上,在程序控制流圖的基礎(chǔ)上,分析控制分析控制構(gòu)造的環(huán)路復(fù)雜性構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行導(dǎo)出基本可執(zhí)行路徑集合路徑集合,設(shè)計測試用例的設(shè)計測試用例的方法。方法。n n設(shè)計出的測試用例要保證在測試中,設(shè)計出的測試用例要保證在測試中,程序的每一個可執(zhí)行語句至少要執(zhí)行程序的每一個可執(zhí)行語句至少要執(zhí)行一次。一次。311.程序的控制流圖程序的控制流圖n n符號符號為控制流圖的一個結(jié)點,表示一為控制流圖的一個結(jié)點,表示一個或多個無分支的個或多個無分支的PDL語句或源程序
31、語語句或源程序語句。箭頭為邊,表示控制流的方向。句。箭頭為邊,表示控制流的方向。32n n在選擇或多分支結(jié)構(gòu)中,分支的匯聚處在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個匯聚結(jié)點。應(yīng)有一個匯聚結(jié)點。n n邊和結(jié)點圈定的區(qū)域叫做區(qū)域邊和結(jié)點圈定的區(qū)域叫做區(qū)域,當(dāng)對區(qū),當(dāng)對區(qū)域計數(shù)時,圖形外的區(qū)域也應(yīng)記為一個域計數(shù)時,圖形外的區(qū)域也應(yīng)記為一個區(qū)域。區(qū)域。n n如果判斷中的條件表達式是由一個或多如果判斷中的條件表達式是由一個或多個邏輯運算符個邏輯運算符(OR,AND,.)連接的復(fù)連接的復(fù)合條件表達式,則需改為合條件表達式,則需改為 一系列一系列只有單只有單個條件的嵌套的判斷個條件的嵌套的判斷。33343
32、52.程序環(huán)路復(fù)雜性程序環(huán)路復(fù)雜性n n程序的環(huán)路復(fù)雜性給出了程序的環(huán)路復(fù)雜性給出了程序的環(huán)路復(fù)雜性給出了程序的環(huán)路復(fù)雜性給出了程序基本路徑集中程序基本路徑集中程序基本路徑集中程序基本路徑集中的獨立路徑條數(shù)的獨立路徑條數(shù)的獨立路徑條數(shù)的獨立路徑條數(shù),這是確保程序中每個可執(zhí),這是確保程序中每個可執(zhí),這是確保程序中每個可執(zhí),這是確保程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目行語句至少執(zhí)行一次所必需的測試用例數(shù)目行語句至少執(zhí)行一次所必需的測試用例數(shù)目行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。的上界。的上界。的上界。n n環(huán)路復(fù)雜度環(huán)路復(fù)雜度環(huán)路復(fù)雜度環(huán)路復(fù)雜度V(G)=P+1V(G)=
33、P+1(P P:判定節(jié)點數(shù))判定節(jié)點數(shù))n n從控制流圖來看,一條獨立路徑是至少包含從控制流圖來看,一條獨立路徑是至少包含從控制流圖來看,一條獨立路徑是至少包含從控制流圖來看,一條獨立路徑是至少包含有一條在其它獨立路徑中從未有過的邊的路有一條在其它獨立路徑中從未有過的邊的路有一條在其它獨立路徑中從未有過的邊的路有一條在其它獨立路徑中從未有過的邊的路徑。徑。徑。徑。36n n例如,在圖示的控制流圖中,一組獨立例如,在圖示的控制流圖中,一組獨立的路徑是的路徑是path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-9-10-1-11path4:1-2-3-
34、6-7-9-10-1-11n n路徑路徑 path1,path2,path3,path4組成組成了控制流圖的一個基本路徑集。了控制流圖的一個基本路徑集。373.基本路徑測試法的操作步驟基本路徑測試法的操作步驟n n導(dǎo)出控制流圖n n計算環(huán)路復(fù)雜度n n確定基本路徑集n n生成測試用例38結(jié)構(gòu)測試案例分析結(jié)構(gòu)測試案例分析n n求數(shù)組中的最小值求數(shù)組中的最小值 k=i;k=i;for(j=i+1;j=n;j+)for(j=i+1;j=n;j+)if(Aj Ak)if(Aj Ak)k=j;k=j;k=i;j=i+1j=n?Aj 0A0),),(1 1)(B0B0),),(2 2)(C0C0),),(
35、3 3)(A+BCA+BC),),(4 4)(B+CAB+CA),),(5 5)(A+CBA+CB),),(6 6)(A0A0),),(7 7)(B0B0),),(8 8)(C0C0),),(9 9)(A+BCA+BC),),(1010)(B+CAB+CA),),(1111)(A+CBA+CB),),(1212)是否等腰三角形是否等腰三角形(A=BA=B),),(1313)(B=CB=C),),(1414)(C=AC=A),),(1515)(ABAB)andand(BCBC)andand(CACA)(1616)是否等邊三角形是否等邊三角形(A=BA=B)andand(B=CB=C)andand
36、(C=AC=A)(1717)(ABAB),),(1818)(BCBC),),(1919)(CACA),),(2020)83舉例序號序號【A,B,C】覆蓋等價覆蓋等價類輸出出1【3 3,4 4,5 5】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6)一般三角形一般三角形2【0 0,1 1,2 2】(7 7)不能構(gòu)成三角形不能構(gòu)成三角形3【1 1,0 0,2 2】(8 8)4【1 1,2 2,0 0】(9 9)5【1 1,2 2,3 3】(1010)6【1 1,3 3,2 2】(1111)7【3 3,1 1,2 2】(1212)8【3 3,3 3
37、,4 4】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1313)等腰三角形等腰三角形9【3 3,4 4,4 4】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1414)10【3 3,4 4,3 3】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1515)11【3 3,4 4,5 5】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1616)非
38、等腰三角形非等腰三角形12【3 3,3 3,3 3】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1717)等等邊三角形三角形13【3 3,4 4,4 4】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1414),(),(1818)非等非等邊三角形三角形14【3 3,4 4,3 3】(1 1),(),(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1515),(),(1919)15【3 3,3 3,4 4】(1 1),(),
39、(2 2),(),(3 3),(),(4 4),(),(5 5),(),(6 6),(),(1313),(),(2020)845.1.2 邊界值分析邊界值分析n n邊界值分析也是一種黑盒測試邊界值分析也是一種黑盒測試邊界值分析也是一種黑盒測試邊界值分析也是一種黑盒測試方法,是對等價類劃分方法的方法,是對等價類劃分方法的方法,是對等價類劃分方法的方法,是對等價類劃分方法的補充。補充。補充。補充。n n人們從長期的測試工作經(jīng)驗得人們從長期的測試工作經(jīng)驗得人們從長期的測試工作經(jīng)驗得人們從長期的測試工作經(jīng)驗得知,知,知,知,大量的錯誤是發(fā)生在輸入大量的錯誤是發(fā)生在輸入大量的錯誤是發(fā)生在輸入大量的錯誤是
40、發(fā)生在輸入或輸出范圍的邊界上或輸出范圍的邊界上或輸出范圍的邊界上或輸出范圍的邊界上,而不是,而不是,而不是,而不是在輸入范圍的內(nèi)部。在輸入范圍的內(nèi)部。在輸入范圍的內(nèi)部。在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計因此針對各種邊界情況設(shè)計因此針對各種邊界情況設(shè)計因此針對各種邊界情況設(shè)計測試用例,測試用例,測試用例,測試用例,可以查出更多的錯可以查出更多的錯可以查出更多的錯可以查出更多的錯誤誤誤誤。85n n比如,在做三角形計算時,要輸入三角比如,在做三角形計算時,要輸入三角形的三個邊長:形的三個邊長:A、B和和C。我們應(yīng)注意我們應(yīng)注意到這三個數(shù)值應(yīng)當(dāng)滿足到這三個數(shù)值應(yīng)當(dāng)滿足 A0、B0、C0、AB
41、C、ACB、BCA,才能才能構(gòu)成三角形。但如果把六個不等式中的構(gòu)成三角形。但如果把六個不等式中的任何一個大于號任何一個大于號“”錯寫成大于等于錯寫成大于等于號號“”,那就不能構(gòu)成三角形。問題,那就不能構(gòu)成三角形。問題恰出現(xiàn)在容易被疏忽的邊界附近。恰出現(xiàn)在容易被疏忽的邊界附近。86n n邊界值分析不僅考慮輸入條件,還要考慮輸邊界值分析不僅考慮輸入條件,還要考慮輸邊界值分析不僅考慮輸入條件,還要考慮輸邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況出空間產(chǎn)生的測試情況出空間產(chǎn)生的測試情況出空間產(chǎn)生的測試情況n n這里所說的邊界是指,相當(dāng)于這里所說的邊界是指,相當(dāng)于這里所說的邊界是指,相當(dāng)
42、于這里所說的邊界是指,相當(dāng)于輸入等價類輸入等價類輸入等價類輸入等價類和和和和輸出等價類輸出等價類輸出等價類輸出等價類而言,稍高于其邊界值及稍低于而言,稍高于其邊界值及稍低于而言,稍高于其邊界值及稍低于而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。其邊界值的一些特定情況。其邊界值的一些特定情況。其邊界值的一些特定情況。n n使用邊界值分析方法設(shè)計測試用例,首先應(yīng)使用邊界值分析方法設(shè)計測試用例,首先應(yīng)使用邊界值分析方法設(shè)計測試用例,首先應(yīng)使用邊界值分析方法設(shè)計測試用例,首先應(yīng)確定邊界情況。確定邊界情況。確定邊界情況。確定邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大應(yīng)當(dāng)選取正好等于,剛剛大應(yīng)當(dāng)選取正好等
43、于,剛剛大應(yīng)當(dāng)選取正好等于,剛剛大于,或剛剛小于邊界的值做為測試數(shù)據(jù)于,或剛剛小于邊界的值做為測試數(shù)據(jù)于,或剛剛小于邊界的值做為測試數(shù)據(jù)于,或剛剛小于邊界的值做為測試數(shù)據(jù),而,而,而,而不是選取等價類中的典型值或任意值做為測不是選取等價類中的典型值或任意值做為測不是選取等價類中的典型值或任意值做為測不是選取等價類中的典型值或任意值做為測試數(shù)據(jù)。試數(shù)據(jù)。試數(shù)據(jù)。試數(shù)據(jù)。87 邊界條件類型邊界條件類型 如果軟件測試問題如果軟件測試問題包含確定的邊界包含確定的邊界,那那么數(shù)據(jù)類型可能是么數(shù)據(jù)類型可能是:數(shù)值數(shù)值字符字符位置位置數(shù)量數(shù)量速度速度地址地址尺寸尺寸還要考慮數(shù)據(jù)類型的特還要考慮數(shù)據(jù)類型的特征
44、征:第一個第一個/最后一個最后一個最小值最小值/最大值最大值開始開始/完成完成空空/滿滿最慢最慢/最快最快相鄰相鄰/最遠最遠超過超過/在內(nèi)在內(nèi)88輸入輸入條件條件報表日報表日期的類期的類型及長型及長度度1 1個數(shù)字字符個數(shù)字字符5 5個數(shù)字字符個數(shù)字字符7 7個數(shù)字字符個數(shù)字字符有有1 1個非數(shù)字字符個非數(shù)字字符全部是非數(shù)字字符全部是非數(shù)字字符6 6個數(shù)字字符個數(shù)字字符顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯輸入有效輸入有效日期日期范圍范圍月份月份范圍范圍“報表日期(報表日期(6 6位數(shù)字字符)位數(shù)字字符)”邊界值分析法測試用例邊界值分析法測試用例測試用
45、例說明測試用例說明測試數(shù)據(jù)測試數(shù)據(jù) 期望結(jié)果期望結(jié)果選取理由選取理由5 52003520035200300520030052005.52005.5MAY-MAY-200305200305月份為月份為1 1月月月份為月份為1212月月月份月份11212200301200301200312200312200300200300200313200313200301200301200812200812200300200300200813200813輸入有效輸入有效輸入有效輸入有效顯示出錯顯示出錯顯示出錯顯示出錯輸入有效輸入有效輸入有效輸入有效顯示出錯顯示出錯顯示出錯顯示出錯在有效范圍在有效范圍邊界上選取
46、邊界上選取數(shù)據(jù)數(shù)據(jù)僅有僅有1 1個合法字符個合法字符比有效長度少比有效長度少1 1比有效長度多比有效長度多1 1只有只有1 1個非法字符個非法字符6 6個非法字符個非法字符類型及長度均有效類型及長度均有效最小日期最小日期最大日期最大日期剛好小于最小日期剛好小于最小日期剛好大于最大日期剛好大于最大日期最小月份最小月份最大月份最大月份剛好小于最小月份剛好小于最小月份剛好大于最大月份剛好大于最大月份89有效等價類和用來測試有效等價類和用來測試getNumDaysInMonth()getNumDaysInMonth()方法所選的有效輸入方法所選的有效輸入 有效有效等價類一個月有一個月有3131天天,非
47、閏年非閏年190119017(7(七月七月)一個月有一個月有3131天天,閏年閏年190419047(7(七月七月)一個月有一個月有3030天天,非閏年非閏年190119016(6(六月六月)一個月有一個月有3030天天,閏年閏年190419046(6(六月六月)一個月為一個月為2828或或2929天天,非閏年非閏年190119012(2(二月二月)月份輸入值年份輸入值一個月為一個月為2828或或2929天天,閏年閏年2(2(二月二月)1904190490用來測試用來測試getNumDaysInMonth()getNumDaysInMonth()方法的附加邊界值方法的附加邊界值等價類可以被可以
48、被400400整除的閏年整除的閏年200020002(2(二月二月)可以被可以被100100整除的非閏年整除的非閏年190019002(2(二月二月)非正數(shù)無效月份非正數(shù)無效月份129112910 0正數(shù)無效月份正數(shù)無效月份131513151313月份輸入值年份輸入值915.1.3 錯誤推測法錯誤推測法n n人們也可以靠經(jīng)驗和直覺推測程序中可人們也可以靠經(jīng)驗和直覺推測程序中可能存在的各種錯誤,從而有針對性地編能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子。這就是錯誤推寫檢查這些錯誤的例子。這就是錯誤推測法。測法。n n錯誤推測法的基本想法是:錯誤推測法的基本想法是:列舉出程序列舉出程序
49、中所有可能有的錯誤和容易發(fā)生錯誤的中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試用例特殊情況,根據(jù)它們選擇測試用例。92錯誤推測法錯誤推測法根據(jù)經(jīng)驗、直覺和預(yù)感來進行測試根據(jù)經(jīng)驗、直覺和預(yù)感來進行測試根據(jù)經(jīng)驗、直覺和預(yù)感來進行測試根據(jù)經(jīng)驗、直覺和預(yù)感來進行測試?yán)豪阂欢ㄒ紤]建立處理下列等價類一定要考慮建立處理下列等價類:缺省值缺省值缺省值缺省值空白空白空白空白空值空值空值空值零值零值零值零值無輸入條件無輸入條件無輸入條件無輸入條件重復(fù)信息(重復(fù)信息(重復(fù)信息(重復(fù)信息(eg.eg.eg.eg.用戶名已存在)用戶名已存在)用戶名已存在)用戶名已存在)在已經(jīng)找到軟件缺陷的地方再找
50、找在已經(jīng)找到軟件缺陷的地方再找找 93n n現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。這種在軟件設(shè)計方面的思想也可引入到軟件測試中,可以比較生動地這種在軟件設(shè)計方
51、面的思想也可引入到軟件測試中,可以比較生動地這種在軟件設(shè)計方面的思想也可引入到軟件測試中,可以比較生動地這種在軟件設(shè)計方面的思想也可引入到軟件測試中,可以比較生動地描繪出事件觸發(fā)時的情景,有利于測試設(shè)計者設(shè)計測試用例,同時使描繪出事件觸發(fā)時的情景,有利于測試設(shè)計者設(shè)計測試用例,同時使描繪出事件觸發(fā)時的情景,有利于測試設(shè)計者設(shè)計測試用例,同時使描繪出事件觸發(fā)時的情景,有利于測試設(shè)計者設(shè)計測試用例,同時使測試用例更容易理解和執(zhí)行。測試用例更容易理解和執(zhí)行。測試用例更容易理解和執(zhí)行。測試用例更容易理解和執(zhí)行。n n提出這種測試思想的是提出這種測試思想的是提出這種測試思想的是提出這種測試思想的是Rat
52、ional Rational Rational Rational 公司,并在公司,并在公司,并在公司,并在RUP2000 RUP2000 RUP2000 RUP2000 中文版當(dāng)中有中文版當(dāng)中有中文版當(dāng)中有中文版當(dāng)中有其詳盡的解釋和應(yīng)用。其詳盡的解釋和應(yīng)用。其詳盡的解釋和應(yīng)用。其詳盡的解釋和應(yīng)用。n n用例場景用來描述流經(jīng)用例的路徑,從用例開始到結(jié)束遍歷這條路徑用例場景用來描述流經(jīng)用例的路徑,從用例開始到結(jié)束遍歷這條路徑用例場景用來描述流經(jīng)用例的路徑,從用例開始到結(jié)束遍歷這條路徑用例場景用來描述流經(jīng)用例的路徑,從用例開始到結(jié)束遍歷這條路徑上所有基本流和備選流。上所有基本流和備選流。上所有基本流
53、和備選流。上所有基本流和備選流。5.1.4 場景法場景法94場景法:基本流和備選流 n n右圖中經(jīng)過用例的每條路徑都用基本右圖中經(jīng)過用例的每條路徑都用基本右圖中經(jīng)過用例的每條路徑都用基本右圖中經(jīng)過用例的每條路徑都用基本流和備選流來表示,直黑線表示基本流和備選流來表示,直黑線表示基本流和備選流來表示,直黑線表示基本流和備選流來表示,直黑線表示基本流,是經(jīng)過用例的最簡單的路徑。備流,是經(jīng)過用例的最簡單的路徑。備流,是經(jīng)過用例的最簡單的路徑。備流,是經(jīng)過用例的最簡單的路徑。備選流用不同的彩色表示,一個備選流選流用不同的彩色表示,一個備選流選流用不同的彩色表示,一個備選流選流用不同的彩色表示,一個備選
54、流可能從基本流開始,在某個特定條件可能從基本流開始,在某個特定條件可能從基本流開始,在某個特定條件可能從基本流開始,在某個特定條件下執(zhí)行,然后重新加入基本流中(如下執(zhí)行,然后重新加入基本流中(如下執(zhí)行,然后重新加入基本流中(如下執(zhí)行,然后重新加入基本流中(如備選流備選流備選流備選流 1 1 1 1 和和和和 3 3 3 3);也可能起源于另一);也可能起源于另一);也可能起源于另一);也可能起源于另一個備選流(如備選流個備選流(如備選流個備選流(如備選流個備選流(如備選流 2 2 2 2),或者終止),或者終止),或者終止),或者終止用例而不再重新加入到某個流(如備用例而不再重新加入到某個流(
55、如備用例而不再重新加入到某個流(如備用例而不再重新加入到某個流(如備選流選流選流選流 2 2 2 2 和和和和 4 4 4 4)。)。)。)。95場景法:基本流和備選流n n按照上圖中每個經(jīng)過用例的路徑,可以確定以下不同的用例場景:按照上圖中每個經(jīng)過用例的路徑,可以確定以下不同的用例場景:按照上圖中每個經(jīng)過用例的路徑,可以確定以下不同的用例場景:按照上圖中每個經(jīng)過用例的路徑,可以確定以下不同的用例場景:vv場景場景場景場景 1 1 1 1 基本流基本流基本流基本流vv場景場景場景場景 2 2 2 2 基本流基本流基本流基本流 備選流備選流備選流備選流 1 1 1 1vv場景場景場景場景 3 3
56、 3 3 基本流基本流基本流基本流 備選流備選流備選流備選流 1 1 1 1 備選流備選流備選流備選流 2 2 2 2vv場景場景場景場景 4 4 4 4 基本流基本流基本流基本流 備選流備選流備選流備選流 3 3 3 3vv場景場景場景場景 5 5 5 5 基本流基本流基本流基本流 備選流備選流備選流備選流 3 3 3 3 備選流備選流備選流備選流 1 1 1 1vv場景場景場景場景 6 6 6 6 基本流基本流基本流基本流 備選流備選流備選流備選流 3 3 3 3 備選流備選流備選流備選流 1 1 1 1 備選流備選流備選流備選流 2 2 2 2vv場景場景場景場景 7 7 7 7 基本流
57、基本流基本流基本流 備選流備選流備選流備選流 4 4 4 4vv場景場景場景場景 8 8 8 8 基本流基本流基本流基本流 備選流備選流備選流備選流 3 3 3 3 備選流備選流備選流備選流 4 4 4 4n n注:為方便起見,場景注:為方便起見,場景注:為方便起見,場景注:為方便起見,場景 5 5 5 5、6 6 6 6 和和和和 8 8 8 8 只考慮了備選流只考慮了備選流只考慮了備選流只考慮了備選流 3 3 3 3循環(huán)執(zhí)行一次的情況。循環(huán)執(zhí)行一次的情況。循環(huán)執(zhí)行一次的情況。循環(huán)執(zhí)行一次的情況。965.1.5 因果圖因果圖n n因果圖的適用范圍因果圖的適用范圍 如果在測試時必須考慮如果在測
58、試時必須考慮輸入條件的輸入條件的各種組合各種組合,可使用一種適合于描述對于,可使用一種適合于描述對于多種條件的組合、相應(yīng)產(chǎn)生多個動作的多種條件的組合、相應(yīng)產(chǎn)生多個動作的形式來設(shè)計測試用例,這就需要利用因形式來設(shè)計測試用例,這就需要利用因果圖。果圖。因果圖方法最終生成的就是判定表。因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合它適合于檢查程序輸入條件的各種組合情況。情況。97n n用因果圖生成測試用例的基本步驟用因果圖生成測試用例的基本步驟(1)分析軟件規(guī)格說明描述中分析軟件規(guī)格說明描述中分析軟件規(guī)格說明描述中分析軟件規(guī)格說明描述中 哪些是原因哪些是原因哪些是原因哪些是原因
59、(即輸入條件或輸入條件的等即輸入條件或輸入條件的等即輸入條件或輸入條件的等即輸入條件或輸入條件的等價類價類價類價類)及及及及哪些是結(jié)果哪些是結(jié)果哪些是結(jié)果哪些是結(jié)果 (即輸出條件即輸出條件即輸出條件即輸出條件)并給每個原因和結(jié)果賦予一個標(biāo)識符。并給每個原因和結(jié)果賦予一個標(biāo)識符。并給每個原因和結(jié)果賦予一個標(biāo)識符。并給每個原因和結(jié)果賦予一個標(biāo)識符。(2)分析軟件規(guī)格說明描述中的語義,找出原分析軟件規(guī)格說明描述中的語義,找出原分析軟件規(guī)格說明描述中的語義,找出原分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間,原因與原因之間對應(yīng)的是什因與結(jié)果之間,原因與原因之間對應(yīng)的是什因與結(jié)果之間,原因與原因之間
60、對應(yīng)的是什因與結(jié)果之間,原因與原因之間對應(yīng)的是什么么么么關(guān)系關(guān)系關(guān)系關(guān)系?根據(jù)這些關(guān)系,畫出因果圖。根據(jù)這些關(guān)系,畫出因果圖。根據(jù)這些關(guān)系,畫出因果圖。根據(jù)這些關(guān)系,畫出因果圖。98(3)(3)由于語法或環(huán)境限制,有些原因與原因之由于語法或環(huán)境限制,有些原因與原因之由于語法或環(huán)境限制,有些原因與原因之由于語法或環(huán)境限制,有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號為表明這些特殊情況,在因果圖上用一些記號為表明這些特殊情況,在
61、因果圖上用一些記號為表明這些特殊情況,在因果圖上用一些記號標(biāo)明約束或限制條件。標(biāo)明約束或限制條件。標(biāo)明約束或限制條件。標(biāo)明約束或限制條件。(4)(4)把因果圖轉(zhuǎn)換成判定表。把因果圖轉(zhuǎn)換成判定表。把因果圖轉(zhuǎn)換成判定表。把因果圖轉(zhuǎn)換成判定表。(5)(5)把判定表的每一列拿出來作為依據(jù),設(shè)計把判定表的每一列拿出來作為依據(jù),設(shè)計把判定表的每一列拿出來作為依據(jù),設(shè)計把判定表的每一列拿出來作為依據(jù),設(shè)計測試用例。測試用例。測試用例。測試用例。99因果圖設(shè)計方法 通常在因果圖中,用通常在因果圖中,用通常在因果圖中,用通常在因果圖中,用CiCiCiCi表示原因,用表示原因,用表示原因,用表示原因,用EiEiE
62、iEi表示結(jié)果,其基本符號如下表示結(jié)果,其基本符號如下表示結(jié)果,其基本符號如下表示結(jié)果,其基本符號如下圖所示。圖所示。圖所示。圖所示。CiCiCiCi和和和和EiEiEiEi均可取值均可取值均可取值均可取值“0 0 0 0”和和和和“1 1 1 1”,“0 0 0 0”表示某狀態(tài)不出現(xiàn),表示某狀態(tài)不出現(xiàn),表示某狀態(tài)不出現(xiàn),表示某狀態(tài)不出現(xiàn),“1 1 1 1”表示某狀態(tài)出現(xiàn)。表示某狀態(tài)出現(xiàn)。表示某狀態(tài)出現(xiàn)。表示某狀態(tài)出現(xiàn)。因果圖的基本符號如下:因果圖的基本符號如下:因果圖的基本符號如下:因果圖的基本符號如下:CiEi 恒等Ci=1,Ei=1;Ci=0,Ei=0;Ci(a)(b)Ei非Ci=1,E
63、i=0;Ci=0,Ei=1;100因果圖設(shè)計方法(d)與C1,C2,C3全=1,Ei=1;C1,C2,C3有一個以上=0,Ei=0;C1C2C3Ei(c)C1C2C3Ei或 C1,C2,C3有一個以上=1,Ei=1;C1,C2,C3全=0,Ei=0;101因果圖設(shè)計方法 為了表示原因與原因之間、結(jié)果與結(jié)果之間可能存在的約束條件,為了表示原因與原因之間、結(jié)果與結(jié)果之間可能存在的約束條件,為了表示原因與原因之間、結(jié)果與結(jié)果之間可能存在的約束條件,為了表示原因與原因之間、結(jié)果與結(jié)果之間可能存在的約束條件,在因果圖中可以附加一些表示約束條件的符號。在因果圖中可以附加一些表示約束條件的符號。在因果圖中可
64、以附加一些表示約束條件的符號。在因果圖中可以附加一些表示約束條件的符號。從輸入(原因)考慮有從輸入(原因)考慮有從輸入(原因)考慮有從輸入(原因)考慮有4 4 4 4種約束:如圖(種約束:如圖(種約束:如圖(種約束:如圖(a a a a)()()()(b b b b)()()()(c c c c)()()()(d d d d)從輸出(結(jié)果)考慮:還有從輸出(結(jié)果)考慮:還有從輸出(結(jié)果)考慮:還有從輸出(結(jié)果)考慮:還有1 1 1 1種約束,如圖(種約束,如圖(種約束,如圖(種約束,如圖(e e e e)(a)互斥:a和b同時只能有一個為1,但可以都為0abac(b)E 包含:a、b、c中至少
65、有一個為1Ib102因果圖設(shè)計方法(c)要求:若a=1,則要求b也要=1;其它不約束abab(e)R 強制(屏蔽):a=1,強制b=0;其它不約束M(d)abO唯一:a和b有且僅有一個為1103 n n例如,有一個處理單價為例如,有一個處理單價為例如,有一個處理單價為例如,有一個處理單價為5 5角錢的飲料的自動售角錢的飲料的自動售角錢的飲料的自動售角錢的飲料的自動售貨機軟件測試用例的設(shè)計。其規(guī)格說明如下:貨機軟件測試用例的設(shè)計。其規(guī)格說明如下:貨機軟件測試用例的設(shè)計。其規(guī)格說明如下:貨機軟件測試用例的設(shè)計。其規(guī)格說明如下:若投入若投入若投入若投入5 5角錢或角錢或角錢或角錢或1 1元錢的硬幣,
66、押下元錢的硬幣,押下元錢的硬幣,押下元錢的硬幣,押下橙汁橙汁橙汁橙汁或或或或啤啤啤啤酒酒酒酒的按鈕,則相應(yīng)的飲料就送出來。若售貨機沒有零的按鈕,則相應(yīng)的飲料就送出來。若售貨機沒有零的按鈕,則相應(yīng)的飲料就送出來。若售貨機沒有零的按鈕,則相應(yīng)的飲料就送出來。若售貨機沒有零錢找,則一個顯示錢找,則一個顯示錢找,則一個顯示錢找,則一個顯示零錢找完零錢找完零錢找完零錢找完的紅燈亮,這時在投入的紅燈亮,這時在投入的紅燈亮,這時在投入的紅燈亮,這時在投入1 1元硬幣并押下按鈕后,飲料不送出來而且元硬幣并押下按鈕后,飲料不送出來而且元硬幣并押下按鈕后,飲料不送出來而且元硬幣并押下按鈕后,飲料不送出來而且1 1元硬幣也退元硬幣也退元硬幣也退元硬幣也退出來;若有零錢找,則顯示出來;若有零錢找,則顯示出來;若有零錢找,則顯示出來;若有零錢找,則顯示零錢找完零錢找完零錢找完零錢找完的紅燈滅,在的紅燈滅,在的紅燈滅,在的紅燈滅,在送出飲料的同時退還送出飲料的同時退還送出飲料的同時退還送出飲料的同時退還5 5角硬幣。角硬幣。角硬幣。角硬幣?!?04(1)分析這一段說明,列出原因和結(jié)果分析這一段說明,列出原因和結(jié)果
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中語文名句默寫總結(jié)
- 八年級下冊語文必讀名著《經(jīng)典常談》重點知識填空100題含參考答案
- 初中語文滿分作文閃光句子
- 初中語文作文素材:54句意蘊深刻的電影臺詞
- 初中語文考試200個必考成語
- 初中語文考試易錯拼音300個
- 初中語文期末押題滿分作文8篇
- 八年級語文下冊 第六單元 《岳陽樓記》教案
- 初中語文文言文閱讀資料:《宋史?歐陽修傳》
- 初中語文文言文閱讀資料:《戴胄犯顏執(zhí)法》
- 初中語文常考的118個成語
- 初中語文【易丟分】7種題型??合集
- 初中語文作文素材:10個萬能作文套句
- 初中語文考試17種??嫉谋憩F(xiàn)手法
- 初中語文古詩文劃分節(jié)奏10種方法