判定覆盖(分支覆盖)

判定覆盖(分支覆盖)

一、定义:

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

二、特点:

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

猜你喜欢

转载自www.cnblogs.com/mmz-tester/p/13201700.html
今日推荐