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

对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。 直到 1957 年,软件测试才开始与调试区别开来,作为一种发现软件缺陷的活动。

由于一直存在着“为了让我们看到产品在工作,就得将测试工作往后推一点” 的思想,潜意识里对测试的目的就理解为“使自己确信产品能工作”。 测试活动始终后于开发的活动,测试通常被做为软件生命周期中最后一项活动而进行。当时也缺乏有效的测试方法,主要依靠 “错误推测”(Error Guessing)来寻找软件中的缺陷。

因此,大量软件交付后,仍存在很多问题, 软件产品的质量无法保证。 到了 20 世纪 70 年代,这个阶段开发的软件仍然不复杂,但人们已开始思考软件开发流程的问题,尽管对“软件测试”的真正含义还缺乏共识,但这一词条已经频繁出现,一些软件测试的探索者们建议在软件生命周期的开始阶段就根据需求制订测试计划,这时也涌现出一批软件测试的宗师,Bill Hetzel 博士就是其中的领导者。

1972 年,软件测试领域的先驱 BillHetzel 博士(代表论著《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. )。