软件测试基础知识之软件测试的定义

前言

软件测试是软件开发中不可或缺的一环,其核心目标是发现程序中存在的错误或缺陷,确保软件质量和可靠性。经典定义中,测试被视为执行程序以发现错误的过程,强调测试的挑战性和破坏性。IEEE标准定义则明确了测试的目的在于验证系统是否满足规定需求,并找出预期与实际结果的差异。国内定义则进一步细化了测试的过程、方法和对象,强调测试是一个遵循规范的技术活动,涉及对被检测软件的文档、程序和数据的全面测试。 在不同时期,软件测试还有多种理解,如评价程序功能、查找规格说明中的错误、度量软件质量等。测试不仅是对软件的检查,更是一个获取信息、降低决策风险的过程,为团队提供关于产品质量和项目环境的关键信息。

1 软件测试基础知识之软件测试的定义

Basics of Software Testing: Definition of Software Testing。

1.1 经典定义

1979,在G.J.Myers的经典著作《软件测试的艺术》中,软件测试被定义为:“测试是为了发现错误而执行程序的过程”。这个定义强调了软件测试的核心目标是发现程序中存在的错误或缺陷

Myers还进一步提出了与测试相关的三个重要观点:

(1)测试是为了证明程序有错,而不是证明程序无错误。这意味着测试的主要目的是找出程序中可能存在的问题,而不是证明程序是完美的。

(2)一个好的测试用例是在于它能发现至今未发现的错误。这强调了测试用例设计的重要性,即需要设计出能够覆盖到程序各个部分和可能情况的测试用例,以便发现更多的错误。

(3)一个成功的测试是发现了至今未发现的错误的测试。这表明成功的测试应该能够发现新的、之前未被发现的错误,从而提高软件的质量和可靠性。

这个定义和观点强调了软件测试的破坏性和挑战性,因为测试人员需要尝试破坏程序,找出其中的错误和缺陷。同时,这个定义也暗示了软件测试是一个持续的过程,需要在软件开发的整个过程中进行,以确保软件的质量和可靠性。

总结:

测试是为发现错误而执行程序的过程

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

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

1.2 标准定义

在1983年,IEEE(电气和电子工程师协会)对软件测试的定义是:“使用人工和自动化工具来测试或运行某个系统的过程,其目的是在于检验它是否满足规定的需求或者弄清预期结果与实际结果之间的差别”。这个定义明确了软件测试的主要目标和手段,即通过人工或自动的方式对系统进行测试,以验证其是否满足预定的需求,并找出预期结果与实际结果之间的差异。

测试是在用户需求和开发技术之间找一个平衡点

1.3 国内定义

根据GB/T 11457,软件测试的定义是:依据规范的软件检测过程和检测方法,按照测试计划和测试需求对被检测软件的文档、程序和数据进行测试的技术活动。这个定义强调了软件测试的过程需要遵循一定的规范和检测方法,并依据测试计划和需求来进行。

软件测试是一个过程,测试不只是测试执行,它包括从计划开始到测试结束的一系列活动。

软件测试需要测试方法和技术,或者说技巧。

软件包括程序、数据和文档,除了执行程序,数据和文档也需要测试

1.4 其他理解

不同时期关于测试的其他定义:

(1)确信程序做了它应该做的事(Hetzel,1973)。

(2)确认程序正确实现了所要求的功能。

(3)查出规格说明中错误,以及与规格说明不符的地方。

(4)测试是一切以评价程序或系统的属性、能力为目的的活动;测试是对软件质量的度量(Hetzel,1983)。

(5)评价程序或系统的过程。

(6)测试是与软件开发或维护工作并行进行的一个过程。

(7)测试是一个获取信息,降低决策风险的过程。通过测试,向整个团队提供关于产品质量和项目环境的信息,帮助他们做出决定。