软件测试发展的五个阶段
软件测试是伴随着软件开发的发展而发展的。从软件测试出现到现在,软件测试一共经历了五个阶段:
以调试为主的软件测试
在20世纪50年代,随着计算机的诞生,利用计算机完成复杂、快速计算的计算机编程也随之出现。这时的需求和程序本身也远远没有现在这么复杂多变,但是已经有人在完成编程之后开始考虑“怎么证明程序满足了需求?”的问题。这时的测试还没有明确的概念,主要是以调试为主,验证程序是否满足了需求。
以证明为主的软件测试
很快在1957年,Charles Baker在《软件测试发展》一书中就提出测试的概念,并且对调试和测试进行了区分:
1)调试(Debug),确保程序做了程序员想让它做的事情。
2)测试(Testing),确保程序解决了它该解决的问题。
这时的计算机软件数量、成本和复杂性都大幅度提升,测试的重要性也大大增强,测试的目不仅仅是验证,而且要确认软件是满足需求的,也就是我们常说的“做了正确的事情”。
以破坏为主的软件测试
1979年,C.J.Myers在《软件测试之艺术》一书中给出了软件测试的经典定义:
测试是为发现错误而执行程序的过程。
这个定义说明测试不仅要证明软件做了正确的事情,也要保证它没做不该做的事情。
所以好的测试用例是发现迄今为止尚未发现的错误的测试用例;成功的测试是发现了至今为止尚未发现的错误的测试。
这个阶段的测试的目的主要是找出软件中潜在的错误,所以说它是以破坏为主。这也使得软件测试和软件开发独立开来,测试需要更为专业的人员进行,毕竟开发人员在心理上总是不愿意给自己开发的软件找错。
以评估为主的软件测试
在1983年,出现了V&V(验证和确认)理论,测试被应用在整个软件生命周期中。同时IEEE提出的软件测试新的定义:
“使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。
软件测试以及测试工具在这个时期得到了快速的发展。
以预防为主的软件测试
以预防为主是当下软件测试的主流思想之一。
随着敏捷开发被提出以来,测试驱动开发、自动化的持续集成和测试等技术的应用,都体现出人们不再满足与编码后对程序的验证和确认,而是事先就通过测试来保证编写的代码的正确性。
从以调试为主到以预防为主,软件测试已经发生了翻天覆地的变化。每每想到现在一些实施GJB5000初级的组织的内部测试竟然还是以调试为主,不仅让人感慨GJB5000实施之路仍然任重道远。
这正是:
调试进化到预防,测试发展大变样
如若不能去发展,质量必然受影响
参考书目:软件测试技术指南,作者:斛嘉乙,符永蔚,樊映川,出版社:机械工业出版社