《軟件測試技術04-動態(tài)測試-白盒測試》由會員分享,可在線閱讀,更多相關《軟件測試技術04-動態(tài)測試-白盒測試(26頁珍藏版)》請在裝配圖網上搜索。
1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,2016/3/9,#,/,易禹,2024/11/26,軟件測試技術,第,四,講,:動態(tài)測試,-,白盒測試,最基本的白盒測試 插樁法,2,printf,log,System.out.println,在被測程序中插入操作(探測器),實現探查和監(jiān)控的功能。,功能:檢查程序的走向、計數、中間變量、,基本概念,3,通過運行被測試程序,檢查運行結果,分析其性能。,組成部分;,構造測試用例;,運行程序;,分析結果。,動態(tài)測試分類,4,單元測試:對軟件的各個模塊進行測試;,集成測試:檢查各單元之間的接口是否正確,非漸增和漸增式
2、測試;,組裝測試:單元測試的擴展,若干個單元間數據傳輸測試;,確認測試:對組裝測試結果的檢驗,用戶參與或主導的測試過程;,系統(tǒng)測試:測試系統(tǒng)在真實條件下的運行情況(負載、安全、疲勞等等)。,驗收測試:購買者對軟件的測試。,驗收測試,系統(tǒng)測試,確認測試,單元,/,集成測試,手動測試,“,白盒,”,測試,5,與“黑盒”測試對應,在熟悉程序內部邏輯和結構設計的基礎上進行的測試。,測試內容:,對程序所有獨立執(zhí)行路徑進行一次測試;,對所有邏輯判定的兩種情形至少測試一次;,在循環(huán)的邊界和運行的邊界限內執(zhí)行循環(huán)體;,測試內部數據結構的有效性。,“,白盒,”,測試的目標,6,如果要測試下面的函數,需要構造哪些
3、測試用例?,范例程序:,行,1,public int func(int a,int b,int x),行,2,if(a1)&(b=0),行3,x=x/a;,行,4,if(a=2)|(x1),行,5,x=x+1;,行,6,return x;,行,7,范例程序的流程圖,7,邏輯覆蓋的原則,8,是指在熟悉程序內部的邏輯結構基礎上的測試方法,又可以細分為:,語句覆蓋,保證每一條語句都至少執(zhí)行一次;,路徑為,ACE,的測試用例(例如:,a,=2,b,=0,x,=3,);,邏輯覆蓋的原則,9,缺點:覆蓋不完整,,忽略了,IF,語句為假的情況;,沒有測試,IF,語句的每一個邏輯表達式。,“白盒”測試之判斷覆
4、蓋,保證每一個分支至少執(zhí)行一次;,如兩個測試用例(,ACD,和,ABE,),判斷覆蓋的缺點:覆蓋程度不高。,“,白盒,”,測試之條件覆蓋,10,每個條件組合獲得各種可能的結果;,“,白盒,”,測試之條件覆蓋,11,如果選用兩個測試用例來覆蓋:,a,=2,b,=0,x,=4,路徑:,ACE,;,a,=1,b,=1,x,=1,路徑:,ABD,;,判斷覆蓋,vs,.條件覆蓋,12,判斷覆蓋關心判定表達式的結果,而條件覆蓋關心每個表達式的取值,不關心整個判定表達式的最終值;,判斷覆蓋不能涵蓋條件覆蓋,反之亦然。,例如,下面的用例僅滿足條件覆蓋,不滿足判斷覆蓋:,a,=2,b,=0,x,=1,路徑:,A
5、CE,;,a,=1,b,=1,x,=2,路徑:,ABE,;,“,白盒,”,測試之其他覆蓋,13,判斷,/,條件覆蓋:,判斷中每個條件的所有取值至少執(zhí)行一次,同時每個判斷的所有結果至少執(zhí)行一次。例如:路徑:,ACE,和,ABD,就滿足判斷,/,條件覆蓋。,條件組合覆蓋:,各種條件組合至少出現一次,如判斷,(,a,1)&(,b,=0),共有,4,種組合。,路徑覆蓋:,所有可能的路徑至少執(zhí)行一次,范例程序共,4,條路徑。,“,白盒,”,測試練習,14,請說出下面的程序最少需要幾個測試用例以滿足判斷覆蓋和條件組合覆蓋?,行,1,public int func(int a,int b,int c),行,
6、2,if(ab)&(ac),行,3,a=b+c;,行,4,if(bc),行,5,b=a-c;,行,6,return c;,行,7,參考答案,15,判斷覆蓋,2,條件組合覆蓋,6,動態(tài)測試之路徑測試,16,是根據程序邏輯所產生的路徑設計測試用例的方法,常用的有:,DD,(,Decision-To-Decision,)路徑測試:基于路徑覆蓋的思想,考慮各分支的覆蓋情況,壓縮串行部分;,DD,路徑測試壓縮圖:用來反映程序的分支情況,方便進行測試用例設計;,DD,路徑據稱可以發(fā)現約,85%,的缺陷!,DD,路徑測試壓縮圖實例,17,其中:數字表示行號,字母表示壓縮合并的節(jié)點。,基本路徑測試,18,現實
7、程序中可能的路徑一般是天文數字!,解決辦法:壓縮覆蓋的路徑數到一定限度內,如語句覆蓋。,McCabe,提出了基本路徑測試,保證每條語句至少執(zhí)行一次,而且判斷能取真、假兩種值。,McCabe,圈復雜度,V,(,G,),V,(,G,)=,m,n,+2,其中,m,:弧數,n,:節(jié)點數,McCabe,圈復雜度示例,19,右圖的圈復雜度是多少?,V,(,G,)=17,13+2=6,,,表示有,6,條獨立的路徑。,獨立路徑與判定節(jié)點,20,獨立路徑:一條完整的路徑,至少包含一條前面路徑未包含的邊;,圈復雜度決定了獨立路徑的條數;,決定獨立路徑的關鍵:判定節(jié)點。,獨立路徑示例,21,測試用例設計,22,為每
8、一條獨立路徑設計可強制執(zhí)行的測試用例;,這些測試用例可以保證:,語句覆蓋:每一條語句都被執(zhí)行了一次;,每個判斷條件都分別去過真和假兩個值。,23,請畫出下面程序的流程圖,計算圈復雜度和獨立路徑,并設計測試范例。,public int func(int a,int b),行,1,int m=1;,行,2,if(ab)/,交換,a,,,b,的值,保證,b=a,行,3,m=a;,行,4,a=b;,行,5,b=m;,行,6,while(m!=0),行,7,m=a%b;,行,8,a=b;,行,9,b=m;,行,10,return a,;,“,白盒,”,測試練習參考答案,24,圈復雜度,3,,獨立路徑和測
9、試用例為:,1,2,6,10,無,;,1 2 3 4 5 6 7 8 9 10,a=8,b=24;,1 2 6 7 8 9 10,a=3,b=2;,白盒測試應用策略,25,一般策略:,先靜態(tài)后動態(tài):,覆蓋率測試一般使用基本路徑測試,重點模塊可應用多種覆蓋率標準;,單元測試以代碼檢查、邏輯覆蓋為主;,集成測試再增加靜態(tài)結構分析;,系統(tǒng)測試中黑盒和白盒測試相結合。,覆蓋測試工具,EclEmma,26,Eclipse community awards 2008,;,免費、開源的,Eclipse,插件;,EclEmma,工作模式:通過顏色標記代碼在運行代碼中的語句的覆蓋情況,,綠色,表示該行代碼被完整的執(zhí)行;,紅色,表示該行代碼根本沒有被執(zhí)行;,黃色,表示該行代碼部分被執(zhí)行。,運行,Sudoku,查看代碼覆蓋情況。,EclEmma,演示,