软件测试——逻辑覆盖
1、語(yǔ)句覆蓋(Statement Coverage)
對(duì)程序的邏輯覆蓋很少,只關(guān)心判定表達(dá)式的值,是很弱的邏輯覆蓋標(biāo)準(zhǔn)。
- 【基本思想】:設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序,使程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。
- 【優(yōu)點(diǎn)】:檢查所有語(yǔ)句、代碼覆蓋率高
- 【缺點(diǎn)】:無(wú)法檢查出條件、循環(huán)語(yǔ)句的錯(cuò)誤
2、判定覆蓋(Decision Coverage)
判定覆蓋比語(yǔ)句覆蓋強(qiáng)一些,能發(fā)現(xiàn)一些語(yǔ)句覆蓋無(wú)法發(fā)現(xiàn)的問(wèn)題。但是往往一些判定條件都是由多個(gè)邏輯條件組合而成的,進(jìn)行分支判斷時(shí)相當(dāng)于對(duì)整個(gè)組合的最終結(jié)果進(jìn)行判斷,這樣就會(huì)忽略每個(gè)條件的取值情況,導(dǎo)致遺漏部分測(cè)試路徑。
- 【基本思想】:設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。
- 【優(yōu)點(diǎn)】:判定覆蓋具有比語(yǔ)句覆蓋更強(qiáng)的測(cè)試能力。
- 【缺點(diǎn)】:往往大部分的判定語(yǔ)句是由多個(gè)邏輯條件組合而成,若僅僅判斷其整個(gè)最終結(jié)果,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑,判定覆蓋仍是較弱的邏輯覆蓋。
3、條件覆蓋(Condition Coverage)
通常而言條件覆蓋比判定覆蓋強(qiáng),因?yàn)闂l件覆蓋使得判定中的每一個(gè)條件都取到了不同的結(jié)果,這一點(diǎn)判定覆蓋則無(wú)法保證。但條件覆蓋也有缺陷,因?yàn)樗荒鼙WC每個(gè)條件都取到了不同結(jié)果,但沒(méi)有考慮到判定結(jié)果,因此有時(shí)候條件覆蓋并不能保證判定覆蓋。
- 【基本思想】:設(shè)計(jì)若干測(cè)試用例,執(zhí)行被測(cè)程序以后要使每個(gè)判斷中每個(gè)條件的可能取值至少滿足一次。
- 【優(yōu)點(diǎn)】:能夠檢查所有的條件錯(cuò)誤。
- 【缺點(diǎn)】:不能保證所有的分支(判定)都能覆蓋,仍是較弱的覆蓋方式。
4、判定/條件覆蓋(Decision/Condition Coverage)
判定/條件覆蓋,說(shuō)白了就是我們?cè)O(shè)計(jì)的測(cè)試用例可以使得判斷中每個(gè)條件所有的可能取值至少執(zhí)行一次(條件覆蓋),同時(shí)每個(gè)判斷本身所有的結(jié)果也要至少執(zhí)行一次(判定覆蓋)。不難發(fā)現(xiàn)判定條件覆蓋同時(shí)滿足判定覆蓋和條件覆蓋,彌補(bǔ)了兩者各自的不足,但是判定條件覆蓋并未考慮條件的組合情況。
- 【基本思想】:設(shè)計(jì)足夠的測(cè)試用例,使得判斷條件中的所有條件可能至少執(zhí)行一次取值,同時(shí)所有判斷的可能結(jié)果至少執(zhí)行一次。
- 【優(yōu)點(diǎn)】:既考慮了每一個(gè)條件,又考慮了每一個(gè)分支,發(fā)現(xiàn)錯(cuò)誤的能力強(qiáng)于分支覆蓋和條件覆蓋
- 【缺點(diǎn)】:仍然不能覆蓋所有的路徑,有進(jìn)一步提升的空間
5、條件組合覆蓋(Branch Condition Combination Coverage)
條件組合覆蓋,測(cè)試用例應(yīng)該使得每個(gè)判定中的各個(gè)條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足條件組合覆蓋的測(cè)試用例一定是滿足判定覆蓋、條件覆蓋和判定條件覆蓋的。
- 【基本思想】:設(shè)計(jì)足夠的測(cè)試用例,使得所有可能的條件取值組合至少執(zhí)行一次。
- 【優(yōu)點(diǎn)】:能夠檢查所有的條件錯(cuò)誤
- 【缺點(diǎn)】:不一定能使程序中的每條路徑都執(zhí)行到,用例數(shù)明顯增加
6、路徑覆蓋(Path Coverage)
路徑覆蓋,意思是說(shuō)我們?cè)O(shè)計(jì)的測(cè)試用例可以覆蓋程序中所有可能的執(zhí)行路徑。這種覆蓋方法可以對(duì)程序進(jìn)行徹底的測(cè)試用例覆蓋,比前面講的五種方法覆蓋度都要高。
- 【基本思想】:要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中所有的路徑都至少執(zhí)行一次 。
- 【優(yōu)點(diǎn)】:這種測(cè)試方法可以對(duì)程序進(jìn)行徹底的測(cè)試,比前面五種的覆蓋面都廣。
- 【缺點(diǎn)】:需要設(shè)計(jì)大量、復(fù)雜的測(cè)試用例,使得工作量呈指數(shù)級(jí)增長(zhǎng),不一定把所有的條件組合都覆蓋。
總結(jié)一下:
?
總結(jié)
以上是生活随笔為你收集整理的软件测试——逻辑覆盖的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 课上——HTML 表格 学生成绩表
- 下一篇: 2018 dota2 战队十杀分析