实验三

                                                    

 实验目的

 

(1) 学习白盒测试方法

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

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

 

实验内容

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

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

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

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

2、 逻辑覆盖的应用

l 按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径

l 附加题:根据程序流程图,写出代码(定义一个类和方法来实现),用JUnit生成单元测试,并利用前面设计的测试用例进行测试。

   

 

 

 

   1import java.util.Scanner;

public class Demo{

public int getGCDBySub(int x,int y){

 

while(x!=y){

if(x>y){

x=x-y;

    }else{

     y=y-x;

    }

}

return x;

}

 public int getGCDByDiv(int x,int y){

 for(int i=x%y;i!=0;)  

    {  

        x=y;  

        y=i;  

        i=x%y;  

    }  

    return y;

}

public static void main(String[] args) {

boolean isInputNum=true;

int num1=1;

int num2=1;

while(isInputNum){

Scanner scanner = new Scanner(System.in);

System.out.print("请输入第一个整数:");

 

   try{

   num1 = scanner.nextInt();

   }catch(java.util.InputMismatchException e){

   System.out.println("输入的不是整数!");

   continue;

   }

      if(num1<=0){

   System.out.println("0和负数不参与求最大公约数");

   continue;

   }

   isInputNum=false;

}

 

isInputNum=true;

while(isInputNum){

Scanner scanner = new Scanner(System.in);

System.out.print("请输入第二个整数:");

 

   try{

   num2 = scanner.nextInt();

   }catch(java.util.InputMismatchException e){

   System.out.println("输入的不是整数,请再次输入:");

   continue;

   }

   

   if(num2<=0){

   System.out.println("0和负数不参与求最大公约数");

   continue;

   }

   isInputNum=false;

}

 

NumberOperation numOperation=new NumberOperation();

System.out.println("它们的最大公约数是:"+numOperation.getGCDBySub(num1, num2));

System.out.println("它们的最大公约数是:"+numOperation.getGCDByDiv(num1, num2));

 

}

 

}

 

 

解:

语句覆盖:

覆盖路径:abc    测试用例:x=2,y=2    预期结果:x=2,y=3

覆盖路径:aeg    测试用例:x=4,y=-1  预期结果:x=3,y=-1

覆盖路径:aef    测试用例:x=5,y=-1   预期结果:x=6,y=-1

 

分支覆盖:

覆盖路径:abc    测试用例:x=2,y=2    预期结果:x=2,y=3

覆盖路径:abd    测试用例:x=2,y=1    预期结果:x=2,y=1

覆盖路径:aeg    测试用例:x=4,y=-1  预期结果:x=3,y=-1

覆盖路径:aef    测试用例:x=5,y=-1   预期结果:x=6,y=-1

 

 

posted @ 2016-05-13 12:00  指缝间的阳光~  阅读(131)  评论(0编辑  收藏  举报