程序测试的逻辑覆盖测试方法
? ? ? ? 邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。它屬白盒測試。白盒測試的測試方法有代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、靜態(tài)質(zhì)量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程序變異。白盒測試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測試。
1.語句覆蓋(Statement Coverage,SC)
? ? ? ? 又稱行覆蓋(LineCoverage),段覆蓋(SegmentCoverage),基本塊覆蓋(BasicBlockCoverage),這是最常用也是最常見的一種覆蓋方式,就是度量被測代碼中每個可執(zhí)行語句是否被執(zhí)行到了。
2.?判定覆蓋(Decision Coverage,DC)
? ? ? ? 判定覆蓋是設(shè)計足夠多的測試用例,使得程序中的每一個判斷至少獲得一次“真”和一次“假”,即使得程序流程圖中的每一個真假分支至少被執(zhí)行一次。
3.?條件覆蓋(Condition Coverage,CC)
? ? ? ?使每個判定表達(dá)式中的每個條件都取到各種可能的結(jié)果。
4.?條件/判定覆蓋(Condition/Decision Coverage,CC)
? ? ? ?判定條件覆蓋是設(shè)計足夠的測試用例,得使判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷本身所有可能結(jié)果也至少執(zhí)行一次。缺點(diǎn)是忽略了條件的組合情況。
5.?條件組合覆蓋(Conditional Combination Coverage,CCC)
? ? ? ?在白盒測試法中,選擇足夠的測試用例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足“條件組合覆蓋”的測試用例是一定滿足“判定覆蓋”、“條件覆蓋”和“判定/條件覆蓋”的。
6.多條件覆蓋(Multi Condition Coverage,MCC)
? ? ? ?設(shè)計足夠多的測試用例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足多條件覆蓋的測試用例是一定滿足,“判定覆蓋”、“條件覆蓋”、條件判定組合覆蓋的。
7.修正判定條件覆蓋(MC/DC)
? ? ? ? 條件表示不含有布爾操作符號的布爾表達(dá)式;
? ? ? ??判定表示由條件和零或者很多布爾操作符號所組成的一個布爾表達(dá)式;
? ? ? ??修正條件判定覆蓋要求在一個程序中每一種輸入輸出至少得出現(xiàn)一次,在程序中的每一個條件必須產(chǎn)生所有可能的輸出結(jié)果至少一次,并且每一個判定中的每一個條件必須能夠獨(dú)立影響一個判定的輸出,即在其他條件不變的前提下僅改變這個條件的值,而使判定結(jié)果改變。
? ? ? ??上面的定義有點(diǎn)不好理解,解釋一下:
? ? ? ??MC/DC首先要求實現(xiàn)條件覆蓋、判定覆蓋,在此基礎(chǔ)上,對于每一個條件C,要求存在符合以下條件的兩次計算:
? ? ? ??1)條件C所在判定內(nèi)的所有條件,除條件C外,其他條件的取值完全相同;
? ? ? ??2)條件C的取值相反;
? ? ? ??3)判定的計算結(jié)果相反。
? ? ? ??核心意思是每個條件都要獨(dú)立影響判定結(jié)果。為什么說“兩次計算”,而不是“兩個用例”呢?當(dāng)循環(huán)中有判定時,一個用例下同一判定可能被計算多次,每次的條件值和判定值也可能不同,因此,一個用例就可能完成循環(huán)中判定的MC/DC。
8.?點(diǎn)覆蓋
? ? ? ?在圖論中點(diǎn)覆蓋的概念定義如下:對于圖G=(V,E)中的一個點(diǎn)覆蓋是一個集合S?V使得每一條邊至少有一個端點(diǎn)在S中。
9.?邊覆蓋
? ? ? ?邊覆蓋是一類覆蓋,指一類邊子集。具體地說,圖的一個邊子集,使該圖上每一節(jié)點(diǎn)都與這個邊子集中的一條邊關(guān)聯(lián),只有含孤立點(diǎn)的圖沒有邊覆蓋,邊覆蓋也稱為邊覆蓋集,圖G的最小邊覆蓋就是指邊數(shù)最少的覆蓋,圖G的最小邊覆蓋的邊數(shù)稱為G的邊覆蓋數(shù),常記為β′(G)。
10.路徑覆蓋
? ? ? ?路徑覆蓋的含義是,選取足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個環(huán)至少經(jīng)過一次)。
? ? ? ?對于比較簡單的小程序來說,實現(xiàn)路徑覆蓋是可能的,但是如果程序中出現(xiàn)了多個判斷和多個循環(huán),可能的路徑數(shù)目將會急劇增長,以致實現(xiàn)路徑覆蓋是幾乎不可能的。
總結(jié)
以上是生活随笔為你收集整理的程序测试的逻辑覆盖测试方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有关风月,无关你我
- 下一篇: 铟镓砷探测器-主要厂商产品特点、产品规格