圖3包層次的報告
圖4類層次的報告
圖5用顏色標記的源代碼
你會發現有三種顏色,綠色,紅色和黃色,它們分別表示該行:被測試到,未被測試到,以及部分被測試到。紅色或黃色的部分是需要引起你注意的,bug 也許就隱藏在這部分代碼中,你所需做的就是設計一些測試用例,使它們運行以前未被執行到的語句。如上面那張圖給出了我們一些信息,String 中含有"+"號的情況未被測試到,還有"isPositive"只被測試到 true 或 false 的一種情況,你需要相應的增加一些測試用例。運行新加的測試用例,你也許會發現一些新的 bug,并修正這些 bug。
隱藏在報告背后的問題
對于這個簡單的例子,你會發現,我們很容易達到 100% 的測試覆蓋率,你也許會松口氣說:啊,我把所有情況都測試到了,這下放心了。在這里很遺憾的告訴你,EMMA 的功能是有限的,它不支持決策覆蓋和路徑覆蓋。事實上,對于一個稍復雜的工程進行窮盡的測試是不可能的。
清單8決策覆蓋和路徑覆蓋的代碼示例
/**
* Parses the given string to a float number
*
* @param number
* the given string
* @return the float number related with the string
*
* @throws IllegalArgumentException
* if the string is empty, null or can not parse to a float
*/
public float parse(String number) {
if (number.equals("")||number == null ) {
throw new IllegalArgumentException(
"Number string should not be empty or null");
}
StringIterator stringIterator = new StringIterator(number);
getSign(stringIterator);
int integer = getInteger(stringIterator);
float fraction = getFraction(stringIterator);
float total = integer + fraction;
return isPositive ? total : (-1) * total;
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/