寫在前面:軟件測試快要考試了,於是進行了復習,之前學的都忘了,然后看視頻發現特別蒙,然后就尋找了點博客,有的過於專業化,不易理解,看了很多博客之后打算寫一個比較通俗易懂的博文進行記錄和共勉。先系統介紹下六種覆蓋方法吧(也就是視頻上的)
覆蓋率從低到高
1.語句覆蓋法:語句覆蓋法要求設計足夠多的測試用例,使得程序中每條語句至少被執行一次,是最基本的覆蓋要求
2.分支覆蓋法:又稱判定覆蓋法,它要求設計足夠多的測試用例,使得程序中每個判定至少有一次為真值,有一次為假值,即程序中的每個分支至少執行一次,每個判斷的取真、取假至少執行一次。
3.條件覆蓋法:要求設計足夠多的測試用例,使得判定中的每個條件獲得各種可能的結果,即每個條件至少有一次為真值,有一次為假值。
4.分支條件覆蓋法:又稱判定條件覆蓋法,要設計足夠多的測試用例,使得判定中每個條件的所有可能結果至少出現一次,每個判定本身所有可能結果也至少出現一次。
5.條件組合覆蓋法:要求設計足夠多的測試用例,使得判定中的每個條件結果的所有可能結果至少出現一次,這樣也會使得每個判定本身的所有可能結果至少出現一次。
6.路徑覆蓋法:要求設計足夠多的測試用例,覆蓋程序中所有可能的執行路徑。
我看完這些介紹似懂非懂,等到了做題的時候明白視頻上的答案是對的,但是不明白為什么我的就是不對,或者為什么不寫我想的那個,這就需要了解每個覆蓋方法的本質。如圖:
解釋:條件C||條件D的結果為判斷H,同理條件A&&條件B的結果為判斷G,方框中為語句E和語句F,
1.語句覆蓋法:顧名思義,就是每個語句至少都要被執行一次,則路徑為START->I->K->L->END,因為只涉及到判斷的T和F所以不必去考慮條件ABCD的真或假,只要G為F,H為T即可。
2.判定覆蓋:顧名思義是關於判定(判斷的覆蓋),也只涉及G,H的真假,不涉及A,B,C,D的真假
上圖中本應有兩個測試用例,12或者34即可,這也就是我為什么會覺得我寫的為什么不是對的,因為理論上,12和34都滿足G,H都分別有一次真假,只不過組合的方式不同,也就出現了結果的不同
已提供覆蓋路徑,圖就不在贅述了。
3.條件覆蓋:就是對條件而言,而不去考慮判定或者判斷的結果
原本也應該只有兩個測試用例,因為每個條件只有T和F兩個結果,但是由於條件有4個,所以會有很多的組合結果,也就出現了答案不唯一的情況,這里值做出了四個測試用例,12一組,34一組,
每個條件都分別由TF
4.分支條件覆蓋法:也就是共同考慮條件和判斷的真假
原本也應該只有兩個測試用例,12一組,34一組,原因同上,但是因為組合方式不一樣,結果就不一樣了,同時做這個題的時候因為是判斷和條件一起考慮,建議先去寫判斷的TF,即每個判斷下面都要分別要有TF,然后再根據G或者H的真假去給條件A,B,C,D的值,同時也要注意每個條件下面結果不能相同即兩個T或者兩個F,必須是一個T一個F
下圖就是錯的
因為一個條件下面出現了相同的結果。
5.條件組合覆蓋法:也就是說通過條件的排列組合來進行覆蓋,不涉及判斷即GH的真假
這是條件不在要求一個真假了,要進行組合,圖比較簡單的話,路徑會有很多重復的。
6.路徑覆蓋:即將每個路徑都進行覆蓋,只考慮路徑,然后再根據路徑找GH真假,在通過GH找ABCD的真假
注:上面所有圖的不填都是在做題的時候不考慮,而不是選項里面沒有值!都需要去計算出帶有具體值的測試案例
注:這是我自己的感想和技巧,如果哪里有問題希望大佬們可以指出來,如果您覺得寫的還不錯,比較有用,可以點一下推薦,謝謝啦