实验三 白盒测试

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

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

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

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

1.求最大公约数:

package cn.wang.cd;

import java.util.Scanner;

public class Test1 {

/**
* 求最大公约数
* 2016/04/01 王鹏鑫
* x为第一个数
* y为第二个数
* @param args
*/

public static int gcd(int m,int n) {

//定义求最大公约数的方法

 while (true) {

if ((m = m % n) == 0)

      return n;

if ((n = n % m) == 0)

  return m;

 }

}

public static void main(String[] args) {

Scanner cin=new Scanner(System.in);

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

int a=cin.nextInt();

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

int b=cin.nextInt();

int c = gcd(a,b);  //调用方法

System.out.println("两数的最大公约数为:" + c);

}

}

bug查找:

未出现bug.

总结:fingbug是通过分析或检查源程序的语法、结构、过程、接等来检查程序的正确性是一种静态的代码检测工具,先于动态测试。

2、 逻辑覆盖的应用

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

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

(1)语句覆盖:

测试路径:abc         aeg             aef

测试用例:

          X=1        X=5            X=4

          Y=2        Y=0            Y=0

         X=2         Y=3                       预期结果为x=2 ,y=4

分支覆盖:

测试路径:abc         abd             aeg          aef

测试用例:

          X=1        X=1             X=5        X=4

          Y=2        Y=1             Y=0        Y=0

(2)

方法:

 /**

 *

 * 2016/04/06 王鹏鑫

 * @param args

 */

package cn.wang.cd;

import java.util.Scanner;

public class Test3 {

    public void run(){

Scanner cin=new Scanner(System.in);

System.out.println("请输入X的值:");

int x=cin.nextInt();

System.out.println("请输入Y的值:");

int y=cin.nextInt();

 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);

}

 else{

    x = x+y;

        System.out.println("x的值为:"+x+" "+"y的值为:"+y);

 }

 }

}

}

Main函数:

 package cn.wang.cd;

import java.util.Scanner;

public class Test2 {

public static void main(String[] args) {

// TODO Auto-generated method stub

Test3 test3 = new Test3();

test3.run();

}

}

单元测试:

package cn.wang.cd;

import static org.junit.Assert.*;

public class Test {

@org.junit.Test

public void test() {

Test3 test3 = new Test3();

test3.run();

}

}

运行结果;

单元测试:

总结:分支覆盖的强度比语句覆盖强,语句覆盖不能涵盖所有的分支。

原文地址:https://www.cnblogs.com/wpxBlog/p/5394974.html