zoukankan      html  css  js  c++  java
  • 结对编程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 并提出过程改进计划  
  • 相关阅读:
    《2048》开发5——实现计分功能
    《2048》开发4——继续编辑GameView类,实现游戏逻辑
    《2048》开发3——编辑Card类
    robotframework(rf)中对时间操作的datetime库常用关键字
    弹框和单选框,复选框
    Selenium IDE安装与使用
    全面的功能测试点总结
    RF新手常见问题总结--(基础篇)
    常用断言关键字(rf中)
    jmeter录制(ios)app脚本
  • 原文地址:https://www.cnblogs.com/pyj76566/p/6621892.html
Copyright © 2011-2022 走看看