单元测试
目标
1:把计算模块提取出来,单独创建一个类。
2:针对提取出来的计算类的接口函数做单元测试。
需求分析 (队友:201421123073 本人:201421123070)
1:小数,分数,括号,整数的四则混合运算的測試。
2:简单的整数的运算的測試。
3:有小数的运算的測試。
4:有分数的运算的測試。
5:有括号的运算的測試。
添加的功能
添加了小数点的运算的功能。實現小數,分數,整數,括號的四則混合運算。
测试框架
项目以java语言进行开发,使用junit4进行测试。
测试用例:
1:整数的测试用例。
2:小数的测试用例。
3:分数的测试用例。
4:小括号的测试用例。
5:混合的测试用例。
6:优先级测试
7:计算表达式测试用例
8:检查错误式子的测试样例
9:整体的覆盖率
结论:代码覆盖率的插件特别好用,测试的方法,代码有覆盖到的用绿色标明,没有覆盖到的用红色表明,部分覆盖到用黄色标明。这样可以迅速的知道自己的测试样例是否符合标准,还不能覆盖到所有的代码。
队友的测试块
①:测试加法方法
测试用例:
测试结果:(有于代码较长,截图不方便,没有上图。后面会给出代码仓库地址,可以自行测试查看结果)可以看出这个类中的加法方法,代码都变绿色了,说明以上测试用例都覆盖了这个方法的代码。
②:测试减法方法
测试用例:
测试结果:同样可以看出在分数类中的减法方法代码变绿。
③:测试乘法方法
测试用例:
④:测试除法方法
(4)测试结果分析
Q&A
q1:代码覆盖率低。 a1:将大部分可能碰到的运算式列出来,提高了代码的覆盖率,但是只有25%的覆盖率,后来研究一下发现是整个包的覆盖率都算进去了,所以单独查看测试的类的覆盖将近100%。
q2:不会用junit4。 a2:看了别人的博客和以前java的课件进行学习。很感谢java老师,教了很多的东西。碰到问题就去解决,百度,别人的经验,都是很快的学习方式。
q3:commit了好多遍coding上都没有显示,所以重复提交了好几次 a3:coding的显示延迟了可能,在历史提交记录那里可以看到。应该是自己一开始的设置不对,就重新一步步的设置,问题完美解决。
q4:数组越界。 a4:有一种情况没有考虑到导致错误。
小结与感受
1:测试确实找到了一些程序上存在的BUG,比如数组越界;测试其实是一个测试思维的严密程度的事情,检测程序的思维是否严谨,其实蛮有趣的。
2:单元测试,给找bug节省了很多的时间,比如这一个单元测试完整无误了,如果出错了,那么就可以排除这个单元可能出错的可能性。
3:程序添加注释,有一定的规范。确实给此次测试减少了不少的时间。变量名通俗易懂,注释一看就知道此函数是干啥的。因为时间长了,自己写的代码真的看不懂,通过注释和规范,能够快速的回忆方法的作用和思维过程。
4:开始的计算方法是c写的,为了和整个项目统一,改成了java的,封装成了一个类。c属于比较底层的语言了,所以使用指针还是比较容易的出问题的,改了之后,代码的可读性高了很多,对于跟别人一起做项目来说,这真的方便很多。
5:新添加了计算小数的功能。这次添加这个功能,主要是这次将代码重新用java写了一遍,整个中缀表达式求值的方法又重温了一遍,就又添加了小数的计算方法。而且将注释的都标注了一遍。
在隔了一周之后再看之前的代码,体会到下面这些东西
(1) <u>良好的设计</u>。良好的设计,让自己的代码更加的健壮,也让别人更容易看懂。进行项目开发的时候,将各种功能模块化,减少代码与代码之间的嵌套关系,更有助于代码的调试和可读性。
(2) <u>编码规范</u>。每个人的编程习惯都不一样,但是进行同一个项目的开发,编码的规范真的很重要。因为你编写的代码也要拿给别人看,大家共同遵守同一个编码规范,节约了很多的开发时间。
(3) <u>必要的注释</u>。项目越大的时候,代码量越大,所以有一些必要的注释,更容易回忆起自己原来写的代码的功能是什么,怎么实现的。以后别人接手你的项目的时候也更容易了解你的整个项目的脉络。
项目链接
结队照片
PSP(Personal Software Process)表格
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student | Time (%) |
Planning | 计划 | ||
· Estimate | 估计这个任务需要多少时间 | 5h | 6h |
Development | 开发 | ||
· Analysis | 需求分析 (包括学习新技术) | 0.5h | 0.2h |
· Design Spec | 生成设计文档 | 0 | 0 |
· Design Review | 设计复审 | 0 | 0 |
· Coding Standard | 代码规范 | 0.2h | 0.1h |
· Design | 具体设计 | ||
· Coding | 具体编码 | 0.5h | 0.5h |
· Code Review | 代码复审 | 0.5h | 0.6h |
· Test | 测试(自我测试,修改代码,提交修改) | 2h | 2h |
Reporting | 报告 | 2h | 3h |
·Test Report | 测试报告 | 0 | 0 |
· Size Measurement | 计算工作量 | ||
·Postmortem & Process Improvement Plan | 并提出过程改进计划 |