• 实验三 白盒测试


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

    }

    }

    运行结果;

    单元测试:

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

  • 相关阅读:
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    助教学期总结
    第十六周助教总结
    C语言I博客作业11
    第十五周助教总结
    C语言I博客作业10
    第十四周助教总结
    C语言寒假大作战03
  • 原文地址:https://www.cnblogs.com/wpxBlog/p/5394974.html
Copyright © 2020-2023  润新知