• 白盒测试系列(四)条件判定覆盖


    条件判定覆盖

    一、定义:

    程序中每个判定至少有一次为真值,有一次为假值,使得程序中每个分支至少执行一次,
    且使得各判定中的每个条件获得各种可能的取值至少满足一次。

    二、特点:

    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-c-e (A>1), (B== 0), (A==2), (X>1) X = 3
    2 A=1,B=1,X=1 a-b-d (A<=1), (B!=0), (A!=2), (X<1) 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 = 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_and_decision_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_and_decision_coverage_2(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()
  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/mmz-tester/p/13201761.html
Copyright © 2020-2023  润新知