1、被测代码:http://www.cnblogs.com/ChainYugi/p/6612975.html
2、流程图:
3、测试用例设计:
覆盖方法 | 用例号 | 输入 | 期待结果 | 实际结果 | 通过与否 | 时间 |
语句覆盖、判定覆盖 | 1 | -5 -6 -3 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 |
2 | 3 2 1 | 佣金金额:26.80元 | 佣金金额:26.80元 | √ | 2017-03-30 | |
3 | 4 10 100 | 佣金金额:133.00元 | 佣金金额:133.00元 | √ | 2017-03-30 | |
4 | 10 50 100 | 佣金金额: 280.00元 | 佣金金额:280.00元 | √ | 2017-03-30 | |
条件覆盖 | 5 | -1 300 -1 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 |
6 | 10 -5 50 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
判定条件覆盖 | 7 | -1 -1 -1 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 |
8 | 10 100 10 | 佣金金额: 236.00元 | 佣金金额: 236.00元 | √ | 2017-03-30 | |
9 | 10 80 20 | 佣金金额: 214.00元 | 佣金金额: 214.00元 | √ | 2017-03-30 | |
组合覆盖 | 10 | -5 30 60 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 |
11 | 20 -3 80 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
12 | 10 40 -20 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
13 | -20 -5 30 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
14 | 28 -20 -10 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
15 | -10 80 -30 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
16 | -2 -4 -8 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
17 | -1 100 -1 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
18 | 25 2 20 | 佣金金额: 296.00元 | 佣金金额: 296.00元 | √ | 2017-03-30 | |
19 | -5 2 3 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
20 | 20 100 1 | 佣金金额: 381.60元 | 佣金金额: 381.60元 | √ | 2017-03-30 | |
21 | 100 200 300 | 佣金金额: 2340.00元 | 佣金金额: 2340.00元 | √ | 2017-03-30 | |
22 | -5 100 300 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
23 | 200 -10 30 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
24 | 40 -200 -5 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
路径覆盖 | 25 | 1 2 3 | 佣金金额: 12.40元 | 佣金金额: 12.40元 | √ | 2017-03-30 |
26 | 10 25 1 | 佣金金额: 108.70元 | 佣金金额: 108.70元 | √ | 2017-03-30 | |
27 | 100 210 10 | 佣金金额: 1896.00元 | 佣金金额: 1896.00元 | √ | 2017-03-30 | |
28 | -1 -2 50 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
29 | 2 -5 20 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 | |
30 | 80 60 -6 | 输入格式错误,请重试 | 输入格式错误,请重试 | √ | 2017-03-30 |
4、使用单元测试框架:
1 import static org.junit.Assert.*; 2 3 import org.junit.Test; 4 5 public class testcase { 6 7 @Test 8 public void test() { 9 assertEquals("输入格式错误,请重试 ",Commission.commission(-5, -6, -3)); 10 assertEquals("佣金金额:26.80元 ",Commission.commission(3, 2, 1)); 11 assertEquals("佣金金额:133.00元 ",Commission.commission(4, 10, 100)); 12 assertEquals("佣金金额:280.00元 ",Commission.commission(10, 50, 100)); 13 assertEquals("输入格式错误,请重试 ",Commission.commission(-1, 300, -1)); 14 assertEquals("输入格式错误,请重试 ",Commission.commission(10, -5, 50)); 15 assertEquals("输入格式错误,请重试 ",Commission.commission(-1, -1, -1)); 16 assertEquals("佣金金额:236.00元 ",Commission.commission(10, 100, 10)); 17 assertEquals("佣金金额:214.00元 ",Commission.commission(10, 80, 20)); 18 assertEquals("输入格式错误,请重试 ",Commission.commission(-5, 30, 60)); 19 assertEquals("输入格式错误,请重试 ",Commission.commission(20, -3, 80)); 20 assertEquals("输入格式错误,请重试 ",Commission.commission(10, 40, -20)); 21 assertEquals("输入格式错误,请重试 ",Commission.commission(-20, -5, 30)); 22 assertEquals("输入格式错误,请重试 ",Commission.commission(28, -20, -10)); 23 assertEquals("输入格式错误,请重试 ",Commission.commission(-10, 80, -30)); 24 assertEquals("输入格式错误,请重试 ",Commission.commission(-2, -4, -8)); 25 assertEquals("输入格式错误,请重试 ",Commission.commission(-1, 100, -1)); 26 assertEquals("佣金金额:296.00元 ",Commission.commission(25, 2, 20)); 27 assertEquals("输入格式错误,请重试 ",Commission.commission(-5, 2, 3)); 28 assertEquals("佣金金额:381.60元 ",Commission.commission(20, 100, 1)); 29 assertEquals("佣金金额:2340.00元 ",Commission.commission(100, 200, 300)); 30 assertEquals("输入格式错误,请重试 ",Commission.commission(-5, 100, 300)); 31 assertEquals("输入格式错误,请重试 ",Commission.commission(200, -10, 30)); 32 assertEquals("输入格式错误,请重试 ",Commission.commission(40, -200, -5)); 33 assertEquals("佣金金额:12.40元 ",Commission.commission(1, 2, 3)); 34 assertEquals("佣金金额:108.70元 ",Commission.commission(10, 25, 1)); 35 assertEquals("佣金金额:1896.00元 ",Commission.commission(100, 210, 10)); 36 assertEquals("输入格式错误,请重试 ",Commission.commission(-1, -2, 50)); 37 assertEquals("输入格式错误,请重试 ",Commission.commission(2, -5, 20)); 38 assertEquals("输入格式错误,请重试 ",Commission.commission(80, 60, -6)); 39 40 } 41 42 }
5、测试结果:
6、测试小结:
- 在编写测试用例的时候,特别是组合覆盖的时候,因为要对所有可能条件的组合进行测试,同时满足判定本身结果也至少出现一次,这个情况就比较多,写着写着都有点晕了。经过测试用例的编写,发现语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、组合覆盖、路径覆盖,从左到右,具有被包含的关系,其中语句覆盖最弱,路径覆盖效果最好。
- 在采用单元测试框架的时候,发现省时省力很多,用JUnit执行测试类/方法,直接调用方法,可以自动执并且检查结果。刚开始用的时候,忽略了被测代码每个输出都有一个换行符,一直测试不通过,后来才发现。感觉单元测试框架会比我们检查结果更为严格。