一、 單元測試的概念
單元通俗的說(shuō)就是指一個(gè)實(shí)現簡(jiǎn)單功能的函數。單元測試就是只用一組特定的輸入(測試用例)測試函數是否功能正常,并且返回了正確的輸出。
測試的覆蓋種類(lèi)
1.語(yǔ)句覆蓋:語(yǔ)句覆蓋就是設計若干個(gè)測試用例,運行被測試程序,使得每一條可執行語(yǔ)句至少執行一次。
2.判定覆蓋(也叫分支覆蓋):設計若干個(gè)測試用例,運行所測程序,使程序中每個(gè)判斷的取真分支和取假分支至少執行一次。
3.條件覆蓋:設計足夠的測試用例,運行所測程序,使程序中每個(gè)判斷的每個(gè)條件的每個(gè)可能取值至少執行一次。
4.判定——條件覆蓋:設計足夠的測試用例,運行所測程序,使程序中每個(gè)判斷的每個(gè)條件的每個(gè)可能取值至少執行一次,并且每個(gè)可能的判斷結果也至少執行一次。
5.條件組合測試:設計足夠的測試用例,運行所測程序,使程序中每個(gè)判斷的所有條件取值組合至少執行一次。
6.路徑測試:設計足夠的測試用例,運行所測程序,要覆蓋程序中所有可能的路徑。
用例的設計方案主要的有下面幾種:條件測試,基本路徑測試,循環(huán)測試。通過(guò)上面的方法可以實(shí)現測試用例對程序的邏輯覆蓋,和路徑覆蓋。
二、開(kāi)始測試前的準備
在開(kāi)始測試時(shí),要先聲明一下,無(wú)論你設計多少測試用例,無(wú)論你的測試方案多么完美,都不可能完全100%的發(fā)現所有BUG,我們所需要做的是用最少的資源,做最多測試檢查,尋找一個(gè)平衡點(diǎn)保證程序的正確性。窮舉測試是不可能的。 所以現在進(jìn)行單元測試我選用的是現在一般用的比較多的基本路徑測試法。
三、開(kāi)始測試
基本路徑測試法:設計出的測試用例要保證每一個(gè)基本獨立路徑至少要執行一次。
函數說(shuō)明 :當i_flag=0;返回 i_count+100
當i_flag=1;返回 i_count *10
否則 返回 i_count *20
輸入參數:int i_count ,
int i_flag
輸出參數: int i_return;
代碼:
1 int Test(int i_count, int i_flag)
2 {
3 int i_temp = 0;
4 while (i_count>0)
5 {
6 if (0 == i_flag)
7 {
8 i_temp = i_count + 100;
9 break;
10 }
11 else
12 {
13 if (1 == i_flag)
14 {
15 i_temp = i_temp + 10;
16 }
17 else
18 {
19 i_temp = i_temp + 20;
20 }
21 }
22 i_count--;
23 }
24 return i_temp;
25 }
圈中的數字代表的是語(yǔ)句的行號,也許有人問(wèn)為什么選4,6,13,8......作為結點(diǎn),第2行,第3行為什么不是結點(diǎn),因為選擇結點(diǎn)是有規律的。讓我們看程序中;第2行,第3行是按順序執行下來(lái)的。直到第4行才出現了循環(huán)操作。而2,3行沒(méi)有什么判斷,選擇等分支操作,所以我們把2,3,4全部合并成一個(gè)結點(diǎn)。其它的也是照這個(gè)規則合并,然后就有了上面的流程圖。
原文轉自:http://kjueaiud.com