单元测试——No Silver Bullet

来源:互联网 发布:淘宝电商培训靠谱吗 编辑:程序博客网 时间:2024/05/16 16:04

       单元测试是一种细粒度的测试,已经成为很多公司正常开发流程的一部分,在要求提交代码的同时提交单元测试代码。最著名的单元测试框架是JUnit,XP方法学先驱Kent Beck与设计模式代表人物Erich Gamma作品,成为单元测试领域的事实标准。寸有所长尺有所短,单元测试作为一门工具方法,致力于解决某些问题,只有全面、客观了解,才能在具体工作应用当中产生正面影响。

一、单元测试

  单元测式是在隔离状态下对某个模块进行测试,目的是检验其行为。一旦我们在受控的条件下对模块进行了彻底的测试,我们就能够有信心的预期软件整体情况。典型的单元测试,在某种人工环境下,调用被测试模块的方法,然后根据预期值,对返回结果进行检验。

  按合约设计(DBC)用文档约定了软件模块的权利与责任:做它声明要做的事情,不多不少,用文档记载这样的声明,并进行较验。单元测试是针对合约的测试。编写的测试用例确保给定的单元遵守其合约:代码是否符合合约,以及合约的定义是否与我们所认为的一样。通过广泛的测试用例和边界条件,测试模块是否实现了它允诺的功能。

二、优点与误解

优点:

  1. 提供一些例子,说明怎么样使用的你的模块。也许有过同样的经验,当使用第三方组件不清楚其API是怎么样调用时,会去查看其API文档,跳过其大段的说明,直接看其样例,然后照样例画瓢。同样单元测试具有样例的功能。
  2. 为以后的重构,提供安全保障。在《重构:改善既有代码设计》提到,在重构前,必须建立其测试保障体系,以确定重构是否有改其软件行为。
  3. 降低其不确定性从而降低其风险。在开发中,有多长时间是在和代码编缉器找交道,又有多长时间在和调试器打交道?从表面上看,为每个单元编写测试代码增加了工作量,但是因为这些测试代码不仅为你提供了保护网,可以帮你迅速定位错误,减小对调试器的依赖。所以增加一些工作量,物有所值,而且现今的测试工具,如JUnit,只需写很少的测试代码。

误解:

关于测试的若干误解




原创粉丝点击