《软件测试》实验三 白盒测试

1、 计算整数X和整数Y的最大公约数

请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。利用FindBugs查找程序中是否存在bug。

import java.util.Scanner; 

public class Demo {

    public void compare(int a,int b){

         int i = a>b?a:b;

         for(;i>0;i--){

             if(a%i==0&&b%i==0){

                 System.out.println("a、b的最大公约数为"+i);

                 break;

             }

         }

         return;

    }

    public static void main(String[] arg){

         Demo demo = new Demo();

         System.out.println("请输入a:");

         Scanner num1 = new Scanner(System.in);

         int a=num1.nextInt();

         System.out.println("请输入b:");

         Scanner num2 = new Scanner(System.in);

         int b=num2.nextInt();

         demo.compare(a, b);

    }

}

2、 逻辑覆盖的应用

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

语句覆盖:

X Y 路径
3 2 abc
5 0 aef
4 0 aeg

分支覆盖:

X Y 路径
3 2 abc
3 1 abd
5 0 aef
4 0 aeg

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

public class Demo {

    public void demo(int x,int y){

         if(x<4||y>0){

             if(y>1){

                 y=y+1;

                 System.out.println("X="+x+",Y="+y);

             }          

             else{

                 System.out.println("X="+x+",Y="+y);

             }

         }

         else{

             if(x>=5){

                 x=x-y;

                 System.out.println("X="+x+",Y="+y);

             }

             x=x+y;

             System.out.println("X="+x+",Y="+y);

         }

    }  

}

测试用例:

import static org.junit.Assert.*; 

import org.junit.Test; 

public class DemoTest { 

    public static void main(String[] args){

         Demo demo =new Demo();

         demo.demo(3,2);

         demo.demo(3,1);

         demo.demo(5,0);

         demo.demo(4,0);

    }

}

posted @ 2016-04-06 13:49  SsAir  阅读(2742)  评论(1编辑  收藏  举报