ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-06-28 11:08:50  阅读:342  来源: 互联网

标签:满足条件 覆盖 白盒 demo self 用例 判定 测试


条件判定覆盖

一、定义:

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

二、特点:

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()

标签:满足条件,覆盖,白盒,demo,self,用例,判定,测试
来源: https://www.cnblogs.com/mmz-tester/p/13201761.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有