zoukankan      html  css  js  c++  java
  • 实验三 白盒测试

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

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

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

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

    package cn.deng;
    /*
     * 求两个数的最大公约数,利用的是欧几里德算法
     * dengchunzeng
     * 2016-4-2
     */
    public class GetMaxDivide {
        public static int Way(int a,int b){
            if(a<b){
                    int temp;
                    temp=a;
                    a=b;
                    b=temp;
            }
            if(0==b){
                    return a;
            }
            return Way(b,a%b);
    }
    }
     1 package cn.deng;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Bemo {
     6 
     7     /**
     8      * @param args
     9      */
    10     public static void main(String[] args) {
    11         // TODO Auto-generated method stub
    12         System.out.println("请输入x,y两个正整数:");
    13         Scanner in=new Scanner(System.in);
    14         int x=in.nextInt();
    15         int y=in.nextInt();
    16         GetMaxDivide  getmax=new GetMaxDivide();
    17         int val=getmax.Way(x, y);
    18         System.out.println("两个数的最大公约数是:"+val);
    19     }
    20 
    21 }

    }

    2、 逻辑覆盖的应用

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

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

    语句覆盖

    abc 3,2

    aef 5,0

    aeg 4,0

    abd 3,0

     

    分支覆盖3,1、3,0、5,0、4,0

     1 package cn.deng;
     2 /*
     3  * 根据流程图判断所输入的两个数
     4  * dengchunzeng
     5  * 2016-4-5
     6  */
     7 public class Judge {
     8     public void  Way(int x,int y){
     9         if(x<4||y>0){
    10             if(y>1){
    11                 y=y+1;
    12                 System.out.println("x="+x);
    13                 System.out.println("y="+y);
    14             }
    15             else{
    16                   System.out.println("x="+x);
    17                   System.out.println("y="+y);
    18             }
    19         }else if(x>=5){
    20              x=x-y;
    21              System.out.println("x="+x);
    22              System.out.println("y="+y);
    23         }else{
    24              x=x+y;
    25              System.out.println("x="+x);
    26              System.out.println("y="+y);
    27         }
    28         return;
    29     }    
    30 }
     1 package cn.deng;
     2 
     3 import static org.junit.Assert.*;
     4 
     5 import java.util.Scanner;
     6 
     7 import org.junit.Test;
     8 
     9 public class JiSuanTest {
    10 
    11     @Test
    12     public void test() {
    13         System.out.println("语句覆盖:");
    14         Judge judge=new Judge();
    15         judge.Way(3, 2);
    16         judge.Way(5, 0);
    17         judge.Way(4, 0);
    18         judge.Way(3, 0);
    19         System.out.println("分支覆盖:");
    20         judge.Way(3, 1);
    21         judge.Way(3, 0);
    22         judge.Way(5, 0);
    23         judge.Way(4, 0);
    24     }
    25 
    26 }

  • 相关阅读:
    JS搞基指南----延迟对象入门提高资料整理
    JavaScript使用自定义事件实现简单的模块化开发
    nodeJS+bootstarp+mongodb整一个TODO小例子
    nodeJS+express+Jade写一个局域网聊天应用(node基础)
    jQ1.5源码注释以及解读RE
    jQ1.5中的事件系统(低版本的事件系统)
    JS中的事件类型和事件属性的基础知识
    [转][mysql]创建函数失败(1418错误)mysql双主模式导致的问题
    MySQL数据库导入错误:ERROR 1064 (42000) 和 ERROR at line xx:
    Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案
  • 原文地址:https://www.cnblogs.com/mydcz/p/5380132.html
Copyright © 2011-2022 走看看