Developer Testing

  • 单元测试(Unit test) 小段程序,从系统中隔离出来单独测试。可能是一个类,一个小程序
  • 组件测试(Component test) 类,包从完整的系统中隔离出来做测试
  • 集成测试(Integration test) 多个类,包,组件,或者子系统进行联合测试。这种测试应该越早进行越好,两个类可以集成测试就尽快测试
  • 回归测试(Regression test) 重复之前的测试用例
  • 系统测试(System test) 运行整个软件进行测试

一个项目规模越大,真正写代码的时间占比会减少。而架构,测试,集成占用的时间比例会增长。

开发人员测试软件的要点:

  • 对需求测试,确保需求完成。这部分测试用例应该在开始写代码直接就写好测试用例。
  • 对架构的关注点测试,确保架构被实现。 这些测试也应该先于代码实现。
  • 基础测试
  • 使用检测表,记录在这个项目中犯过的错误。

TDD

  • 先写测试,可以将引入去缺陷到发现并排除权限直接的时间缩减至最短。
  • 先写测试或者后写测试,在写测试这上面花的时间一样多。
  • 先写测试,更容易发现BUG,也更容易修复BUG
  • 先写测试,会强迫你先考虑需求与架构设计,这样对于自己的成长更好,也容易写出优质的代码。
  • 先写测试,可以暴露不合理的需求,一个烂需求,没有办法很好的实现功能测试

** 测试很好,但测试不是万能的 **

Limitations of Developer Testing

  • clean tests 开发人员通常只会写让代码正常运行的测试,比如用正常的数据来做测试,而不是拿脏数据来测试
  • 100% 的覆盖率不代表测试到位