实验三 白盒测试

实验目的

(1) 学习白盒测试方法
(2) 掌握语句覆盖、条件覆盖、分支覆盖等逻辑覆盖方法
(3) 掌握Java代码分析工具的使用

实验内容

1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现)
 请用类和方法(写一个求最大公约数的方法)实现,命名时请按照规范命名。
 在main方式中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。
 利用FindBugs查找程序中是否存在bug。 

代码如下:

 1 package com.zhang.text;
 2 import java.util.Scanner;
 3 
 4 
 5 public class text3 {
 6     /*
 7      * 作者:张伟
 8      * 时间:2016-4-2
 9      * 内容:输入两个正整数求得最大公约数,并用FindBugs进行测试
10      * 
11      * */
12 
13     public static void main(String[] args) {
14         System.out.print("请输入两个正整数分别为:");      
15         Scanner scaner = new Scanner(System.in);    //用scaner方法输入两个正整数
16         int num1 = scaner.nextInt();
17         int num2 = scaner.nextInt();
18         
19         System.out.println("最大公约数为:" + Maxnum(num1, num2));
20             }
21 
22             public static int Maxnum(int num1, int num2) {      //用取余法求得最大公约数
23                 int i;
24                 if (num1 > num2) {
25                     i = num1 % num2;
26                     while (i != 0) {
27                         num1 = num2;
28                         num2 = i;
29                         i = num1 % num2;
30                     }
31                     return num2;
32                 } else {
33                     i = num2 % num1;
34                     while (i != 0) {
35                         num2 = num1;
36                         num1 = i;
37                         i = num2 % num1;
38                     }
39                     return num1;
40                 }
41 
42             }
43 
44     }

这个因为没有错误,所以用FindBugs工具查找不出bug,你可以自己出错,然后用FindBugs去试下。

2、 逻辑覆盖的应用
 按照所给的程序流程图,写出Java代码(用类和方法实现)
 写出语句覆盖、分支覆盖(判定覆盖)的测试用例,以及它所覆盖的路径,用JUnit编写测试用例进行测试

 

package com.zhang.text;

import java.util.Scanner;

public class demon {
        /*
         * 作者:张伟
         * 时间:2016-4-2
         * 内容:语句覆盖、分支覆盖的测试用例,并写出它所覆盖的路径
         * 
         * */

        public static void main(String[] args) {
            System.out.print("请输入两个正整数分别为X、Y:");      
            Scanner scaner = new Scanner(System.in);    //用scaner方法输入两个正整数
            int X = scaner.nextInt();
            int Y = scaner.nextInt();            
            System.out.println("结果为:" + Num(X, Y));
        }
        
            public static int Num(int X,int Y){
                if((X<4)||(Y>0)){
                    if(Y>1){
                        Y=Y+1;
                        return Y;
                        }
                    
                    if(X>=5){
                        X=X-Y;
                    }
                    else {
                        X=X+Y;
                    }
                    return X;
                    }
                return 0;
                            
                }
            
        }

        /*
                           测试用例        路 径
         语句覆盖:X=4,Y=1    abd
               
                 X=4,Y=0    aeg
                 X=5,Y=0    aef
                 
        判定覆盖:X=4,Y=1    abd
                 X=4,Y=2    abc
                 X=4,Y=0    aeg
                 X=5,Y=0    aef         
  
         */

我已经把语句和判定覆盖发用例和路径一起在代码里啦

原文地址:https://www.cnblogs.com/zhangwei123/p/5396704.html