动态白盒测试——逻辑覆盖测试法
邏輯覆蓋測試法
定義
以程序內部的邏輯結構為基礎的用例設計方法,它通過對程序邏輯結構的遍歷實現程序的覆蓋。
邏輯覆蓋測試法分為:語句覆蓋、判定覆蓋(分支覆蓋)、條件覆蓋、判定-條件覆蓋、條件組合覆蓋、路徑覆蓋六種。
代碼流程圖如下
語句覆蓋
定義
語句覆蓋要求設計足夠多的測試用例,運行被測程序,使得程序中每條語句至少被執行一次。
實例
| CASE1 | x=3 y=3 | magic=16 | 語句1、4 |
| CASE2 | x=-3 y=0 | magic=0 | 語句2、3 |
(測試用例不唯一)
在這個實例中,無法判斷運算中邏輯關系錯誤。當第一個判斷語句if(x>0&&y>0)被錯寫成if(x>0||y>0)也能達到100%的語句覆蓋,所以語句覆蓋不能發現上述的邏輯錯誤。
判定覆蓋
滿足判定覆蓋,則滿足語句覆蓋。定義
判定覆蓋,又稱”分支覆蓋“;要求設計足夠多的測試用例,運行被測程序,使得程序中每個判斷的”真“和”假“都至少被執行一次。
實例
在本例共有兩個判斷條件:if(x>0&&y>)和if(magic<0)
| CASE1 | x=3 y=3 | magic=16 | b–>c–>e |
| CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
通過著兩個測試用例,兩個判斷的真、假分支都已經被執行過,所以滿足了判定覆蓋的標準。
在這個實例中,無法判斷運算中邏輯關系錯誤。當第一個判斷語句if(x>0&&y>0)被錯寫成if(x>0||y>0)也能達到100%的語句覆蓋,所以判定覆蓋也無法發現上面的邏輯錯誤。
條件覆蓋
定義
條件覆蓋要求設計足夠多的測試用例,運行被測程序,使得判定中的每個條件獲得各種可能的結果;即每個條件至少有一次為真,有一次為假。
實例
本例共有兩個判斷條件:if(x>0&&y>)和if(magic<0)共計三個條件x>0、y>0、magic<0
| CASE1 | x=3 y=0 | magic=0 | a–>c–>d–>e |
| CASE2 | x=-3 y=15 | magic=2 | a–>c–e |
通過這兩個測試用例,三個條件的各種可能取值都滿足了一次,達到了100%條件覆蓋的標準。
條件覆蓋職能保證每個條件至少有一次為真,而不考慮所有的判定結果。因此條件覆蓋不能保證滿足判定覆蓋。
判定-條件覆蓋
同時滿足判定覆蓋和條件覆蓋定義
判定-條件覆蓋要求設計足夠多的用例,運行被測程序,使得被測程序中的每個判斷本身的結果(真、假)至少滿足一次,同時,每個邏輯條件的可能值也至少滿足一次。即同時滿足100%判定覆蓋和100%條件覆蓋的標準。
實例
| CASE1 | x=3 y=3 | magic=16 | b–>c–e |
| CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
通過這兩個測試用例,所有條件的可能取值都滿足了一次,而且所有的判斷本身的判定結果也都滿足了一次。
判定-條件覆蓋滿足了判定覆蓋準則和條件覆蓋準則,彌補了二者的不足。但未考慮條件組合的情況。
條件組合覆蓋
條件組合覆蓋同時滿足語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋定義
條件組合覆蓋要求設計足夠多的測試用例,運行被測程序,使得被測程序中每個判定中條件結果的所有可能組合至少執行一次。
其測試用例需要注意三點: 1. 條件組合只針對同一個判斷語句內存在多個條件的情況,讓這些條件的取值進行笛卡爾乘積組合; 2. 不同的判斷語句內的條件取值之間無須組合; 3. 對于單條件的判斷語句,只需要滿足自己所有的取值即可。實例
| CASE1 | x=3 y=3 | magic=16 | b–>c–e |
| CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
| CASE3 | x=3 y=0 | magic=0 | a–>c–>d–>e |
| CASE4 | x=-3 y=15 | magic=2 | a–>c–>e |
通過這四個測試用例,程序中所有條件取值的組合都被滿足了一次。
路徑覆蓋
100%滿足路徑測試,一定能100%滿足判定覆蓋標準,單并不一定能100%滿足條件覆蓋,也就不能滿足100%條件組合覆蓋。定義
路徑覆蓋要求設計足夠的測試用例,運行被測程序,覆蓋程序中所有可能的路徑。
實例
| CASE1 | x=3 y=3 | magic=16 | b–>c–e |
| CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
| CASE3 | x=-3 y=15 | magic=2 | a–>c–>e |
本例中共有4條路徑,其中路徑a-->c-->e不可能實現,通過這三個測試用例,所有可能的路徑都被滿足了一次。
總結
以上是生活随笔為你收集整理的动态白盒测试——逻辑覆盖测试法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP常用方法大全
- 下一篇: 百度地图API之本地搜索与范围搜索