结对编程2——单元测试

Deadline:

2017-3-29 22:00PM,以博客发表日期为准。

评分基准:

  • 按时交 - 有分,检查的项目包括后文的三个方面
    • 题目要求
    • 代码提交
    • 博文规范
  • 晚交 - 0分
  • 迟交两周以上 - 倒扣本次作业分数
  • 抄袭 - 倒扣本次作业分数

题目描述:

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

  1. 把计算模块提取出来,单独创建一个类。
  2. 针对提取出来的计算类的接口函数做单元测试。
  3. 参考助教的示例:

    a. http://www.cnblogs.com/zhengrui0452/p/6507630.html

单元测试

一旦我们分离出核心模块,就可以针对该核心模块一步一步开发并做好单元测试,什么是单元测试?请阅读并学习《构建之法》第二章关于单元测试,回归测试的内容。

好了,你一定针对单元测试做了一番学习:

总之,你找到了适合自己语言的一种可以进行单元测试的工具。

那么,勤快的你已经迫不及待的想要自己上手来测一把:

  1. 通过单元测试代码,测试加法是否能正确工作;
  2. 通过单元测试代码,测试加减乘除功能。
  3. 通过单元测试代码,测试计算类对于各种参数的支持:

    a. 输入是有错误的,例如 “1 ++ 2”,

    b. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,

    c. 或者是 “ 248 / 0” 怎么办?

    d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?

    e. 那么如果真的计算结果是 “-1” 又怎么处理呢?
  4. [附加题]界面模块,测试模块和核心模块的松耦合。既然各组同学都写了高质量的各个模块,而且模块之间的关系是明确定义的,一致的,那么:
    • 小组A 的测试模块就可以测试小组B 的核心模块;
    • 小组C 的用户界面模块就可以和小组B 的核心模块结合起来,正常运行。对吧?
    • 那我们就让两个小组 (A,B) 在一起,测试一下下面的情况:
      • A的核心模块,加上B 的测试模块和用户界面模块
      • B的核心模块,加上A 的测试模块和用户界面模块
      • 两组同学分析合并之后出现了什么问题,为何会出现这样的问题?如何改进?
  5. 通过增量修改的方式,改进程序, 完成对各种错误情况的处理。

题目要求:

  1. 结对编程实现上述功能,同样的,在程序正式开发之前,请先预估下PSP每个环节的消耗时间(分钟),并在过程中统计实际耗时(分钟),最后提交PSP表格。依然注意,这个主要是给你们自己看的,不必造假数据。
  2. 继续两人结对协作,把编码规范、领航员和驾驶员角色互换做到位。
  3. 单元测试: 有单元测试保证,有代码覆盖率。

代码提交:

要求必须增量式开发-用git命令提交到coding.net地址,coding上要能看到多次commit的记录,同时必须有两个人各自的commit记录。

博文规范

  1. 提交的博客(两个同学都要写)必须完整包含下面内容:

    a. 需求分析:测试上有哪些详细的需求?

    b. 设计测试框架, 模拟测试数据:

      (1) 请给出计算模块的测试用例及运行结果
      (2) 描述测试过程中遇到的问题以及解决的方案。
      (3) 请展示上面描述的单元测试的每个环节。

    c. 小结与感受:通过测试,是否有效发现了程序计算模块的问题,并给予改进?

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

      (1) 良好的设计
      (2) 编码规范
      (3) 必要的注释

  2. 在随笔开头,备注两个同学的学号。
  3. 提供项目开发的coding.net 地址。
  4. 描述结对的过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。
  5. 提供此次结对作业的PSP。

参考链接:

http://www.cnblogs.com/xinz/p/4421170.html

posted @ 2017-03-21 10:29 zhmin 阅读(...) 评论(...) 编辑 收藏