《软件测试》实验

实验三 白盒测试                                                       

 

实验目的

 

(1) 学习白盒测试方法

(2) 掌握语句覆盖、条件覆盖、分支覆盖等逻辑覆盖方法

(3) 掌握Java代码分析工具的使用

 

实验内容

1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)

	import java.util.*; 

	/*求最大公约数*/ 
	public class ZuiDaGongYueShu { 

	public static void main(String[] args) { 
		gys();
	} 
	public static void gys(){
		Scanner scan = new Scanner(System.in);// 接收控制台输入的信息 
		System.out.print("请输入第一个整数:"); 
		int num1 = scan.nextInt(); // 取出控制台输入的信息 
		if(num1<=0){
			System.out.println("您输入的数字有误,请重新输入!");
			gys();
			System.exit(0);
		}
		System.out.print("请输入第二个整数:"); 
		int num2 = scan.nextInt(); // 取出控制台输入的信息 
		if(num2<=0){
			System.out.println("您输入的数字有误,请重新输入!");
			gys();
			System.exit(0);
		}	
		System.out.print("最大公约数为:");
		System.out.println(maxgongyueshu(num1, num2));// 调用maxCommonDivisor()方法  
	}
	// 递归法求最大公约数 
	public static int maxgongyueshu(int m, int n) { 
		if (m < n) {// 保证m>n,若m<n,则进行数据交换 
			int temp = m; 	
			m = n; 
			n = temp; 
		} 
		if (m % n == 0) {// 若余数为0,返回最大公约数 
			return n; 
		} else { // 否则,进行递归,把n赋给m,把余数赋给n 
	
			return maxgongyueshu(n, m % n); 
		} 
	} 

	// 循环法求最大公约数 
	public static int maxCommonDivisor1(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;// 返回最大公约数 
	}
 }

  

l 请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。

l 在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。

l 利用FindBugs查找程序中是否存在bug。