实验三 白盒测试
《软件测试》实验
实验三 白盒测试
实验目的
(1) 学习白盒测试方法
(2) 掌握语句覆盖、条件覆盖、分支覆盖等逻辑覆盖方法
(3) 掌握Java代码分析工具的使用
实验内容
1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)
l 请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。
l 在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。
l 利用FindBugs查找程序中是否存在bug。
2、 逻辑覆盖的应用
l 按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径
l 附加题:根据程序流程图,写出代码(定义一个类和方法来实现),用JUnit生成单元测试,并利用前面设计的测试用例进行测试。
实验结果:
1、
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.print("请输入第一个数字num1:");
Scanner scan=new Scanner(System.in);
String str1=scan.nextLine();
int num1=Integer.parseInt(str1);
System.out.print("请输入第二个数字num2:");
String str2=scan.nextLine();
int num2=Integer.parseInt(str2);
int maxMultiple = calcMaxSubmultiple(num1, num2);
System.out.println(maxMultiple);;
}
private static int calcMaxSubmultiple(int num1, int num2) {
int min = Math.min(num1, num2);
int maxSubmultiple = 1;
for(int i = min; i >= 1; i--){
if(num1 % i == 0 && num2 % i == 0){
maxSubmultiple = i;
break;
}
}
return maxSubmultiple;
}
}
2、
import java.util.Scanner;
public class Demo {
public static void mian(String[] args){
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int y = scanner.nextInt();
if (x<4 || y>0) {
if (y>1) {
y=y+1;
}
}else {
if (x>=5) {
x=x-y;
}else {
x=x+y;
}
}
}
}
语句覆盖:
测试用例(语句覆盖):
测试用例:1)X=6,Y=2 所覆盖的路径:abc
2)X=6,Y=0 aef
3)X=4,Y=0 aeg
x |
y |
结果 |
路径 |
3 |
2 |
Y+1=3 x=3 |
abd |
3 |
1 |
不变 |
abc |
6 |
-1 |
x-y=7 |
aeg |
4 |
-1 |
X+y=3 |
aef |
测试用例(分支覆盖):
测试用例: 1)(TF) X=3,Y=0 所覆盖的路径:abd
2)(FT) X=6,Y=0 aef
X<4 or y>0 |
x>5 |
Y>1 |
用例 |
结果 |
路径 |
T |
F |
|
X=3,y=1 |
不变 |
abc |
T |
T |
|
X=3,y=2 |
Y+1=3 x=3 |
adb |
F |
|
F |
X=6,y=-1 |
x-y=7 |
aeg |
F |
|
T |
X=4,y=-1 |
X+y=3 |
aef |