结对编程2——单元测试
康建灿 201421123017 郑怀勇 201421123016
需求分析:
- 把计算模块提取出来,单独创建一个类。
- 针对提取出来的计算类的接口函数做单元测试。
实验要求:
- 通过单元测试代码,测试加法是否能正确工作;
- 通过单元测试代码,测试加减乘除功能。
-
通过单元测试代码,测试计算类对于各种参数的支持:
a. 输入是有错误的,例如 “1 ++ 2”,
b. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,
c. 或者是 “ 248 / 0” 怎么办?
d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?
e. 那么如果真的计算结果是 “-1” 又怎么处理呢?
测试模块:
- 通过单元测试代码,测试加法是否能正确工作:
public void testAdd() { CalcFunction.add("3+2"); assertEquals("5",CalcFunction.getResult()); CalcFunction.add("2/3+1/3"); assertEquals("1",CalcFunction.getResult()); }
- 通过单元测试代码,测试加减乘除功能。
public void testAdd() { CalcFunction.add("3+2"); assertEquals("5",CalcFunction.getResult()); CalcFunction.add("2/3+1/3"); assertEquals("1",CalcFunction.getResult()); // CalcFunction.add("1++2"); //CalcFunction.add("10000+32768"); //assertEquals("out of range",CalcFunction.getResult()); } @Test public void testSub() { CalcFunction.sub("3-2"); assertEquals("1",CalcFunction.getResult()); CalcFunction.sub("2/3-1/3"); assertEquals("1/3",CalcFunction.getResult()); } @Test public void testMul() { CalcFunction.mul("3*2"); assertEquals("6",CalcFunction.getResult()); CalcFunction.mul("2/3*1/3"); assertEquals("2/9",CalcFunction.getResult()); } @Test public void testDiv() { CalcFunction.div("3÷2"); assertEquals("3/2",CalcFunction.getResult()); CalcFunction.div("2/3÷1/3"); assertEquals("2",CalcFunction.getResult()); CalcFunction.div("248÷0"); assertEquals("zero_error",CalcFunction.getResult()); }
输入是有错误的,例如 “1 ++ 2”:会传出error:
@Test public void testAdd() { CalcFunction.add("1++2"); assertEquals("error",CalcFunction.getResult()); }
在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,
public void testAdd() { CalcFunction.add("10000+32768"); assertEquals("out of range",CalcFunction.getResult()); }
或者是 “ 248 / 0” 怎么办?报错传出zero_error:
@Test public void testDiv() { CalcFunction.div("3÷2"); assertEquals("3/2",CalcFunction.getResult()); CalcFunction.div("2/3÷1/3"); assertEquals("2",CalcFunction.getResult()); CalcFunction.div("248÷0"); assertEquals("zero_error",CalcFunction.getResult()); }
怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?
输入是有错误的,会传出error:
@Test public void testAdd() { CalcFunction.add("1*&2"); assertEquals("error",CalcFunction.getResult()); }
那么如果真的计算结果是 “-1” 又怎么处理呢?直接输入-1即可。
public void testAdd() { CalcFunction.add("2-3"); assertEquals("-1",CalcFunction.getResult()); }
代码覆盖率:
照片:
遇到的问题及解决方案:
在这次作业中,遇到挺多问题的,比如错误的捕获等等,我们在不懂的时候一般都是请教舍友或者在百度上寻找答案。
psp:
PSP2.1 | Personal Software Process Stages | Estimated time(min) | actual time(min) |
Planning | 计划 | 12 | 10 |
· Estimate | 估计这个任务需要多少时间 | 120 | 115 |
Development | 开发 | 80 | 90 |
· Analysis | 需求分析 (包括学习新技术) | 10 | 10 |
· Design Spec | 生成设计文档 | 7 | 10 |
· Design Review | 设计复审 | 6 | 5 |
· Coding Standard | 代码规范 | 4 | 5 |
· Design | 具体设计 | 30 | 40 |
· Coding | 具体编码 | 35 | 40 |
· Code Review | 代码复审 | 10 | 15 |
· Test | 测试(自我测试,修改代码,提交修改) | 15 | 15 |
Reporting | 报告 | 20 | 25 |
· | 测试报告 | 5 | 5 |
· | 计算工作量 | 4 | 7 |
· | 并提出过程改进计划 | 4 | 4 |
小结:
用“汉堡包”的方式来评价一下我的小伙伴。第一层(先来一片面包):由于两个人比较熟悉,有较为接近的思想和思路,加上上一次的合作,两个人的分工越发默契。同时有问题的时候可以马上进行探讨,问题可以及时的得到解决。加上我的小伙伴编程能力也挺强的,任务完成相对没有特别的困难。
(再把肉放上):因为上次写的程序问题和规范都存在一定的问题,所以这次写起来也比较麻烦,要改挺多东西,也让我们意识到代码的规范性的重要。
(然后再来一片面包):希望队友在以后的学习生活中遇到困难,不要退缩,勇往直前,只要你努力一定都是可以解决的。