清單9決策覆蓋和路徑覆蓋的測試用例
public void test_parse () {
NumberParser np = new NumberParser();
String number ="";
try {
np.parse(number);
fail("should throw IAE");
} catch (IllegalArgumentException e) {
// pass
}
number = "22.010";
float parsedNumber = np.parse(number);
assertEquals((float) 22.010, parsedNumber);
number = "-22.010";
parsedNumber = np.parse(number);
assertEquals((float) 22.010, parsedNumber);
}
運行 Ant 腳本,生成報告,你會發現,測試用例都運行通過了,測試覆蓋報告也表明代碼所有的行都被執行到了。但細心的讀者肯定早已看到上面代碼存在 Bug。若傳進 parse 的 string 為 null 的話,并不是如我們所愿,得到 IllegalArgumentException,而是拋出了 NullPointerException。
雖然下面那行是綠色的,但它只表明每個條件語句都被執行到了,并不能說明每個條件都取到true和false兩種情況。在我們設計的測試用例中,"null == number"只取到 false 一種情況。我們需要在我們的測試用例中加入對 string 情況是 null 的測試。
圖6 決策覆蓋和路徑覆蓋率報告
清單10 修正代碼的 Bug
if (null == number || "".equals(number)) {
結束語
為你的項目生成覆蓋率報告,EMMA 是個不錯的選擇。通過覆蓋率報告,我們能發現并修復一些隱藏的 bug,我們的軟件會變得更強壯。
文章來源于領測軟件測試網 http://www.kjueaiud.com/