1、修正流程图:根据新修改的代码,再次修正流程图

 

2、测试用例设计:依据所有的覆盖理论,分别写出相应的测试用例设计。

测试编号

数据

预期结果

输出结果

是否通过

001

abc,abc,123,123

提示输入错误,重新输入

程序崩溃,抛出异常

×

002

123,abc,abc,123

提示输入错误,重新输入

程序崩溃,抛出异常

×

003

123,12,abc,abc

提示输入错误重新输入

程序崩溃,抛出异常

×

004

+0,+0,-0,-0,0

输出佣金0

输入的数量不满足要求,请重新输入

销售金额为:0.0

×

005

-1,-1,0,0

提示输入错误重新输入

销售金额为:0.0

×

006

0,-1,-1,0

提示输入错误重新输入

销售金额为:0.0

×

007

0,0,-1,-1

提示输入错误重新输入

销售金额问为:0.0

×

008

提示输入错误,重新输入

程序崩溃,抛出异常

×

009

2147483648,2147483648,0,0

提示输入有误重新输入

程序崩溃,抛出异常

×

010

0,2147483648,2147483648,0

提示输入有误重新输入

程序崩溃,抛出异常

×

011

0,0,2147483648,2147483648

提示输入有误重新输入

程序崩溃,抛出异常

×

012

12.3,12.3,0,0

提示输入有误重新输入

程序崩溃,抛出异常

×

013

0,13.56,13.56,0

提示输入有误重新输入

程序崩溃,抛出异常

×

014

0,0,16.9,16.69

提示输入有误重新输入

程序崩溃,抛出异常

×

015

3,3,9(销售额小于1000)

输出佣金:34.2

输出销售佣金为:34.2

016

5,20,50(销售额等于1000)

输出佣金:100

输出销售佣金为:100

017

9,20,50(销售金额大于1000小于1800)

输出佣金:148

输出销售佣金为:148

018

10,20,100(销售金额等于1800)

输出佣金:220

输出销售佣金为:220

019

30,60,90

输出佣金:604

输出销售佣金为:604

语句覆盖:001、002、003

判定覆盖:004—019

 

3、单元测试框架:采用单元测试框架Junit,初步简单的自动化执行测试用例。

package other;

import org.junit.*;

import org.junit.Test;

public class Commission_caculatorTest {

    @Test
    public void testCaseOne() {
        String s1 = "3";
        String s2 = "3";
        String s3 = "9";
        Commission_caculator caculator = new Commission_caculator();
        double result = caculator.Commission(s1, s2, s3);
        Assert.assertEquals(34.2, result, 0.003);
    }

    @Test
    public void testCaseTwo() {
        String s1 = "5";
        String s2 = "20";
        String s3 = "50";
        Commission_caculator caculator = new Commission_caculator();
        double result = caculator.Commission(s1, s2, s3);
        Assert.assertEquals(100, result, 0.003);
    }

    @Test
    public void testCaseThree() {
        String s1 = "9";
        String s2 = "20";
        String s3 = "50";
        Commission_caculator caculator = new Commission_caculator();
        double result = caculator.Commission(s1, s2, s3);
        Assert.assertEquals(148, result, 0.003);
    }

    @Test
    public void testCaseFour() {
        String s1 = "10";
        String s2 = "20";
        String s3 = "100";
        Commission_caculator caculator = new Commission_caculator();
        double result = caculator.Commission(s1, s2, s3);
        Assert.assertEquals(220, result, 0.003);
    }

    @Test
    public void testCaseSix() {
        String s1 = "30";
        String s2 = "60";
        String s3 = "90";
        Commission_caculator caculator = new Commission_caculator();
        double result = caculator.Commission(s1, s2, s3);
        Assert.assertEquals(604, result, 0.003);
    }

}

 

3、测试结果:根据测试用例设计,执行测试,并给出TestRunner测试结果图。

  Commission函数的测试结果:

  

  由于只能一次性自动地向控制台输入字符串,而main函数和Input函数都是两次或两次以上从控制台读取输入。

4、测试小结:

  •      测试用例编写的心得体会。

  尽量根据程序流程图编写测试用例,可以覆盖更多的路径和条件。

  •      采用单元测试框架,和用main()方法调用的心得体会。

  可以使用System.setIn()函数向控制台一次性指定输入,使用System.setOut()函数得到控制台的输出,进而使用assertEquals()进行判断。在写主函数时,尽量用main函数的参数进行读取可以方便测试的进行以及测试用例的编写。

  •      调试与测试的不同体会。

  测试可以让程序更加完善,而调试仅仅只是修改程序对当前输入的数据的处理。

posted on 2017-03-30 15:38  VioletGlass  阅读(240)  评论(0编辑  收藏  举报