实验三 白盒测试 您所在的位置:网站首页 最大公约数的代码 实验三 白盒测试

实验三 白盒测试

2024-07-14 20:02| 来源: 网络整理| 查看: 265

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(x0){

 if(y>1){

 y=y+1;

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

 }

 else{

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

 }

 }

 else{

 if(x>=5){

x = x-y;

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

}

 else{

    x = x+y;

        System.out.println("x的值为:"+x+"\n"+"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();

}

}

运行结果;

单元测试:

 

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有