白盒测试系列(一) 语句覆盖
前言
最近发现身边测试的同学都不太了解/理解白盒测试,网上的资料又是千篇一律(互抄),不易理解。所以想做一个更容易让测试同学学习的白盒测试教程。
语句覆盖
一、定义:
程序中每一个语句至少能被执行一次
二、特点:
1、程序中每一个语句执行一次
2、对程序执行逻辑的覆盖率低,属于最弱的覆盖方式
3、无需测试程序的分支情况
4、无需测试程序分支判断的输入值以及输入值的组合
5、无需测试程序执行的不同路径
三、程序流程图
四、源代码
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('X:', X)
print('结束')
五、语句覆盖 用例设计
用例编号 | 测试用例 | 覆盖路径 | 预期结果 |
---|---|---|---|
1 | A=2,B=0,X=3 | a-c-e | X=2.5 |
执行编号1 用例,程序从上往下执行,每一行代码都会运行 —— 语句覆盖
执行结果:X=2.5
六、使用Python Unittest 实现上述用例
test_demo.py
# 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_statement_coverage(self):
'''
使用语句覆盖测试 方法demo
输入:A=2,B=0,X=3
预期结果:X = 2.5
'''
X = self.demo(A=2, B=0, X=3)
self.assertEqual(2.5, X)
if __name__ == '__main__':
unittest.main()