软件测试的历史应该从程序诞生的那有了,随着软件的发展,特别是互联网应用对软件发布的影响, 软件测试的价值也在逐渐发生了很多变化。 软件测试从单纯的发现软件缺陷,发展到“软件质量度量”,“预防质量缺陷” 等更大的质量范畴。随着从单纯的“质量保证” ,发展到“开发效率的提升”。

 

  首先,我们回顾一下软件测试的定义

  1979年Fred Mayer发布的测试经典 《软件测试的艺术》(The art of software testing ),它将软件测试定义为“带着发现错误的目的,执行被测软件”,简单的说是通常人说的:软件测试是找缺陷,找Bug。

  1995年Stephen H.Hank 写过一本书(《软件质量工程的度量和模型》) metrics and models in software quality engineering,它用工程的方法引入软件质量度量和软件质量周期的管理,质量度量包括代码覆盖率,测试用例的覆盖率和执行情况,用户满意程度,运维的质量管理等等。

  2007年 微软的几个测试人员写了一本书“The Practical Guide to Defect Prevention “(《质量缺陷预防实践指南》 讲的是如何通过在软件过程,方法和技术上,预防软件缺陷的产生。

  2008年 喜欢数据说话的Caper Jones 推出了 “Global Analysis of Productivity and Quality”《全面分析生产率和质量》, 从经济学,软件流程等的方面分析了生产率和软件质量之间的关系,其中也包括一些好的实践。

  然后,我们再看一看软件公司的变化

  微软:比尔 盖茨说过 “微软是一个测试公司”,可以说微软是非常重视软件测试的,在有些团队,软件测试人员数量超过开发人员。在光盘发布软件的时代,修复Bug的成本是非常高的。随着,Internet 应用的发展,应用软件有了更加快速的发布周期,服务器端修复Bug成本降低了很多,同时通过引入Testing In Production。微软也在引入一些变化,微软的开发人员有更多的责任,进行质量保证,包括单元测试,产品中缺陷的支持等,软件测试人员更加注重E2E的测试,测试框架,提高整个软件的开发效率等。

  谷歌:谷歌的开发和测试人员的比例是10:1,同时测试人员属于Productivity的部门,测试团队大部分是由丰富经验的测试人员,能够在新项目刚开始的时候,帮助建立测试框架,将其他项目好的测试经验带到这个项目中,项目执行起来以后,开发人员来编写,执行测试用例,并且对产品的缺陷直接负责。