白盒測試系列(五)條件組合覆蓋


條件組合覆蓋

一、定義:

判定中條件的各種組合都至少被執行一次

二、特點:

1、滿足條件組合覆蓋的用例一定滿足語句覆蓋
2、滿足條件組合覆蓋的用例一定滿足條件覆蓋
3、滿足條件組合覆蓋的用例一定滿足判定覆蓋
4、滿足條件組合覆蓋的用例一定滿足條件判定覆蓋
5、條件組合覆蓋沒有考慮各判定結果(真或假)組合情況,不滿足路徑覆蓋
6、條件組合數量大,設計測試用例的時間花費較多

三、 程序流程圖:

四、源碼:

demo.py

#encoding:utf-8
A = int(input('請輸入A的值'))
B = int(input('請輸入B的值'))
X = int(input('請輸入X的值'))

if A > 1 and B == 0:
    X = X / A
if A == 2 or X > 1:
    X = X + 1
print('結束')

五、測試用例設計示例

用例編號 測試用例 覆蓋條件 覆蓋路徑 預期結果
1 A=2,B=0,X=4 (A>1) and (B== 0), (A==2) or (X>1) a-c-e X = 3
2 A=2,B=1,X=1 (A>1) and (B!=0), (A==2) or (X<=1) a-b-e X = 2
3 A=1,B=0,X=2 (A<=1) and (B==0), (A!=2) or (X>1) a-b-e X = 3
4 A=1,B=1,X=1 (A<=1) and (B!=0), (A!=2) or (X<=1) a-b-d X = 1

執行用例1 ,判定(A > 1 and B == 0)為真 ,執行 X = X / A, X=2;
判定(A == 2 or X > 1)為真,執行X = X + 1 ;
輸出 X = 3 ;
程序結束

執行用例2 ,判定(A > 1 and B == 0)為假 ,不執行 X = X / A ;
判定(A == 2 or X > 1)為真,執行X = X + 1 ,X=2 ;
輸出 X = 2 ;
程序結束

執行用例3 ,判定(A > 1 and B == 0)為假 ,不執行 X = X / A ;
判定(A == 2 or X > 1)為真,執行X = X + 1 ,X=2 ;
輸出 X = 3 ;
程序結束

執行用例4 ,判定(A > 1 and B == 0)為假,不執行X = X / A ;
判定(A == 2 or X > 1)為假,不執行X = X + 1 ;
輸出 X = 1 ;
程序結束

從上述用例可以得出:
1、滿足條件判定覆蓋的測試用例滿足語句覆蓋
2、滿足條件判定覆蓋的測試用例滿足條件覆蓋,判定覆蓋 ,條件判定覆蓋
3、上述用例未考慮每個判定的真假組合情況(路徑覆蓋),程序所有路徑沒有覆蓋

六、使用Python Unittest 實現上述用例

# encoding:utf-8

import unittest


class TestDemo(unittest.TestCase):

    def demo(self, A, B, X):
        if A > 1 and B == 0:
            X = X / A
        if A == 2 or X > 1:
            X = X + 1
        return X


    def test_demo_with_conditional_combination_coverage_1(self):
        '''
        使用條件組合覆蓋測試 方法demo
        A=2,B=0,X=4
        '''
        X = self.demo(A=2, B=0, X=4)
        expected = 3
        self.assertEqual(expected, X)


    def test_demo_with_conditional_combination_coverage_2(self):
        '''
        使用條件組合覆蓋測試 方法demo
        A=2,B=1,X=1
        '''
        X = self.demo(A=2, B=1, X=1)
        expected = 2
        self.assertEqual(expected, X)


    def test_demo_with_conditional_combination_coverage_3(self):
        '''
        使用條件組合覆蓋測試 方法demo
        A=1,B=0,X=2
        '''
        X = self.demo(A=1, B=0, X=2)
        expected = 3
        self.assertEqual(expected, X)



    def test_demo_with_conditional_and_decision_coverage_4(self):
        '''
        使用條件組合覆蓋測試 方法demo
        A=1,B=1,X=1
        '''
        X = self.demo(A=1, B=1, X=1)
        expected = 1
        self.assertEqual(expected, X)

if __name__ == '__main__':
    unittest.main()



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM