实验三 白盒测试 | 您所在的位置:网站首页 › 最大公约数的代码 › 实验三 白盒测试 |
1、 计算整数X和整数Y的最大公约数。(不允许采用课堂上所用的方式实现) l 请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名。 l 在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数。 l 利用FindBugs查找程序中是否存在bug。 1.求最大公约数: package cn.wang.cd; import java.util.Scanner; public class Test1 {
/** * 求最大公约数 * 2016/04/01 王鹏鑫 * x为第一个数 * y为第二个数 * @param args */ public static int gcd(int m,int n) { //定义求最大公约数的方法 while (true) { if ((m = m % n) == 0) return n; if ((n = n % m) == 0) return m; } }
public static void main(String[] args) { 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); } } bug查找: 未出现bug. 总结:fingbug是通过分析或检查源程序的语法、结构、过程、接等来检查程序的正确性是一种静态的代码检测工具,先于动态测试。
2、 逻辑覆盖的应用 l 按照所给的程序流程图,分别写出语句覆盖、分支覆盖的测试用例,以及它所覆盖的路径 l 附加题:根据程序流程图,写出代码(定义一个类和方法来实现),用JUnit生成单元测试,并利用前面设计的测试用例进行测试。 (1)语句覆盖: 测试路径:abc aeg aef 测试用例: X=1 X=5 X=4 Y=2 Y=0 Y=0 X=2 Y=3 预期结果为x=2 ,y=4 分支覆盖: 测试路径:abc abd aeg aef 测试用例: X=1 X=1 X=5 X=4 Y=2 Y=1 Y=0 Y=0 (2) 方法: /** * * 2016/04/06 王鹏鑫 * @param args */ package cn.wang.cd;
import java.util.Scanner;
public class Test3 {
public void run(){ Scanner cin=new Scanner(System.in); System.out.println("请输入X的值:"); int x=cin.nextInt(); System.out.println("请输入Y的值:"); int y=cin.nextInt(); if(x0){ if(y>1){ y=y+1; System.out.println("x的值为:"+x +"\n"+"y的值为:"+y); } else{ System.out.println("x的值为:"+x +"\n"+"y的值为:"+y); } } else{ if(x>=5){ x = x-y; System.out.println("x的值为:"+x+"\n"+"y的值为:"+y); } else{ x = x+y; System.out.println("x的值为:"+x+"\n"+"y的值为:"+y); } } } }
Main函数: package cn.wang.cd;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) { // TODO Auto-generated method stub Test3 test3 = new Test3(); test3.run(); } }
单元测试: package cn.wang.cd;
import static org.junit.Assert.*;
public class Test {
@org.junit.Test public void test() { Test3 test3 = new Test3(); test3.run(); } } 运行结果; 单元测试:
总结:分支覆盖的强度比语句覆盖强,语句覆盖不能涵盖所有的分支。 |
CopyRight 2018-2019 实验室设备网 版权所有 |