《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.2节软件测试的发展

简介: 现在,大部分开发工具都把调试工具集成进来,调试已经成为开发人员开发工作中不可或缺的一部分。甚至测试脚本的开发工具也会把基本的调试功能集成进来。

本节书摘来自异步社区《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》一书中的第1章,第1.2节软件测试的发展,作者陈能技 , 黄志国,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 软件测试的发展
伴随着软件行业的发展,软件测试也在不断地发展,软件测试大概经历了如图1.2所示的几个重要的阶段。


262ca754d3b0e13e69a05d41168278de2178ed5f

1.2.1 软件调试
早期软件的复杂度相对较低,软件规模也比较小,因此软件错误大部分在开发人员的调试阶段就发现并解决掉了。这个阶段的测试就等同于调试。

现在,大部分开发工具都把调试工具集成进来,调试已经成为开发人员开发工作中不可或缺的一部分。甚至测试脚本的开发工具也会把基本的调试功能集成进来。如图1.3所示为TestComplete的调试工具栏。


d06308a4d42186f4230d85baa3c4882f9442e27f

1.2.2 独立的软件测试
在20世纪五六十年代,人们开始意识到仅仅依靠调试还不够,必须引入一个独立的测试组织来进行独立的测试。

这个阶段的测试绝大部分是在产品完成后进行的,因此测试的力度、时间都非常有限,软件交付后还是存在大量的问题。

这个阶段没有形成什么测试方法论,主要靠错误猜测和经验推断,也没有对软件测试的定位以及软件测试的真正含义进行深入的思考。

1.2.3 软件测试的第一次定义
1973年,Bill Hetzel博士给出了软件测试的第一个定义,即“软件测试就是对程序能够按预期的要求运行建立起一种信心”。

1983年,Bill Hetzel博士对这个定义进行了修订,改成“软件测试就是以评价一个程序或系统的品质或能力为目的的一项活动。”

因此这个阶段对软件测试的认识是:软件测试是用于验证软件产品是正确工作的、符合要求的。

但是同一时期,Glenford J. Myers则认为,软件测试不应该专注于验证软件是工作的,而是将验证软件是不工作的作为重点,他提出的软件测试定义是“测试是以发现错误为目的而进行的程序,或系统的执行过程”。

1.2.4 软件测试成为专门的学科
20世纪80年代后,软件行业飞速发展,软件规模越来越大,复杂度越来越高。人们对软件的质量开始重视。软件测试的理论和技术都得到了快速的发展。人们开始把软件测试作为软件质量保证的重要手段。

1982年,在美国北卡罗来纳大学召开了首次软件测试的正式技术会议,软件测试理论开始迅速发展,随之出现了各种软件测试方法和技术。

1983年,电气电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)对软件测试做出了如下定义。

使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。
这个阶段认为,软件测试是一门需要经过设计、开发和维护等完整阶段的软件工程。
因此,从这个阶段开始,软件测试进入了一个新的时期,软件测试成为一个专门的学科,形成了各种测试的理论方法和测试技术,某些测试工具开始得到广泛应用。

1.2.5 开发与测试的融合趋势
20世纪90年代后,软件工程百花齐放,出现了各种软件开发的新模式,以敏捷开发模式为代表的新一代软件开发模式开始步入历史的舞台,并且赢得很多开发团队的拥护。

由此带来的是对软件测试的重新思考,而大部分人倾向于软件测试将与软件开发融合的趋势的观点,开发人员将担负起软件测试的责任,测试人员将更多地参与到测试代码的开发中去。软件开发与测试的界限变得模糊起来。TDD把测试作为起点和首要任务。

1.2.6 为什么软件测试发展比较缓慢
尽管软件测试经过几十年的发展,已经得到了长足的进步,但是与软件开发的发展比较起来,可以看到软件测试的发展还是比较缓慢的。

软件开发得益于计算机硬件的发展、计算速度的提高,还有计算机语言的发展、编译器的发展、开发工具的发展,因此比起软件早期的开发,无论是开发速度还是工作效率都有了很大的提高。

软件开发摆脱了早期的机器语言编码方式和汇编语言,跨越了结构化编程语言,进入面向对象的时代,开发人员的编程能力得到了很大的提高。而开发工具的不断改进,则起到了推波助澜的作用,使得开发人员无论是在编码速度还是调试方面都受益匪浅。

反观软件测试,虽然测试工具层出不穷,但是并没有革命性的发展。测试人员大部分情况下还是要依赖手工的测试。

软件测试受到越来越多人的重视,但是大部分的软件测试方法和理论还是沿用20世纪的研究结果。因此,软件测试的发展还需要更多热爱测试的人投入,需要更多的研究,无论是在测试的理论、方法,还是工具上。

软件测试发展比较缓慢的另外一个原因是质量成熟度模型和质量风险评估没有一个比较广泛和可用的业界标准,测试的发展还会比较缓慢。

相关文章
|
14天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
23 0
|
1月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
1月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与质量:AI驱动的自动化测试策略
【2月更文挑战第19天】 在快速迭代的软件发展环境中,传统的手动测试方法已无法满足高效率和高质量的要求。本文探讨了人工智能(AI)技术如何革新现有的软件测试流程,通过引入AI驱动的自动化测试策略,旨在提高测试覆盖率,减少人为错误,优化资源分配,并缩短产品上市时间。我们将分析AI在识别潜在缺陷、生成测试用例、执行测试以及结果分析中的应用,并讨论实施这些策略时可能遇到的挑战和限制。
137 3
|
1月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
30天前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
14天前
|
测试技术 Linux Apache
网站压力测试工具webbench图文详解
网站压力测试工具webbench图文详解
11 0
|
17天前
|
安全 测试技术
深入理解白盒测试:方法、工具与实践
【4月更文挑战第7天】 在软件开发的质量控制过程中,白盒测试是确保代码逻辑正确性的关键步骤。不同于黑盒测试关注于功能和系统的外部行为,白盒测试深入到程序内部,检验程序结构和内部逻辑的正确性。本文将探讨白盒测试的核心技术,包括控制流测试、数据流测试以及静态分析等方法,同时介绍当前流行的白盒测试工具,并讨论如何在实际项目中有效实施白盒测试。文章的目标是为软件测试工程师提供一份综合性指南,帮助他们更好地理解和应用白盒测试技术。
|
19天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
39 6
|
23天前
|
Java 测试技术 API
软件测试中的自动化工具与策略
软件测试是确保软件质量的重要环节,而自动化测试工具和策略的应用在提高测试效率和准确性方面发挥着重要作用。本文将介绍几种常见的自动化测试工具,并探讨在软件测试中应用自动化测试的最佳实践和策略。