实验目的
(1) 学习白盒测试方法
(2) 掌握语句覆盖、条件覆盖、分支覆盖等逻辑覆盖方法
(3) 掌握Java代码分析工具的使用
实验内容
1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)
l 请用类和方法(写一个求最大公约数的方法)实现,命名时请按照规范命名。
l 在main方式中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。
l 利用FindBugs查找程序中是否存在bug。
demon.java
package com.chen.text;
import java.util.Scanner;
public class demon {
public static void main(String[] args) {
System.out.print("请输入两个正整数X、Y:");
Scanner scaner = new Scanner(System.in);
int X = scaner.nextInt();
int Y = scaner.nextInt();
System.out.println("结果为:" + Num(X, Y));
}
public static int Num(int X,int Y){
if((X<4)||(Y>0)){
if(Y>1){
Y=Y+1;
return Y;
}
if(X>=5){
X=X-Y;
}
else {
X=X+Y;
}
return X;
}
return 0;
}
}
text3.java
package com.chen.text;
import java.util.Scanner;
public class text3 {
public static void main(String[] args) {
System.out.print("请输入两个正整数为:");
Scanner scaner = new Scanner(System.in);
int num1 = scaner.nextInt();
int num2 = scaner.nextInt();
System.out.println("最大公约数为:" + Maxnum(num1, num2));
}
public static int Maxnum(int num1, int num2) {
int i;
if (num1 > num2) {
i = num1 % num2;
while (i != 0) {
num1 = num2;
num2 = i;
i = num1 % num2;
}
return num2;
} else {
i = num2 % num1;
while (i != 0) {
num2 = num1;
num1 = i;
i = num2 % num1;
}
return num1;
}
}
}
2、 逻辑覆盖的应用
l 按照所给的程序流程图,写出Java代码(用类和方法实现)
l 写出语句覆盖、分支覆盖(判定覆盖)的测试用例,以及它所覆盖的路径,用JUnit编写测试用例进行测试
测试用例 路 径
语句覆盖:
X=4,Y=2 abc
X=4,Y=0 aeg
X=5,Y=0 aef
判定覆盖:
X=4,Y=1 abd
X=4,Y=2 abc
X=4,Y=0 aeg
X=5,Y=0 aef