更新时间:2020-12-01 来源:黑马程序员 浏览量:
在早期的软件开发中,软件大多是结构简单、功能有限的小规模软件,那个时候的测试就等同于调试。随着计算机软件技术的发展,调试慢慢成为软件开发不可或缺的工作内容很多开发工具都集成了一些调试工具,但这个时候的调试还仅仅倾向于解决编译、单个方法的问题。
到20世纪50年代左右,随着软件规模越来越大,人们逐渐意识到仅仅依靠调试还不够还需要验证接口逻辑、功能模块、不同功能模块之间的耦合等,因此需要引入一个独立的测试组织进行独立的测试。在这个阶段,人们往往将开发完成的软件产品进行集中测试,由于还没有形成测试方法论,对软件测试也没有明确定位与深入思考,测试主要是靠猜想和推断,因此测试方法比较简单,软件交付后还是存在大量问题。
经历这一阶段后,人们慢慢开始思考软件测试的真正意义。1973年,黑泽尔(Hetzel博士第一次对软件测试进行了定义:软件测试是对程序或系统能否完成特定任务建立信心的过程。这个观点在一段时间内比较盛行,但随着软件质量概念的提出,它又不太适用了。1983年,黑泽尔(Hertel)博士对其进行了修改:软件测试是一项鉴定程序或系统的属性或能力的活动,其目的在于保证软件产品的质量。思想一旦爆发,就会呈现出百家争鸣的景象,这一时期,很多软件工程师或博士都提出了自己对软件测试的理解与定义。
G.J.梅耶斯(G.J.Meyers)博士认为“软件测试是为了寻找错误而执行程序的过程”,相对于测试是为了证明程序中不存在错误,他的观点是正确的。
1983年,IEEE在北卡罗纳大学召开了首次关于软件测试的技术会议,然后对软件测试进行了如下定义:软件测试是使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差异。
IEEE定义的软件测试非常明确地提出了测试是为了检验软件是否满足需求,它是一门需要经过设计、开发和维护等完整阶段的过程。
此后,软件测试便进入了一个全新的时期,形成了各种测试方法、理论与技术,测试工具也开始广泛使用,慢慢地形成了一个专门学科。
虽然软件测试得到了长足的发展,但相比于软件开发,它的发展还是相对不足,测试工作几乎全部是在软件功能模块完成或者整个软件产品完成之后才开始进行,这样发现软件缺陷之后,开发人员再进行修改,会消耗大量的人力、物力成本。20世纪90年代后兴起敏捷模型的软件开发模式,促使人们对软件测试重新进行了思考,更多的人倾向于软件开发与软件测试的融合,即不再是软件完成之后再进行测试,而是从软件需求分析阶段,测试人员就参与其中,了解整个软件的需求、设计等,测试人员甚至可以提前开发测试代码,这也是我们在敏捷模型中所提到的“开发未动,测试先行”。软件开发与测试融合,虽然两者的界限变得模糊,但软件开发与测试工作的效率都得到了极大的提高,这种工作模式至今依然盛行。
归结起来,软件测试的发展过程可使用下面的一张图来表示。
如今,随着人工智能与大数据时代的到来,软件测试更是受到越来越多的重视,但现在软件测试工作还依然沿用20世纪的方法、理论与思想成果,并没有突破性、革命性的进展。未来,随着软件开发模型与技术的发展,软件测试的思想与方法势必也会出现里程碑式的变化,这需要更多热爱软件测试的人员积极投入研究。
猜你喜欢: