实验三 白盒测试
实验目的
(1) 学习白盒测试方法
(2) 掌握语句覆盖、条件覆盖、分支覆盖等逻辑覆盖方法
(3) 掌握Java代码分析工具的使用
实验内容
1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)
l 请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。
l 在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。
l 利用FindBugs查找程序中是否存在bug。
2、 逻辑覆盖的应用
l 按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径
l 附加题:根据程序流程图,写出代码(定义一个类和方法来实现),用JUnit生成单元测试,并利用前面设计的测试用例进行测试。
第一题:
1.
代码:
package cn.lsw.demo;
import java.util.*;
public class VV {
/*求最大公约数
*林少渭
*3137102232
* 软金2班
* 2016.4.1
* */
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);// 接收控制台输入的信息
System.out.print("请输入第一个整数:");
int num1 = scan.nextInt(); // 取出控制台输入的信息
System.out.print("请输入第二个整数:");
int num2 = scan.nextInt(); // 取出控制台输入的信息
System.out.println(maxCommonDivisor(num1, num2));// 调用maxCommonDivisor()方法
}
public static int maxCommonDivisor(int m, int n) {
if (m < n) {// 保证m>n,若m<n,则进行数据交换
int temp = m;
m = n;
n = temp;
}
while (m % n != 0) {// 在余数不能为0时,进行循环
int temp = m % n;
m = n;
n = temp;
}
return n;// 返回最大公约数
}
}
(工科楼做的忘记截图,此图为课外补充)
第二题:
代码:
package cn.lsw.demo;
import java.util.*;
public class VV2 {
/* *林少渭
*3137102232
* 软金2班
* 2016.4.1
* */
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//接收控制台输入的信息
System.out.print("请输入X:");
int x= scanner.nextInt(); // 取出控制台输入的信息
System.out.print("请输入Y:");
int y = scanner.nextInt(); // 取出控制台输入的信息
System.out.print("Y:");
System.out.println(xy(x, y));// /*输入X与Y*/
System.out.print("X:");
System.out.println(xy1(x, y));
}
protected static int xy(int n, int m) {
// TODO Auto-generated method stub
if(n<4 ||m>0){/*判断X与Y*/
if(m>1){
m=m+1;
}
}
else{
if(n>=5){
n=n-m;
}
else{
n=n+m;
}
}
return m;
}
protected static int xy1(int n, int m) {
// TODO Auto-generated method stub
if(n<4 ||m>0){/*判断X与Y*/
if(m>1){
m=m+1;
}
}
else{
if(n>=5){
n=n-m;
}
else{
n=n+m;
}
}
return n;
}
}
语句覆盖:
X =5 y =0 路径aef
X=3 y=1 路径abd
X=1 y=2 路径abc
分支覆盖:
X=5/4 y=1 路径aef/aeg
X=3 y=1/3 路径abd/abc
全部覆盖路径:abd abc aef aeg
总结
开始到现在第三次作业已经可以再课上几乎完全完成,但是依然有许多代码技术上的不足。个人认为自己应当多多学习JAVA,以前没有学会的在机械来的时间里好好学习学懂。 2016.4.11