细说软件测试的由来

作者:肉串   发布时间:2020-06-24

软件测试是伴随着软件的产生而产生的。早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。

 

直到1957年,软件测试才开始与调试区别开来,作为一种发现软件缺陷的活动。由于一直存在着“为了让我们看到产品在工作,就得将测试工作往后推一点”的思想,潜意识里对测试的目的就理解为“使自己确信产品能工作”。测试活动始终后于开发的活动,测试通常被做为软件生命周期中最后一项活动而进行。当时也缺乏有效的测试方法,主要依靠 “错误推测”(Error Guessing)来寻找软件中的缺陷。因此,大量软件交付后,仍存在很多问题,软件产品的质量无法保证。

 

到了20世纪70年代,这个阶段开发的软件仍然不复杂,但人们已开始思考软件开发流程的问题,尽管对“软件测试”的真正含义还缺乏共识,但这一词条已经频繁出现,一些软件测试的探索者们建议在软件生命周期的开始阶段就根据需求制订测试计划,这时也涌现出一批软件测试的宗师,Bill Hetzel 博士就是其中的领导者。1972 年,软件测试领域的先驱Bill Hetzel 博士(代表论著《The Complete Guide to Software Testing》),在美国的北卡罗来纳大学组织了历史上第一次正式的关于软件测试的会议。在 1973 年,他首先给软件测试一个这样的定义:“就是建立一种信心,认为程序能够按预期的设想运行。”(Establish confidence that a program does what it is supposed to do. )后来在 1983 年他又将定义修订为:“评价一个程序和系统的特性或能力,并确定它是否达到预期的结果。软件测试就是以此为目的的任何行为。”(Any activitiesaimed at evaluating an attribute or capability of a program or system. ) 在他的定义中的“设想”和“预期的结果”其实就是我们现在所说的用户需求或功能设计。他还把软件的质量定义为“符合要求”。他的思想的核心观点是:测试方法是试图验证软件是“工作的”,所谓“工作的”就是指软件的功能是按照预先的设计执行的,以正向思维,针对软件系统的所有功能点,逐个验证其正确性。软件测试业界把这种方法看作是的软件测试的第一类方法。

 

尽管如此,这一方法还是受到很多业界权威的质疑和挑战。代表人物是 Glenford J. Myers(代表论著《The Art of Software Testing》)。他认为测试不应该着眼于验证软件是工作的,相反应该首先认定软件是有错误的,然后用逆向思维去发现尽可能多的错误。他还从人的心理学的角度论证,如果将 “验证软件是工作的”作为测试的目的,非常不利于测试人员发现软件的错误。于是他于 1979 年提出了他对软件测试的定义:“测试是为发现错误而执行的一个程序或者系统的过程。(” The process of executing a program or system with the intent of finding errors.)这个定义,也被业界所认可,经常被引用。除此之外, Myers 还给出了与测试相关的三个重要观点,那就是:

测试是为了证明程序有错,而不是证明程序无错误;

一个好的测试用例是在于它能发现至今未发现的错误;

一个成功的测试是发现了至今未发现的错误的测试。

 

回顾软件测试的起源与发展,就是方法论的一种体现。当人们一开始认识软件测试的时候,认为软件测试是软件开发活动中的最后一个环节,就像是工厂生产的产品需要经过最后的质检一样。早期的观点认为,检验一个软件产品质量的好坏,是证明它“能正确工作”,在这个前提之下去检查自然就会走偏差;而反过来看如果前提改成“软件是存在错误的,错误或大或小”,那么就要去证明软件产品里面有错误、有缺陷、有用户不满意的地方。这种前后期观念的改变,是经历过很长阶段的摸索与总结。人们关注软件开发的过程,关注开发过程中到底哪些环节上容易出问题,怎么能够在软件产品开发阶段,甚至于在产品需求获取阶段,把软件产品中容易出现的问题尽量使之最小化,最好是完全杜绝。

 

早期的计算机软件产品很少,有很多要么是专门为某一个行业或某一个企业专门定制的,要么是随着计算机硬件免费赠送的,很多软件产品还不是流通的商品,人们对这样的软件产品即使发现了问题,也很宽容,毕竟不是花钱买的,这种现状曾经在金山公司的WPS2000文字处理系统出现过。当计算机迅速普及以后,计算机商业化软件产品的大量出现,用户是掏钱买的商品,就会对软件产品质量要求很高,那么使得软件开发的效率和质量尤为重要。我们试想一下,在庞大的计算机用户中,如果经常出现计算机操作系统蓝屏、死机的话, 用户的不满情绪会日益高涨,到忍无可忍的情况下就会投诉开发厂家,甚至于进行法律诉讼。所以基于这样的情况下,软件测试人员的需求量大量增加,软件测试工作也越来越被企业所重视。

 


本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-60725088-8054),我们将立即处理,马上删除。



沪ICP备07036474号-4 |

沪公网安备 31010702003220号

2015-2023 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.