实验目的
(1) 学习白盒测试方法
(2) 掌握语句覆盖、条件覆盖、分支覆盖等逻辑覆盖方法
(3) 掌握Java代码分析工具的使用
实验内容
1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)
请用类和方法(写一个求最大公约数的方法)实现,命名时请按照规范命名。
在main方式中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。
利用FindBugs查找程序中是否存在bug。
代码如下:
1 package com.zhang.text; 2 import java.util.Scanner; 3 4 5 public class text3 { 6 /* 7 * 作者:张伟 8 * 时间:2016-4-2 9 * 内容:输入两个正整数求得最大公约数,并用FindBugs进行测试 10 * 11 * */ 12 13 public static void main(String[] args) { 14 System.out.print("请输入两个正整数分别为:"); 15 Scanner scaner = new Scanner(System.in); //用scaner方法输入两个正整数 16 int num1 = scaner.nextInt(); 17 int num2 = scaner.nextInt(); 18 19 System.out.println("最大公约数为:" + Maxnum(num1, num2)); 20 } 21 22 public static int Maxnum(int num1, int num2) { //用取余法求得最大公约数 23 int i; 24 if (num1 > num2) { 25 i = num1 % num2; 26 while (i != 0) { 27 num1 = num2; 28 num2 = i; 29 i = num1 % num2; 30 } 31 return num2; 32 } else { 33 i = num2 % num1; 34 while (i != 0) { 35 num2 = num1; 36 num1 = i; 37 i = num2 % num1; 38 } 39 return num1; 40 } 41 42 } 43 44 }
这个因为没有错误,所以用FindBugs工具查找不出bug,你可以自己出错,然后用FindBugs去试下。
2、 逻辑覆盖的应用
按照所给的程序流程图,写出Java代码(用类和方法实现)
写出语句覆盖、分支覆盖(判定覆盖)的测试用例,以及它所覆盖的路径,用JUnit编写测试用例进行测试
package com.zhang.text; import java.util.Scanner; public class demon { /* * 作者:张伟 * 时间:2016-4-2 * 内容:语句覆盖、分支覆盖的测试用例,并写出它所覆盖的路径 * * */ public static void main(String[] args) { System.out.print("请输入两个正整数分别为X、Y:"); Scanner scaner = new Scanner(System.in); //用scaner方法输入两个正整数 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; } } /* 测试用例 路 径 语句覆盖:X=4,Y=1 abd 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 */
我已经把语句和判定覆盖发用例和路径一起在代码里啦