实验三 白盒测试

实验目的

(1) 学习白盒测试方法

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

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

实验内容

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

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

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

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

import java.util.Scanner;

public class Common{

//求最大公约数

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

//辗转相除是用大的除以小的。如果n<m,第一次相当nm值交换

while(n%m!=0){

int temp=n%m;

n=m;

m=temp;

}

return m;

}

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

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

int n=sc.nextInt();

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

int m=sc.nextInt();

System.out.println("最大公约数为:"+commonDivisor(n,m));

}

}

 

弄错后

 

2、 逻辑覆盖的应用

l 按照所给的程序流程图,写出Java代码(用类和方法实现)

l 写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径,用JUnit编写测试用例进行测试

 

import java.util.Scanner;

public class Test1 {

/**

 * @param args

 */

public  void test() {

Scanner sc=new Scanner(System.in);

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

int  x=sc.nextInt();

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

 int y=sc.nextInt();

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

if(y>1){

y=y+x;

}

else{}

}

else{

if(x>=5){

x=x-y;

}

else{

x=x+y;

}

}

System.out.println("x="+x);

System.out.println("y="+y);

}

}

 

 

测试类

 

import static org.junit.Assert.*;

 

import org.junit.Test;

 

 

public class Test1Test {

 

 Test1 test1 =new Test1();

@Test

public void test() {

 

  test1.test();

   

}

 

 

}

 

 

 

 

 

语句覆盖:

X=4,y=0  路径:aeg

X=5,y=0  路径:aef

X=4,y=2  路径:abc

分支覆盖:

X=4,y=0  路径:aeg

X=5,y=0  路径:aef

X=4,y=2  路径:abc

X=3,y=1  路径:abd

 

原文地址:https://www.cnblogs.com/bushi2b/p/5398648.html