• 实验三 白盒测试


    实验目的

     

    (1) 学习白盒测试方法

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

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

     

    实验内容

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

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

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

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

     

    package cn.lq.com;
    
    import java.io.*;
    import java.util.*;
    
    class Demo {
        public static void main(String args[]) throws Exception {
            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);
        }
        public static int gcd(int a, int b) {
            while (true) {
                if ((a = a % b) == 0)
                    return b;
                if ((b = b % a) == 0)
                    return a;
            }
        }
        
    }

    没有语法错误

    2、 逻辑覆盖的应用

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

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

    package cn.lq.com;
    
    import java.util.Scanner;
    
    public class Demo {
    
    /**
     * @param args
     */
    
    
    public static  void t(float x,float y){
    System.out.print("走过的路径为a");
    if(x<4||y>0){
    System.out.print("b");
    if(y>1){
    System.out.println("c");
    y=y+1;
    System.out.println("x="+x);
    System.out.println("y="+y);
    }
    else{
    System.out.println("d");
    System.out.println("结束判断");
    System.out.println("x="+x);
    System.out.println("y="+y);
    }
    }
    else{
    System.out.print("e");
    if(x>=5){
    System.out.println("f");
    x=x-y;
    System.out.println("x="+x);
    System.out.println("y="+y);
    }
    else{
    System.out.println("g");
    x=x+y;
    System.out.println("x="+x);
    System.out.println("y="+y);
    }
    }
    }
    
    }

    测试类

    package cn.lq.com;
    
    import static org.junit.Assert.*;
    
    import org.junit.Test;
    
    public class DemoTest {
    
        @Test
    public void test() {
    float x = 2;
    float y = 1;
    System.out.println("测试的两个数为x="+x+" y="+y+"");
    Demo.t(x, y);
    }
    
    
    }

    语句覆盖

    测试用例

    覆盖用例

    结果

    X=4 Y=0

    aeg

    X=4 y=0

    X=5 y=0

    aef

    X=5 y=0

    X=2 y=2

    adc

    X=2 Y=3

    分支覆盖

    测试用例

    覆盖用例

    结果

    X=4 Y=0

    aeg

    X=4 y=0

    X=5 y=0

    aef

    X=5 y=0

    X=2 y=2

    adc

    X=2 Y=3

    X=2 Y=1

    abd

    X=2 Y=1

    我们测试语句覆盖的截图

     

     

     

  • 相关阅读:
    pthread_join()
    linux nc
    gcc编译线程程序需带-lpthread选项(否则出错:undefined reference to `pthread_create')
    Makefile中的$(addprefix),添加前缀,指定目标生成目录
    makefile里的Phony
    鱼书学习笔记:激活函数层的实现
    鱼书学习笔记:输出层
    鱼书学习笔记:参数优化
    鱼书学习笔记:利用numpy实现三层神经网络
    鱼书学习笔记:损失函数
  • 原文地址:https://www.cnblogs.com/mumudake/p/5393607.html
Copyright © 2020-2023  润新知