還有嗎??
5 C,D,C,I,A,C,E,J(4,6,13,19,22,4,6,8,24)算嗎?
不算,為什么?因為上面的4條路徑已經包括了所有的邊。第5條路徑已經不包含沒有用過的邊了。所有的路徑都遍歷過了。
好了,現在我們有了4條基本獨立路徑根據獨立路徑我們可以設計測試用例。
1 B(4,24)
輸入數據:i_flag=0,或者是i_flag<0的某一個值。
預期結果:i_temp=0.
2 C,E,J(4,6,8,24)
輸入數據: i_count =1;i_flag=0
預期結果:i_temp=101.
3 C,D,F,H,A,B(4,6,13,15,22,4,24)
輸入數據: i_count =1;i_flag=1
預期結果:i_temp=10.
4 C,D,G,I,A,B(4,6,13,19,22,4,24)
輸入數據: i_count =1;i_flag=2
預期結果:i_temp=20.
這里的輸入數據是有路徑和程序推論出來的。而要注意的是預期結果是從函數說明中導出,不能根據程序結構中導出。
為什么這么說?
讓我們看程序中的第3行。
int i_temp=0;假如開發人員一不小心寫錯了,變成了int i_temp=1;根據程序導出的預期結果就會是一個錯誤的值,但是單元測試不出來問題。
那單元測試就失去了意義。
有人也許會問這么簡單的函數就有4個測試用例,如果還復雜一些的怎么辦?上面的測試用例還可以簡化嗎?答案是可以。
我們來看 路徑 1 B(4,24)和 4 C,D,G,I,A,B(4,6,13,19,22,4,24),路徑1是路徑4的真子集, 所以1是可以不必要的。上圖的圈復雜度是4。這個結果對我們來說有什么意義呢?它表示我們只要最多4個測試用例就可以達到基本路徑覆蓋。所以說圈復雜度標示是最多的測試用例個數,不是一定要4個測試用例才可以。不過有一點要申明的是測試用例越簡化代表你的測試越少,這樣程序的安全性就越低了。
四、完成測試
接下來根據測試用例使用工具測試NUNIT,VS2005都可以。
接下來根據測試結果編寫測試報告,測試人,時間,結果,用例,是否通過,格式網上一大把,每個公司的格式也不一樣就不說了。
文章來源于領測軟件測試網 http://www.kjueaiud.com/