结对编程2——单元测试
coding地址:https://git.coding.net/Luo_yujie/unittest.git
结对伙伴:
201421123032 罗于婕
201421123034 龚晓婷
1.需求分析
软件测试就是在软件交付用户使用或投入运行前对设计方法与编码的最终复审,是软件保证质量的关键。通常在编写出每一个模块之后就需要对它做必要的测试(称为单元测试)。据我所查阅的相关资料显示,随着人们对软件工程化的重视以及对软件规模的日益扩大,软件分析、设计的作用越来越突出,而且资料表明,60%以上的软件错误并不是程序错误,而是分析和设计的错误。因此,做好软件需求和设计阶段的测试工作就显得非常重要。
2.设计测试框架, 模拟测试数据
- a.首先来测试一下输入正确的加减乘除的式子时的运行结果(加法单独一个,减乘除再各举一个,为了不赘述,就三个都放在一起写出来啦)


- b.现在来看一下当输入是有错误的时候,例如 “1 ++ 2”的提示信息,这里我们用正则表达式来对输入错误进行处理(这一步真的花了好久的时间呀)
1 public void RegexMatches(String s){//正则表达式 2 String pattern = "(\\\\+|\\\\-|x|÷){2,}"; 3 Pattern r = Pattern.compile(pattern); 4 Matcher m = r.matcher(s); 5 if(m.find()==false){ 6 System.out.println("请输入正确算式");} 7 }

- c.乘胜追击,再来看一下下一个有可能出现的错误:在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”
1 //对取值范围溢出的处理 2 if(Math.min(Integer.parseInt(str[0]), Integer.parseInt(str[0]))<=-1000||Math.max(Integer.parseInt(str[0]), Integer.parseInt(str[0]))>=1000) 3 System.out.println("请输入在-1000~1000的数"); 4 else 5 result =String.valueOf(Integer.parseInt(str[0])+Integer.parseInt(str[1]));
不负众望地报错啦

- d.如果是 “ 248 / 0” 怎么办? 这个问题最好解决啦,只要判断分母为0的时候报错就好啦
1 String[] str=s.split("[÷]"); 2 if(str.length==2){ 3 if(str[1]=="0") 4 System.out.println("分母不能为0");

- e.代码覆盖率

3.小结与感受
- 第一点:第一眼看到这次的作业第一感觉是,诶,肯定简单,慢慢做,该实现的功能前两次作业都实现了。开始做之后真是恨自己太年轻.....前两次作业的时候没有去考虑如果出现输入错误要怎么处理,所以只能对代码进行回炉重造了,我是深刻领悟到了软件测试的重要性了。其中最难处理的是输入++时该怎么处理,百度了好多种方法,看起来还是正则表达式靠谱点,但也是调试了好久总算能解决了这个问题。
- 第二点:划重点!这一点真的不是我们的错,不知道是电脑中毒了还是coding的bug,我们明明是交替的进行commit的,但是coding上只会留下最后一个人的提交记录,几天前的记录都没了,有图为证,我们也不想有这种错误,但它就是发生了。。。 有图为证,我们是冤枉的,还请明鉴哪~~~

下一个人提交之后到提交记录里看只有

时间还是错的!内容还是之前的!【摊手】
4.驾驶员与领航员
给队友一个汉堡包
- 先给一片面包:在结对编程的时候发现我的队友还是特别认真的,遇到要实现的功能实现不了,就会一直查资料,百度等等,一定要把它做出来为止,而且一定要做得比较完美之后才肯“罢休”。
- 再给一块肉:队友在很认真的同时,脾气比较浮躁,容易因为bug非常“抓狂”,缺少耐心,喜欢跟bug斗气,这样就浪费了更多时间。
- 再给一个面包:总体来说,队友的表现还是非常好的,非常负责,非常认真,能效率较高地完成好代码。
对结对编程的感受
结对编程能很好地让我们感受驾驶员与领航员的角色的区别。在我做领航员的时候,队友敲代码,我会指点她哪里可能出错,用什么方法实现比较好。在队友做领航员的时候,她能很好地提醒我怎么正确地调用函数。我们在聊起作业时也都可以滔滔不绝地讨论什么功能用什么方法实现比较好。总体感受是,结对编程比个人作业更有吸引力,更有趣一些。
附上靓照:

5.PSP
| PSP2.1 | Personal Software Process Stages | Time (h) Senior Student | Time (h) |
| Planning | 计划 | 0.1 | 0.1 |
| · Estimate | 估计这个任务需要多少时间 | 0.1 | 0.1 |
| Development | 开发 | 3 | 3.3 |
| · Analysis | 需求分析 (包括学习新技术) | 0.2 | 0.5 |
| · Design Spec | 生成设计文档 | 0.3 | 0.2 |
| · Design Review | 设计复审 | 0.2 | 1.2 |
| · Coding Standard | 代码规范 | 0.1 | 0.1 |
| · Design | 具体设计 | 2 | 1 |
| · Coding | 具体编码 | 1 | 1.5 |
| · Code Review | 代码复审 | 0.3 | 0.1 |
| · Test | 测试(自我测试,修改代码,提交修改) | 0.4 | 0.5 |
| Reporting | 报告 | 0.15 | 0.1 |
| · | 测试报告 | 0.02 | 0.02 |
| · | 计算工作量 | 0.02 | 0.04 |
| · | 并提出过程改进计划 | 0.3 | 0.3 |

浙公网安备 33010602011771号