首页 > 其他 > 详细

白盒测试系列(三)条件覆盖

时间:2020-06-28 11:40:40      阅读:92      评论:0      收藏:0      [点我收藏+]

条件覆盖

一、定义:

程序各判定中的每个条件获得各种可能的取值至少满足一次

二、特点:

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

白盒测试系列(三)条件覆盖

原文:https://www.cnblogs.com/mmz-tester/p/13201734.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!