• 白盒测试系列(二)-判定覆盖(分支覆盖)


    判定覆盖(分支覆盖)

    一、定义:

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

    二、特点:

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

    三、 程序流程图:

    四、源码:

    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=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 ; 程序结束

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

    从上述用例可以得出:
    1、判定覆盖测试用例一定满足语句覆盖
    2、判定覆盖只需考虑每个判定真假,每个分支执行一次即可

    六、语句覆盖和判定覆盖关系图

    七、使用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()
  • 相关阅读:
    WPF学习之路(八)页面
    面试题整理:C#(一)
    [转载] Tomcat架构分析
    [转载] ConcurrentHashMap原理分析
    [转载] Java并发编程:Lock
    [转载] KAFKA分布式消息系统
    [转载] Java并发编程:Callable、Future和FutureTask
    [转载] Java线程池框架源码分析
    [转载] 红黑树(Red Black Tree)- 对于 JDK TreeMap的实现
    [转载] RED-BLACK(红黑)树的实现TreeMap源码阅读
  • 原文地址:https://www.cnblogs.com/mmz-tester/p/13201700.html
Copyright © 2020-2023  润新知