对于单元测试,人们往往存在很多的误解:

  1)浪费的时间太多:一旦编码完成,缺乏软件工程实践经验的开发人员就会迫不及待地进行软件集成工作,这样就能看到实际系统开始启动工作,在这种开发步骤中,真正意义上的进步被表面上的进步所取代。系统能进行正常工作的可能性很小,更多的情况是充满了各式各样的Bug。这些Bug包含在独立的单元里,其本身也许是琐碎、微不足道的,但在软件集成为一个系统时会增加额外的工期和费用。其实进行完整的单元测试和编写代码所花费的精力大致上是相同的,一旦完成了单元测试,在确保手头拥有稳定可靠部件的情况下,再进行高效的软件集成才是真正意义上的进步。

  程序的可靠性对软件产品的质量有很大的影响,在大型软件公司,每写一行程序,都可能要测试很多遍。由此可见大型软件公司对测试的重视程度。

  2)软件开发人员不应参与单元测试:单元测试常常和编码同步进行,每完成一个模块就应进行单元测试。在对每个模块进行单元测试时,不能忽略和其他模块的关系,为模拟这一关系,需要辅助模块,因此若单独的测试人员进行单元测试,往往工作量大,周期长,耗费巨大,其结果事倍功半。软件的开发者总是应当负责程序的单个单元的测试,保证每个单元能够完成设计的功能,其实在很多情况下,开发者也应进行集成测试。


单元测试存在的误解_单元测试


  3)我是很棒的程序员,不需要进行单元测试:如果我们真正擅长编程并且有绝招,就应当不会有错误,但这只是一个神话。编码不是可以一次性通过的,必须经过各种各样的测试,单元测试只是其中一种。缺乏测试的程序代码可能包含许多Bug,程序员在没有测试保护的情况下修改Bug,会引发更多的Bug,忙于除虫,于是更没有时间测试。如此循环往往会导致项目的崩溃。为避免产生恶性循环,代码必须有一张安全网来保护,随时进行的单元测试就是这张安全网。

  4)不管怎样,集成测试将会抓住所有的Bug:集成测试的目标是把通过单元测试的模块拿来,构造一个在设计中所描述的程序结构,通过测试发现和接口有关的问题。我们在测试工作开展的过程中,发现并提交进行合格性测试的软件,在测试过程中有很多Bug,有些严重问题,甚至导致死机,以至于不能再测试其他功能,进行错误修改,回归测试时又发现其他新的问题,使得测试工作很难开展下去。

  5)单元测试效率不高:在实际工作中,开发人员不想进行单元测试,认为没有必要且效率不高,其实错误发生和被发现之间的时间与发现和改正该错误的成本是指数关系,频繁的单元测试能使开发人员排错的范围缩得很小,大大节约排错所需的时间,同时错误尽可能早地被发现和消灭会减少由于错误而引起的连锁反应。

  在某一功能点上进行准备测试、执行测试和修改缺陷的时间,单元测试的效率大约是集成测试的两倍、系统测试的三倍。

  通过对这些误解的分析,可以对单元测试有进一步的了解,其实作为软件系统的最小组成单位,单元测试具有以下属性:

  ● 它是由一个程序员完成的。

  ● 它有一个详细的设计说明,包括输入定义、输出定义和加工说明。

  ● 它是一个可识别的看得见的程序组成部分,并容易被组合成程序。

  ● 能被单独地汇编和测试。

  ● 它的规模比较小,逻辑比较简单。

  如需了解更多测试技术信息请关注:深圳多测师软件与技术服务有限公司