测试反模式:有效规避常见的92种测试陷阱
上QQ阅读APP看书,第一时间看更新

一般来说,在软件项目上花的1美元中,差不多有50美分是花在寻找和修复缺陷上。而这50美分中有40美分是花在各种各样的测试上,这其中总共有超过20种测试。

软件测试是软件工程的一个奇怪的组成部分。作为软件项目主要的成本动因,测试成本随着应用程序的规模而上升,令人震惊的是,测试很少能做得很好。然而,由最好的作者写的最好的软件工程类的一些书籍涵盖了这个话题。如果快速搜索网页或网上书店,就会发现几十本有关软件测试类的书籍,其中许多都相当不错。

看起来似乎有一些社会原因导致测试不像它本身那样复杂。其中一个原因是,并非每一个测试团队成员都会读任何关于测试的书籍。另一个原因是,与那些已获得认证并且知道如何测试的测试人员相比,缺乏培训并且没读过测试书籍的业余测试人员或者开发人员还是比较多。第三个原因,正如本书讲到的,许多之前的测试书籍只谈到了获得良好的检测结果的一部分。

很多测试书籍,可能跟所期望的那样是“如何做到”的书籍,按顺序讲授了测试计划、测试用例设计、测试用例建立、测试执行、缺陷识别、缺陷修复和修复集成。这些都是可教授的技能,而且应该被更好地理解。

Don Firesmith撰写的这本书对于测试方法有不同的观点。本书从相反的方向探讨测试,而不是另一本“如何做到”的书。书中解释了在他漫长的软件职业生涯和SEI工作期间观察到的测试的错误和失败。

这种反向观点使得Don的书天生是对“如何做到”类书籍的补充。我认为这是第一本强调什么会出错以及如何避免这些问题的测试相关图书。

在其他领域,结合如何做和避免常见的问题是教学顺序中的一个标准部分。例如,当学习打高尔夫时,现代高尔夫学校用录像机拍摄学生在学习时的表现。高尔夫球教练通过与各位学生回顾视频,告诉他们什么做得很好,什么做得不好。这是一种有效的培训手段。实际上与学会做正确的事情相比,停止做错误的事情更难。

在其他领域,如职业足球领域,也把训练分成要正确地做什么和如果基本的没做好会发生什么。这是教练和球员每场比赛后都要回看录像的原因。

直到这本软件测试的新书出版之前,各种书籍只强调怎样将事情做好,而没有太多涉及如果做不好会发生什么。

在本书中,“陷阱”(pitfall)是指任何可能会降低测试有效性的行动或决定。Don识别出了92种陷阱,这当然是迄今为止我所见过的最多的。

本书有点像经典的医学教科书,其中定义了不同的疾病,然后讨论了它们的可用的治疗方案。92种陷阱中的每一种都使用标准的格式和相同点来定义与讨论,这使得本书很容易阅读。

对陷阱的描述使用相同的标题,比如:

·描述

·可能出现之处

·典型症状

·潜在的负面后果

·潜在原因

·建议

·相关的陷阱

这种格式类似于我几年前写的一本书,书名是《Assessment and Control of Software Risks》,由Prentice Hall出版社出版。我的书用了一本医学书《Control of Communicable Diseases in Man》的格式,该书由美国公共健康服务出版社出版。

我曾在美国公众健康服务部门担任过程序员和系统分析员,与医疗诊断方法有过密切接触,它们看起来也适用于诊断软件问题。

我的一些课题与Don的非常相似,如:

·定义

·严重性

·敏感性和抵抗性

·预防方法

·控制方法

将医疗实践的一些诊断模式用于软件工程问题,是了解严重和常见情况的有效途径,同时Don用这个想法将软件工程带到了一个新的层次,尤其是对测试而言。

测试是移除软件应用缺陷的主要方式,但它不是唯一的方式。缺陷预防的协同组合、测前移除(如审查和静态分析)、由经过培训和认证的测试人员进行正式测试,可以使累计缺陷移除水平接近或者超过99%。更妙的是,这些好成果带来的是更短的工期和更低的成本,因为软件项目延迟的主要来源是测试过程中过多的缺陷,从而使得测试工期延长至计划的几倍。

我向各级项目经理、测试人员、质量保证人员和软件工程人员推荐这本书。我们在软件行业中的所有人员都应该知道测试中会面临的常见问题,以及如何避免或者减少这些问题。

Don的书是对测试类书籍、质量保证和软件工程类书籍的一个非常好的补充。它很可能成为测试培训的标准,同时也是专业测试人员和开发人员的非常好的参考书。它将是年轻的软件工程师的一个很好的教学辅助材料,也是我们所有人的一个很好的参考手册。

我也推荐将这本书作为外包软件合同谈判的背景材料使用。我经常作为质量差劲的软件诉讼案的专家证人,如果合同谈判前参考了这本书,就很可能会减少或消除这些诉讼。

——Capers Jones,Namcook Analytics LLC副总裁兼首席技术官