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