实验三 白盒测试

实验目的

(1) 学习白盒测试方法

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

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

实验内容

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

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

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

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

2、 逻辑覆盖的应用

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

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

 第一题:

1.

代码:

package cn.lsw.demo;

import java.util.*;

public class VV {

/*求最大公约数

 *林少渭

 *3137102232

 * 软金2

 * 2016.4.1

 * */

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);// 接收控制台输入的信息

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

int num1 = scan.nextInt(); // 取出控制台输入的信息

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

int num2 = scan.nextInt(); // 取出控制台输入的信息

System.out.println(maxCommonDivisor(num1, num2));// 调用maxCommonDivisor()方法

}

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

if (m < n) {// 保证m>n,m<n,则进行数据交换

int temp = m;

m = n;

n = temp;

}

while (m % n != 0) {// 在余数不能为0,进行循环

int temp = m % n;

m = n;

n = temp;

}

return n;// 返回最大公约数

}

 }

(工科楼做的忘记截图,此图为课外补充)

第二题:

代码:

package cn.lsw.demo;

import java.util.*;

public class VV2 {

/* *林少渭

 *3137102232

 * 软金2

 * 2016.4.1

 * */

public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);//接收控制台输入的信息

System.out.print("请输入X");

int x= scanner.nextInt(); // 取出控制台输入的信息

System.out.print("请输入Y");

int y = scanner.nextInt(); // 取出控制台输入的信息

System.out.print("Y");

System.out.println(xy(x, y));// /*输入XY*/

System.out.print("X");

System.out.println(xy1(x, y));

}

    protected static int xy(int n, int m) {

// TODO Auto-generated method stub

  if(n<4 ||m>0){/*判断XY*/

           if(m>1){

              m=m+1;

           }

           }

       else{

           if(n>=5){

              n=n-m;

           }

           else{

             n=n+m;

        }

       }

return m;

}  

    protected static int xy1(int n, int m) {

// TODO Auto-generated method stub

  if(n<4 ||m>0){/*判断XY*/

           if(m>1){

              m=m+1;

           }

           }

       else{

           if(n>=5){

              n=n-m;

           }

           else{

             n=n+m;

        }

       }

return n;

}

}

 

 

语句覆盖:

X =5         y =0      路径aef

X=3          y=1       路径abd

X=1          y=2       路径abc

分支覆盖:

X=5/4        y=1       路径aef/aeg

X=3          y=1/3     路径abd/abc

全部覆盖路径:abd abc aef aeg

 

总结

开始到现在第三次作业已经可以再课上几乎完全完成,但是依然有许多代码技术上的不足。个人认为自己应当多多学习JAVA,以前没有学会的在机械来的时间里好好学习学懂。     2016.4.11

原文地址:https://www.cnblogs.com/GodEaterV/p/5377939.html