白盒測試系列(三)條件覆蓋

條件覆蓋

一、定義:

程序各判定中的每個條件獲得各種可能的取值至少滿足一次

二、特點:

1、彌補了判定覆蓋的不足——對整個判定的最終取值(真或假)進行度量
2、條件覆蓋不一定能滿足判定覆蓋
3、條件覆蓋不一定能滿足語句覆蓋

三、 程序流程圖:

四、源碼:

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=1,X=4 a-b-e X = 5
2 A=-1,B=0,X=1 a-b-d X = 1

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

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

從上述用例可以得出:
1、上述用例遺漏覆蓋分支“c”;滿足條件覆蓋,但不滿足判定覆蓋
2、上述用例均未執行語句X = X / A;滿足條件覆蓋,但不滿足語句覆蓋

六、使用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_coverage_1(self):
        '''
        使用條件覆蓋測試 方法demo
        A=2,B=1,X=4
        '''
        X = self.demo(A=2, B=1, X=4)
        expected = 5
        self.assertEqual(expected, X)

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

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章