您的位置:首页 > 编程语言

结对编程2——单元测试

2017-03-28 19:45 204 查看
码市:https://git.coding.net/pyj76566/Homework.git  组员:201421123085 童毅南     201421123086 潘益靖

上一周大家为四则运算程序设计了2-3个新功能,本次在隔了一周之后,我们循序渐进地进阶。本次目标:

将计算模块提取出来,单独创建一个类;

将分数元素提取出来,单独创建一个类;

测试计算模块中的加减乘除;

测试分数元素模块中值的意义,以及测试两个分数是否等效等等;

a、需求分析:单元测试能够让我们写的代码更加健全,能够让程序能够不用牵一发而动全身,大大  的改善了后期的维护花费的工作量。我们把四则运算提取出来做单元测试  --加法运算--  
  首先我们提取的是加法,在calc.add(String str)中调用了Calculator中的加法,在和我们算出的答案用JUNIT中的asserEquals方法比较答案是否一致。  而且对式子的正确性进行判断  --减法运算--  
  与加法相同,在calc.sub(String str)中调用了Calculator中的减法,在和我们算出的答案用JUNIT中的asserEquals方法比较答案是否一致。   而且对式子的正确性进行判断  --乘法运算--  
  乘法我们测试了有的功能,都能执行过  --除法运算--  
  不仅四则运算,我们还额外测试了一些功能,有关分数的例如:  --判断一个数是否是分数--(对于分母为0的数,我们采用的是分子为1,分母为Integer.MAX_VALUE)  
  其中我们用到了assertFalse()方法

    用法:assertFalse(boolean condition);

       condition:如果condition结果为false,则通过测试.

 图中我们可以看出缺少分母的数判断是否为分数的结果是false所以是通过了,同理缺少分子,不是数字,分母为零,分子为零,分数误输入为“O”(字母O)结果都是false
  
 --计算分子分母的最大公约数--
 




 




 当我们故意输入一个错的最大公约数,自然是通过不了。 --判断两个分数是否相等-- 




  主要适用于测试两个分数是否相等的功能,这个方法用于比较系统算出的答案和用户输入的答案书否相等。 --代码覆盖率-- 计算模块的:




分数模块的:




 


 --小结与感受--  之前的代码我们已经做到了至少是好一些的规划,每每要用到一个新方法时候,都不在这个方法里面直接写,而是重新写一个目标方法,单元测试我觉得很有意义,能够让我写代码时候能够把一个方法写到尽量完美无缺,减少了以后的修改量,还是得代码,条理清晰,一看到就能知道功能,不用再从头开始想,这段代码的意义。
  

d. 在隔了一周之后再看之前的代码,是否更能体会到下面这些东西

(1) 良好的设计  测试过程中的提取模块的难易程度,就可以部分看出这个程序的模块化程度,当你把所有代码都集中在一个方法中时,大大加大了测试难度,往往还得重构。 好麻烦啊! (⊙﹏⊙)b感觉我对这个四则运算生成的设计跟别人不一样。我是随机生成两个分数类,然后固定两个分数,再随机生成运算符,最后生成一个式子字符串;而别人的是随机字符串,再把这个字符串中的元素捞出来(式子正确),给对应分数类赋值,对应运算符再说;所以我的测试类中就没有输入类似"1++2"的可能,而更多测试的是分数类的合理性和分数之间的运算和判断正确。因为我把它限制死了。相比来说,我这种扩展难度大,随机生成简单;

(2) 编码规范  讲到编码规范,就不得不讲到我的变量命名,真的是太烂了。一个好的命名应该能让别人大致判断出这个变量的作用和类型。不仅如此,每次编点程序,命名都有点小纠结,偶尔还要想一会儿。这种东西只能说多练吧,或者也可以多看看别人是怎么写的。至于那些适当的缩进嘛,对于eclipse来说,只不过Ctrl+Shift+F,就可以对齐了。

(3) 必要的注释  注释真的很重要,过了一段时间看这些自己写过的还真的有点东西很陌生,这时候注释就很重要了。如果没有这些注解,回忆这些方法还真需要一些时间。怎么讲呢?注释不仅对自己有用,其实更多的也可以给别人看。特别在看了JRE中的一些代码之后,会发现很多代码其实是很短的,但是他们写的注释比代码更多,这样可以生成文档让别人查询。

结队照片



PSP(Personal Software Process)表格

PSP2.1Personal Software Process StagesTime (%) Senior StudentTime (%)
Planning计划
· Estimate估计这个任务需要多少时间6h7h
Development开发
· Analysis需求分析 (包括学习新技术)0.5h0.5h
· Design Spec生成设计文档00
· Design Review设计复审00
· Coding Standard代码规范0.1h0.2h
· Design具体设计
· Coding具体编码1h1.2h
· Code Review代码复审0.5h0.6h
· Test测试(自我测试,修改代码,提交修改)2h2h
Reporting报告2h2.6h
·Test Report测试报告00
· Size Measurement计算工作量
·Postmortem & Process Improvement Plan并提出过程改进计划
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: