三_白盒测试

《软件测试》实验

实验三 白盒测试                                                      

 

实验目的

 

(1)       学习白盒测试方法

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

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

 

实验内容

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

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

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

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

2、 逻辑覆盖的应用

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

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

实验结果

1.

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

 

public class GreatestCommonDivisor {

    public void Gcd(){

       int a = 0;

       System.out.print("请输入m:");

       BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));

       try {

           a=Integer.parseInt(strin.readLine());

       } catch (NumberFormatException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

       int b = 0;

       System.out.print("请输入一个n:");

       BufferedReader strin2=new BufferedReader(new InputStreamReader(System.in));

       try {

           b=Integer.parseInt(strin2.readLine());

       } catch (NumberFormatException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

       int flag = 0;

       for (int i = 1; i <= a; i++) {

           if(a%i==0){

              if(b%i==0){

                  flag=i;}

           }

       }

       System.out.println("最大公约数为"+flag);

    }

    public static void main(String[] args) {

    // TODO Auto-generated method stub

       GreatestCommonDivisor Gcd1 = new GreatestCommonDivisor();

       Gcd1.Gcd();

 

    }

}

2.

语句覆盖:

覆盖路径:abc  测试用例:X= 2 , Y= 2  预期结果:X= 2 , Y= 3

覆盖路径:aeg  测试用例:X= 4 , Y= -1  预期结果:X= 3 , Y= -1

覆盖路径:aef  测试用例:X= 5 , Y= -1  预期结果:X= 6 , Y= -1

分支覆盖:

覆盖路径:abc  测试用例:X= 2 , Y= 2  预期结果:X= 2 , Y= 3

覆盖路径:abd  测试用例:X= 2 , Y= 1  预期结果:X= 2 , Y= 1

覆盖路径:aeg  测试用例:X= 4 , Y= -1  预期结果:X= 3 , Y= -1

覆盖路径:aef  测试用例:X= 5 , Y= -1  预期结果:X= 6 , Y= -1

package com.lin.action;

 

import java.util.Scanner;

 

public class SC {

    public void test2(int X,int Y){

       if(X<4||Y>0){

           if(Y>1){

              Y=Y+1;

           }

       }else{

           if(X>=5){

              X=X-Y;

           }else{

              X=X+Y;

           }

       }

       System.out.println("输出的X为:"+X);

       System.out.println("输出的Y为:"+Y);

    }

    public static void main(String[] args){

       Scanner a=new Scanner(System.in);

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

       int num1=a.nextInt();

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

       int num2=a.nextInt();

       SC test1 = new SC();

       test1.test2(num1,num2);

 

    }

 

}

测试类

package com.lin.test;

 

import static org.junit.Assert.*;

 

import org.junit.Test;

 

import com.lin.action.SC;

 

public class SCTest {

 

    @Test

    public void test() {

       SC test1 = new SC();

       test1.test2(2,2);

       test1.test2(2,1);

       test1.test2(4,-1);

       test1.test2(5,-1);

 

    }

 

}

posted @ 2016-04-15 16:26  Lw_w焚元  阅读(185)  评论(0编辑  收藏  举报