高质量的测试 —— 《clean code》读后感

   TDD让你的代码可扩展、可维护、可复用,有了测试你就不担心对代码的修改!没有测试,每次修改都可能带来缺陷。无论架构多有扩展性,无论设计划分得有多好,没有了测试,你就很难做改动,因为你担心改动会不会引入不可预知的缺陷。

    TDD有三定律:

1)在编写不能通过的单元测试前,不可编写生产代码;

2)只可编写刚好无法通过的单元,不能编译也不算通过;

3)只可编写刚好足以通过当前失败测试的生产代码。

     这三条定律将你限制在大概30少一个的循环中。测试与生产代码一起编写,测试只比生产代码早写几秒钟。

      这样写程序,我们每天会编写数十个测试,每个月编写数百个测试,每年编写数千个测试。这样写程序,测试将覆盖所有生产代码。测试代码量足以匹敌生产代码量,导致令人生畏的管理问题。

      为了避免这个问题,高质量的测试应如下:

1)测试代码和生产代码一样重要,测试代码的腐坏会直接导致生产代码的腐坏,要重视测试代码的质量。

2)整洁的测试有三个要素:可读性,可读性和可读性。

3)如何保持可读性呢?和函数一样,要保持代码的自我解释性,要简短,命名有意义,要有抽象分层。

4)每个测试应保持断言数最少,这点类似于函数的“只做一件事”。

5)快速,测试应该够快,如果不快,就不会让程序员愿意去使用它了。而测试的目标应该是提倡程序员频繁使用。

6)独立。测试与测试之间应该没有依赖,保持每个测试都是独立的。

7)可重复性。 测试应在任何环境都可以重复通过,让代码不过于有针对性,对环境产生依赖。

8)自足验证。 测试应该有布尔值输出,非常直观地反映测试是否通过。你不应该查看日志文件来确认是否通过测试,也不应该手工对比两个不同文本文件来确认是否通过测试,如果测试不能自足验证,对失败的判断就会变量依赖主观,而运行测试也需要更长的手工操作时间。

9)及时。 测试应及时编写。单元测试应该恰好在使其通过的生产代码之前编写。

  

posted on 2010-03-31 10:57  真阿当  阅读(90)  评论(0编辑  收藏  举报