第三次作业+105032014033
1.流程图
2.测试用例设计
覆盖方法 |
用例号 |
输入 |
期待结果 |
实际结果 |
通过 |
语句覆盖 |
1 |
1 1 1 |
9.8 |
9.8 |
√ |
语句覆盖 |
2 |
5 10 30 |
74.0 |
74.0 |
√ |
语句覆盖 |
3 |
30 11 22 |
537.2 |
0.0 |
× |
判定覆盖 |
4 |
“” 10 11 |
输入的不是整数,请再次输入 |
输入的不是整数,请再次输入 |
√ |
判定覆盖 |
5 |
12 -3 9 |
不满足要求 |
不满足要求 |
√ |
判定覆盖 |
6 |
11 3 -8 |
不满足要求 |
不满足要求 |
√ |
判定覆盖 |
7 |
15 6 5 |
145.0 |
145.0 |
√ |
判定覆盖 |
8 |
32 10 11 |
549.6 |
0.0 |
× |
条件覆盖 |
9 |
1 6 9 |
21.2 |
21.2 |
√ |
条件覆盖 |
10 |
16 5 9 |
160.3 |
160.3 |
√ |
条件覆盖 |
11 |
30 12 20 |
536.0 |
0.0 |
× |
条件覆盖 |
12 |
1 6 -9 |
不满足要求 |
不满足要求 |
√ |
判定/条件覆盖 |
13 |
12 |
不满足要求 |
不满足要求 |
√ |
判定/条件覆盖 |
14 |
12 -2 -1 |
不满足要求 |
不满足要求 |
√ |
判定/条件覆盖 |
15 |
10 1 2 |
82.6 |
82.6 |
√ |
判定/条件覆盖 |
16 |
“” “” “” |
输入的不是整数,请再次输入 |
输入的不是整数,请再次输入 |
√ |
组合覆盖 |
17 |
-2 -4--3 |
不满足要求 |
不满足要求 |
√ |
组合覆盖 |
18 |
-1 22--5 |
不满足要求 |
不满足要求 |
√ |
组合覆盖 |
19 |
33 20 24 |
622.4 |
0.0 |
× |
路径覆盖 |
20 |
啊 |
输入的不是整数,请再次输入 |
输入的不是整数,请再次输入 |
√ |
路径覆盖 |
21 |
A b 6 |
输入的不是整数,请再次输入 |
输入的不是整数,请再次输入 |
√ |
路径覆盖 |
22 |
4 5 6 |
41.8 |
41.8 |
√ |
路径覆盖 |
23 |
17 10 8 |
178.6 |
178.6 |
√ |
3.单元测试框架
package aaa; import static org.junit.Assert.*; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class test { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Before public void testCommission() { assertEquals(9.8,Com.commission(1, 1, 1),0.0001); assertEquals(133.0,Com.commission(11, 10, 30),0.0001); assertEquals(145.0,Com.commission(15,6,5),0.0001); } @Test public void testMain() { } }
4.测试结果
5.测试小结
在编写测试用例时,应该按照流程顺序进行用例安排,从第一个验证点到最后一个验证点,组成流程的开始到结束,方便用例的执行。相比于调用main()方法,采用单元测试框架可以更方便的写出测试代码,还提供了便捷方法。调试时为了证明程序的正确,它必须不断的排除错误,在发现一个错误时,将不会继续测试后面的测试用例,这点也方便我们一个个解决错误而不会显得过于杂乱。