结对编程2——单元测试
201421123047,201421123029(一班)
https://git.coding.net/weh/software-testing.git
题目要求:
- 结对编程实现上述功能,同样的,在程序正式开发之前,请先预估下PSP每个环节的消耗时间(分钟),并在过程中统计实际耗时(分钟),最后提交PSP表格。依然注意,这个主要是给你们自己看的,不必造假数据。
- 继续两人结对协作,把编码规范、领航员和驾驶员角色互换做到位。
- 单元测试: 有单元测试保证,有代码覆盖率。
需求分析:测试上有哪些详细的需求?
- 把计算模块提取出来,单独创建一个类。
- 针对提取出来的计算类的接口函数做单元测试。
- 通过单元测试代码,测试加法是否能正确工作;
- 通过单元测试代码,测试加减乘除功能。
- 通过单元测试代码,测试计算类对于各种参数的支持:
- 输入是有错误的,例如 “1 ++ 2”,
- 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,
- 或者是 “ 248 / 0” 怎么办?
- 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?
- 那么如果真的计算结果是 “-1” 又怎么处理呢?
设计测试:
package w; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class CalculatorTest { private Calculator calculator=new Calculator(); @Before public void setUp() throws Exception { } @Test public void testDnj() { calculator.Dnj(0, 1, 2, 4); assertEquals(3,calculator.getSum()); calculator.Dnj(1, 1, 1, 1); assertEquals(0,calculator.getSum()); calculator.Dnj(2, 1, 1, 1); assertEquals(1,calculator.getSum()); calculator.Dnj(3, 1, 1, 1); assertEquals(1,calculator.getSum()); } @Test public void testGnj() { calculator.Gnj(0, 0, 1, 1, 1, 1, 1); assertEquals(3,calculator.getSum()); calculator.Gnj(0, 1, 1, 1, 1, 1, 1); assertEquals(1,calculator.getSum()); calculator.Gnj(0, 2, 1, 1, 1, 1, 1); assertEquals(2,calculator.getSum()); calculator.Gnj(0, 3, 1, 1, 1, 1, 1); assertEquals(2,calculator.getSum()); calculator.Gnj(1, 0, 1, 1, 1, 1, 1); assertEquals(1,calculator.getSum()); calculator.Gnj(1, 1, 3, 1, 1, 1, 1); assertEquals(1,calculator.getSum()); calculator.Gnj(1, 2, 1, 1, 1, 1, 1); assertEquals(0,calculator.getSum()); calculator.Gnj(1, 3, 1, 1, 1, 1, 1); assertEquals(0,calculator.getSum()); calculator.Gnj(2, 0, 1, 1, 1, 1, 1); assertEquals(2,calculator.getSum()); calculator.Gnj(2, 1, 1, 1, 1, 1, 1); assertEquals(0,calculator.getSum()); calculator.Gnj(2, 2, 1, 1, 1, 1, 1); assertEquals(1,calculator.getSum()); calculator.Gnj(2, 3, 1, 1, 1, 1, 1); assertEquals(1,calculator.getSum()); calculator.Gnj(3, 0, 1, 1, 1, 1, 1); assertEquals(2,calculator.getSum()); calculator.Gnj(3, 1, 1, 1, 1, 1, 1); assertEquals(0,calculator.getSum()); calculator.Gnj(3, 2, 1, 1, 1, 1, 1); assertEquals(1,calculator.getSum()); calculator.Gnj(3, 3, 1, 1, 1, 1, 1); assertEquals(1,calculator.getSum()); } }
结果:
小结与感受:
通过这次结对测试,不仅让我对四则运算程序有了更深入的了解,而且也学会了如何利用 Eclipse对自己编写的Java程序进行测试.当然,在测试覆盖率时也遇到了一些问题,发现测试的覆盖率达不到100%,后来发现是一些类没有调用,在测试中添加后终于能到100%.而且,在这次实验中,我发现对代码的一些规范与必备注释是非常有必要的,不然如果自己长时间没有用后,很容易就会忘了程序的意义,所以,在写程序时代码不仅要规范,还要有必要的注释,方便自己以后阅读.总之,在这次测试中,我了解程序的测试过程,不仅使我巩固了上次编的程序,也让我对程序的测试有了更深入的了解.
评价队友:
优点:编程与理解能力较强,能够快速找到问题,善于查找资料.
缺点:实验不过细心,会犯一些小错误.
建议:实验时应认真,专心.
PSP:
PSP2.1 |
Personal Software Process Stages |
Time(min) Senior Student |
Time (min) |
Planning |
计划 |
20 |
25 |
Estimate |
估计这个任务需要多少时间 |
50 |
50 |
Development |
开发 |
100 |
80 |
Analysis |
需求分析 (包括学习新技术) |
40 |
30 |
Design Spec |
生成设计文档 |
10 |
14 |
Design Review |
设计复审 |
20 |
25 |
Coding Standard |
代码规范 |
15 |
30 |
Design |
具体设计 |
100 |
80 |
Coding |
具体编码 |
50 |
50 |
Code Review |
代码复审 |
30 |
30 |
Test |
测试(自我测试,修改代码,提交修改) |
30 |
16 |
Reporting |
报告 |
60 |
80 |
|
测试报告 |
2 |
3 |
|
计算工作量 |
3 |
5 |
|
并提出过程改进计划 |
5 |
4 |