测试与优化

211614331 王诚荣
211614354 陈斌

单元测试

我的设计单元思路是利用JUnit4测试单元框架,创建JUnit4测试类将代码中的方法都测试一下,最后用JUnit测试套件将所有方法集中在一起测试。这次的测试任务中,我负责写了四个测试类。

  • 第一个测试我将MathExam类输入的参数是否为正确创建成一个test方法,然后在test包里新建一个JUnit Test Case的testPartInput测试类,将test方法调用到这testPartInput类中,使用JUnit4的参数化测试,把我的所有测试数据和预期结果存在这个Object[]数组,然后利用参数化测试的特点,每一次从数组中取一组数据传入测试方法中,判断方法的测试结果与预期结果是否相同。如果相同,通过测试;如果不相同,测试出现Failure,就说明代码有问题,需要继续修改代码。

  • 第二个测试,我将RandomQuestions类中的questionsShop()方法调用到test包中新建的testPartRQquestionsShop类中,该测试类关键代码如下:

@Test
    public void testquestionsShop() {
        RandomQuestions rq=new RandomQuestions();//实例化一个对象为rq
        String s1=rq.questionsShop();   //将s1代表rq调用questionsShop()方法
        String[] a=s1.split(" ");  //先用split的将s1字符串用空格打断成数组,创建一个数组a来等于s1,存下questionsShop()方法返回的题目
        int symbolNumber=0; // 定义符号的个数
        int digNumber=0; // 定义数字的个数
        for(int i=0;i<a.length;i++) {  
            if(a[i].matches("[\\+\\-\\×\\÷]")) {   //利用正则表达式判断题目中有任意一个加减乘除符号,就symbolNumber+1
                symbolNumber++;
            }
            else if(a[i].matches("\\d+")) { //利用正则表达式判断题目中有数字就digNumber+1
                digNumber++;
            }
        }
        boolean expected=true;  //初始化expected预期结果为true
        boolean right;
        if(digNumber-symbolNumber==1) {  //如果相减为1,说明产生的题目符合要求,然后把right赋值为true,再与预期结果比较
            right=true;
        }
        else {
            right=false;
        }
        assertEquals(expected, right); //自动判断题目是否符合要求
        symbolNumber=0;
        digNumber=0;
        System.out.println("当前题目为: "+rq.problemSave); //人工判断题目是否符合要求
     }

该测试类表示如果预期结果与实际结果相同,就测试成功,否则测试失败。

  • 第三个测试我将MathExam类中的main方法调用到test包里新建的一个testMain类中,看输入参数后,整个程序能否正确运行,各个模块能否被正确调用,其中包括输入输出,输入参数,一二三年级算法等。

  • 第四个测试我将所有test包里的测试类都调用到test包里的testAll测试类中,利用JUnit测试套件,运行所有测试。

测试覆盖率

1479063-20180930023827357-2000261912.png

结构优化

UML类图

1479063-20180930023941921-281870108.png

运行流程图

1479063-20180930024017291-536154482.png

心得体会

在这次的结对测试作业中,我有以下一些心得:

  • 测试方法上必须使用@Test进行修饰;
  • 测试类的包应该和被测试类保持一致;
  • 测试单元中的每个方法可以独立测试,测试方法间不能有任何的依赖;
  • 测试结果中Failure表示测试点发现了问题,也就是程序输出的结果和我们预期的不一样;
  • 测试结果中error是由代码异常引起的,它可能产生于测试代码本身的问题,也可能是被测试代码中的一个BUG;
  • 测试套件是组织测试类一起运行的;
  • 写一个作为测试套件的入口类,这个类里不包含其他的方法;
  • 更改测试运行器Suite.class
  • 将要测试的类作为数组传入到Suite.SuiteClasses({})。

转载于:https://www.cnblogs.com/chenbin1234/p/9727337.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值