结对编程2——单元测试

码市:https://git.coding.net/pyj76566/Homework.git

  组员:201421123085 童毅南

     201421123086 潘益靖

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

  1. 将计算模块提取出来,单独创建一个类;
  2. 将分数元素提取出来,单独创建一个类;
  3. 测试计算模块中的加减乘除;
  4. 测试分数元素模块中值的意义,以及测试两个分数是否等效等等;

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.1 Personal Software Process Stages Time (%) Senior Student Time (%)
Planning 计划    
· Estimate 估计这个任务需要多少时间 6h 7h
Development 开发    
· Analysis 需求分析 (包括学习新技术) 0.5h 0.5h
· Design Spec 生成设计文档 0 0
· Design Review 设计复审 0 0
· Coding Standard 代码规范 0.1h 0.2h
· Design 具体设计    
· Coding 具体编码 1h 1.2h
· Code Review 代码复审 0.5h 0.6h
· Test 测试(自我测试,修改代码,提交修改) 2h 2h
Reporting 报告 2h 2.6h
·Test Report 测试报告 0 0
· Size Measurement 计算工作量    
·Postmortem & Process Improvement Plan 并提出过程改进计划  
posted @ 2017-03-28 19:45  pyj086  阅读(217)  评论(1编辑  收藏  举报