白盒测试系列(二)断定覆盖(分支覆盖)

断定覆盖(分支覆盖)

1、定义:

程序中每一个断定至少有一次为真值,有一次为假值,使得程序中每一个分支至少执行一次python

2、特色:

一、知足断定覆盖的测试用例必定知足语句覆盖
二、对整个断定的最终取值(真或假)进行度量,但断定内部每个子表达式的取值未被考虑测试

3、 程序流程图:

4、源码:

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('结束')

5、测试用例设计

用例编号 测试用例 覆盖路径 预期结果
1 A=3,B=0,X=1 a-c-d X = 1/3
2 A=2,B=1,X=3 a-b-e X = 4

执行用例1 ,断定(A > 1 and B == 0)为真 ,执行X = X / A ,X =1/3;
断定(A == 2 or X > 1)为假,不执行X = X + 1 ; 程序结束code

执行用例2 ,断定(A > 1 and B == 0)为假,不执行X = X / A ;
断定(A == 2 or X > 1)为真,执行X = X + 1 ,X = 4 ; 程序结束blog

从上述用例能够得出:
一、断定覆盖测试用例必定知足语句覆盖
二、断定覆盖只需考虑每一个断定真假,每一个分支执行一次便可utf-8

6、语句覆盖和断定覆盖关系图

7、使用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_decision_coverage_1(self):
        '''
        使用断定覆盖测试 方法demo
        A=3,B=0,X=1
        '''
        X = self.demo(A=3, B=0, X=1)
        expected = 1/3
        self.assertEqual(expected, X)

    def test_demo_with_decision_coverage_2(self):
        '''
        使用断定覆盖测试 方法demo
        A=2,B=1,X=3
        '''
        X = self.demo(A=2, B=1, X=3)
        expected = 4
        self.assertEqual(expected, X)

if __name__ == '__main__':
    unittest.main()
相关文章
相关标签/搜索