白盒测试之路径测试练习
1 class sjx():
#输入三条边,进行判断,是否为等边,等腰及普通三角形,如果不是输出不能组成三角形,用函数实现
3 def triangle(self,a,b,c):#在一个类中定义函数,self是固定存在的
4 if(a<b+c)and (b<a+c)and(c<a+b):
5 istriangle=True
6 else:
7 istriangle=False
8 if(istriangle==True):
9 if(a==b)or(b==c)or(a==b):
10 if(a==b)and(b==c):
11 print("等边三角形")
12 return 1
13 else:
14 print("等腰三角形")
15 return 2
16 else:
17 print("普通三角形")
18 return 3
19 else:
20 print("非三角形")
21 return 4
if __name__ == '__main__':
s=sjx()
s.triangle(1,2,3)
根据案例画出数据流图:
圈的复杂度:5
通过上图,我们发现节点8的入度和初度均为2,因此我们需要考虑将此节点进行简化,或者去掉这个节点。为什么我们需要关注这个节点呢?p{4 7 8 9}和p{4 5 8 20 21}是两个不合理的路径,因为5能执行 20 21一定不执行。所以我们需要去掉这个节点。
圈的复杂度:4
下面,我们根据数据流图去设计测试用例:
p1{4 5 8 9 10 11 12}
p2{4 5 8 9 10 14 15}
p3{4 5 8 9 17 18}
p4{4 7 8 20 21}
用例ID | a | b | c | 预期输出 | 实际输出 | 覆盖的路径 |
---|---|---|---|---|---|---|
1 | 5 | 5 | 5 | 等边三角形 | 等边三角形 | p1 |
2 | 5 | 5 | 6 | 等腰三角形 | 等腰三角形 | p2 |
3 | 3 | 4 | 5 | 普通三角形 | 普通三角形 | p3 |
4 | 1 | 2 | 3 | 非三角形 | 非三角形 | p4 |
在最后,我们也可以加上测试程序。测试程序可以按照下面的思路写,这里有一个java程序,可以进行参考。
public class Calculate {
//开发人员代码
public static void main(String[] args) {
Calculate ca = new Calculate();
int res1 = ca.jia(3, 4);
int res2 = ca.jian(5, 2);
System.out.println(res1);
System.out.println(res2);
}
public int jia(int a,int b){
int result = a + b;
return result;
}
public int jian(int a,int b){
int result = a - b;
return result;
}
//测试人员代码
@Test
public void test1(){
System.out.println("开始测试");
int real = jia(3, 4);
int imagine = 3 + 4;
if(real == imagine){
System.out.println("3 + 4 = 7 测试成功 程序无误");
}else{
System.out.println("3 + 4 = 7 测试失败 程序有误");
}
int rea2 = jian(5, 2);
int imagine2 = 5 - 2;
if(rea2 == imagine2){
System.out.println("5 - 2 = 3 测试成功 程序无误");
}else{
System.out.println("5 - 2 = 3 测试失败 程序有误");
}
System.out.println("结束测试");
}
}
测试结果:
开始测试
3 + 4 = 7 测试成功 程序无误
5 - 2 = 3 测试成功 程序无误
结束测试