1. 什么是单元测试策略?
概念:针对单元测试选择测试的一种方式
2. 单元测试策略-方式
1. 自上向下
2. 自下向上
3. 孤立策略
2.1 策略 自上向下
方式:从最上层函数往下开始逐层测试
案例1
两个函数(求和、求减),求和函数内调用求减函数;
案例1分析
1. 编写求和函数
2. 编写求减函数
3. 在求和函数内调用求减函数
4. 调用求和函数
代码:
# 定义求和函数
def sum(a,b):
print(a+b)
sub(a,b)
# 打桩
def sub(a,b):
return 20
# # 定义求减函数
# def sub(a,b):
# print(a-b)
if __name__ == '__main__':
sum(10,5)
案例1 问题
1. 我们只想测试求和函数不测求减函数该如何做?
答:打桩
概念:打桩就是模拟编写一个我们需要引用的函数
提示:一般我们只模拟写个函数名,直接返回相应的结果即可
示例:
def fun_1(self):
return true
自上向下-总结:
1. 方式
2. 打桩(模拟调用的函数)
3. 缺点(成本高)
2.2 策略 自下向上
方式:从最底层函数往上开始逐层测试
自下向上-总结:
1. 方式
2. 缺点(周期长)
2.3 策略 孤立策略
方式:选择需要进行测试的函数进行测试
孤立策略-总结:
1. 方式
2. 【推荐使用】
3. 优点:选择重要的代码进行测试
3. 测试策略实现
3.1 什么是测试策略实现?
概念:把我们选定的代码,转向流程图、流图及用例的过程
3.2 测试策略实现如何操作?
1. 将测试代码转换成流程图
2. 根据流程图转换为流图
案例2
函数(test001)判断参数a,如果a>0,输入语句1;
代码:
def test001(a):
if a>0:
print("语句1被执行")
if __name__ == '__main__':
test001(0)
案例2 流程图
什么是流图?
概念:表达程序业务逻辑的复杂度一种示意图
构成:
1) 圈:判断条件、语句块(一条或多条语句)两者都圈
2) 线:箭头指向的线,用来连接圈和圈的指向
流图的目的?
1) 确定单元的复杂度级别
2) 确定测试用例
备注: 路径的个数为复杂度的级别(一条路径为1个复杂度级别)
案例2 流图
测试用例 模板
案例2 总结
1. 路径:2 (1-2-3,1-3)
2. 复杂度:2
3. 用例个数:2
案例3
函数(test002)判断参数a,b;如果a>0 and b<10 输入语句1;否则输入语句2;
代码
# 函数(test002)判断参数a,b;如果a>0 and b<10 输入语句1;否则输入语句2;
def test002(a,b):
if a>0 and b<10:
print("语句1被执行")
else:
print("语句2被执行")
if __name__ == '__main__':
test002(-1,1)
流程图和流图
案例4
输入两个数,如果两个数同时为大于0小于10,那么就进行求和运算;否则判断两个数是否同时大于等于10小于20那么
就进行求减运算,否则输入错误;
代码:
# 输入两个数,如果两个数同时为大于0小于10,那么就进行求和运算;否则判断两个数是否同时大于等于10小于20那么
# 就进行求减运算,否则输入错误
a=int(input("请输入第一个数:"))
b=int(input("请输入第二个数:"))
if a>0 and b>0 and a<10 and b<10:
print(a+b)
elif a>=10 and b>=10 and a<20 and b<20:
print(a-b)
else:
print("输入错误")
流程图与流图
案例5 while循环
使用while循环求1-10相加之和;
代码:
sum=0
i=1
while i<=10:
sum+=i
i+=1
if __name__ == '__main__':
print(sum)
流程图和流图
案例6
提示输入三角形三条边,进行判断三角形类型(等边、等腰、普通)并进行提示,否则提示不是三角形;
提示:
三角形:两边之和大于第三边;
等腰三角形:两条边相等
等边三角形:三条边相等
代码:
a=int(input("请输入第一条边:"))
b=int(input("请输入第二条边:"))
c=int(input("请输入第三条边:"))
# def sjx(a,b,c):
# 首先判断是否为三角形
if a+b>c and a+c>b and b+c>a:
if a==b and b==c:
print("等边三角形")
elif a==b or b==c or a==c:
print("等腰三角形")
else:
print("普通三角形")
else:
print("不是三角形")