我們已經了解了白盒測試的一般方法,現在是時候學習如何實際運用了。
- 測試目的
- 根據軟件的結構和數據決定采取的白盒測試策略;
- 選取合適的測試用例;
- 測試結果分析方法。
- 測試計划
- 整體計划:選取合適的測試方法測試之前的平閏年判斷程序;
-
測試評價標准:覆蓋廣度,測試結果與預期輸出一致。
-
測試核心代碼:
function test(){ var input=document.getElementById("input").value; if(!checkNum(input)) document.getElementById("output").innerHTML="請檢查是否輸入非法字符."; else if(input==0||input>9999) document.getElementById("output").innerHTML="輸入年份有誤."; else if((input%4==0&&input%100!=0)||input%400==0) document.getElementById("output").innerHTML="輸入年份為閏年."; else document.getElementById("output").innerHTML="輸入年份為平年."; } function checkNum(value) { var Reg = /^[0-9]*$/; if (Reg.test(value)) return true; return false; }
- 測試評價標准:覆蓋廣度,測試結果與預期輸出一致。
-
根據代碼繪制流程圖與有向圖


- 測試用例設計
- 根據分支-謂詞覆蓋准則設計用例:
C1
!checkNum(input)
C2
input==0
C3
input>9999
C4
input%4==0
C5
input%100!=0
C6
input%400==0
-
用例編號
Input
C1 C2 C3 C4 C5 C6
B1 B2 B3
覆蓋路徑
1
-50
1 0 0 0 0 0
1 0 0
Start,1,3,end
2
0
0 1 0 0 0 0
0 1 0
Start,1,2,5,end
3
10000
0 0 1 0 0 0
0 1 0
Start,1,2,5,end
4
10
0 0 0 0 0 0
0 0 0
Start,1,2,4,6,end
5
300
0 0 0 1 0 0
0 0 0
Start,1,2,4,6,end
6
8
0 0 0 1 1 0
0 0 1
Start,1,2,4,7,end
7
400
0 0 0 1 0 1
0 0 1
Start,1,2,4,7,end
-
-
用例編號
期望輸出
1
請檢查是否輸入非法字符.
2
輸入年份有誤.
3
輸入年份有誤.
4
輸入年份為平年.
5
輸入年份為平年.
6
輸入年份為閏年.
7
輸入年份為閏年.
- 根據分支-謂詞覆蓋准則設計用例:
- 測試結果:
根據用例進行測試,結果截圖如下:
-
-
用例編號1:

-
用例編號2:

-
用例編號3:

-
用例編號4:

-
用例編號5:

-
用例編號6:

-
用例編號7:

將測試結果和預期結果對比后發現,測試基本完成。
-
-
實驗結論
白盒測試依據程序內部細節、對軟件的邏輯路徑進行覆蓋測試,在軟件測試中具有重要意義。測試人員在了解軟件內部代碼的情況下,能更具針對性的設計測試用例,以免在一些不重要的地方浪費精力。在選擇白盒測試方法的時候,要針對代碼選擇合適的覆蓋方法,以更多的覆蓋代碼同時提高測試質量。
附:全部代碼如下
<!DOCTYPE html> <html> <head lang="en"> <meta charset="GB2312"> <style> body{text-align:center} </style> <body> 請輸入年份:<input type="text" id="input" autofocus="autofocus"/> <input type="submit" value="確定" onclick="test()"/> <p id="output"></p> <script> function test(){ var input=document.getElementById("input").value; if(!checkNum(input)) document.getElementById("output").innerHTML="請檢查是否輸入非法字符."; else if(input==0||input>9999) document.getElementById("output").innerHTML="輸入年份有誤."; else if((input%4==0&&input%100!=0)||input%400==0) document.getElementById("output").innerHTML="輸入年份為閏年."; else document.getElementById("output").innerHTML="輸入年份為平年."; } function checkNum(value) { var Reg = /^[0-9]*$/; if (Reg.test(value)) return true; return false; } </script> </body> </html>
