单元测试
a.需求分析:
吴文庆 201421123049 黄子敬 201421123052
- 把计算模块提取出来,单独创建一个类。
- 针对提取出来的计算类的接口函数做单元测试。
a. 加减乘除功能测试
b.输入非法字符测试
c.数值超出范围测试
d.结果除0测试
b.设计测试框架, 模拟测试数据
1. 加减乘除功能测试
@Test public void testAdd() { calc.add(5,8); assertEquals(13, Integer.parseInt(calc.getResult())); } @Test public void testSubstract() { calc.substract(5,8); assertEquals(-3, Integer.parseInt(calc.getResult())); } @Test public void testMultiply() { calc.multiply(5,8); assertEquals(40, Integer.parseInt(calc.getResult())); } @Test public void testDivide() { calc.divide(5,8); assertEquals(String.valueOf("5/8"), calc.getResult()); } @Test public void testAdd2() { calc.add2(2,4,2,3); assertEquals(String.valueOf("7/6"), calc.getResult()); } @Test public void testSubstract2() { calc.substract2(2,4,2,3); assertEquals(String.valueOf("1/-6"), calc.getResult()); } @Test public void testMultiply2() { calc.multiply2(2,4,2,3); assertEquals(String.valueOf("1/3"), calc.getResult()); } @Test public void testDivide2() { calc.divide2(2,4,2,3); assertEquals(String.valueOf("3/4"), calc.getResult()); }
该部分功能代码较长不贴出,将在coding中。
2.输入非法字符测试
1
2
3
4
5
6
|
@Test public void testPanduanzifu() { //String s=calc.getResult(); calc.panduanzifu( "4/7!#@$" ); assertEquals( "input error" , calc.getResult()); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public void panduanzifu(String s) //判断输入字符, { char arr[]= s.toCharArray(); for ( int i = 0 ; i < s.length(); i++) { if ((arr[i]< 45 ) || (arr[i] > 58 )) { sum1= "input error" ; } } } |
3.数值超出范围测试
1
2
3
4
5
|
@Test public void testRange() { calc.range( 11 , 3 ); assertEquals( "outrange" , calc.getResult()); } |
1
2
3
4
5
|
public void range( int x, int y) //范围判断 { if ((x< 0 || x> 10 )||(y< 0 || y> 10 )) sum1= "outrange" ; } |
4.结果除0测试
1
2
3
4
5
6
|
@Test public void testZero() { calc.zero( "4/0" ); assertEquals( "zero error" , calc.getResult()); } |
1
2
3
4
5
6
7
8
|
public void zero(String s) { //结果除0错误 s = s.substring(s.length()- 2 ,s.length()); if (s.equals( "/0" )) { sum1= "zero error" ; } } |
结果截图
当测试数据返回结果sum1与预先设定的结果相同则运行正确。
c.小结与感受:
通过这次对单元测试的使用,发现随着软件项目的逐渐增大,单元测试的地位显得越来越重要。如果软件项目没有良好的测试流程,随着系统的增大这将会给开发人员带来极大的困扰,最后造成的结果是“剪不断,理还乱”。 此次通过单元测试还给之前的程序添加了一些新的判断错误的方法,然后通过改进让的程序又完善了些。还有就是两周后再去看自己的代码,确实发现有的地方没注释然后就一下子记不起来到底是什么需要再前后一起看一看,特别当不是规范的变量名更让你绝望。(1)良好的设计;(2)规范的代码;(3)必要的注释;是非常重要的。
汉堡包式评价
首先:由于之前并没有使用过单元测试所以此这次两人都是在网上或者书上学习研究了,然后达成一个共识,该怎么样完成此次编程。
然后:操作过程中发现有挺多简单的问题一下子都没想出来,后面熟悉了一下觉得挺傻的,刚开始在网上学习然后看完觉得好像挺容易的然后就马上开始操作结果发现并没有那么简单,经过之后的操作熟悉了点,就发现之前的错误挺傻的。总的说还是急性子想马上实践一下最后发现还是缺少一点耐心。
最后:两人编程中有领航员和驾驶员关系时确实能使工作更加顺利,能互相提醒并且能高效完成。
PSP
PSP2.1 |
Personal Software Process Stages |
Estimated time(h) |
actual time(h) |
Planning |
计划 |
6 |
5.2 |
· Estimate |
估计这个任务需要多少时间 |
6 |
5.2 |
Development |
开发 |
0.5 |
0.3 |
· Analysis |
需求分析 (包括学习新技术) |
0.2 |
0.2 |
· Design Spec |
生成设计文档 |
0.2 |
0.1 |
· Design Review |
设计复审 |
0.1 |
0.1 |
· Coding Standard |
代码规范 |
0.2 |
0.2 |
· Design |
具体设计 |
0.5 |
0.5 |
· Coding |
具体编码 |
3 |
2.5 |
· Code Review |
代码复审 |
0.5 |
0.5 |
· Test |
测试(自我测试,修改代码,提交修改) |
0.3 |
0.3 |
Reporting |
报告 |
0.2 |
0.2 |
· |
测试报告 |
|
|
· |
计算工作量 |
0.1 |
0.1 |
· |
并提出过程改进计划 |
0.2 |
0.2 |