软件测试技术与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 软件测试概述

1.3.1 软件测试的定义

在计算机诞生的初期,软件与硬件的依存度很高,并且软件的产出没有任何工程化的特征,对于软件中缺陷的发现和处理也没有规范化的方法和手段,这个时期没有清晰的软件测试的概念,人们会认为程序的调试就是软件测试活动。随着软件规模的增长、软件危机的爆发,于是出现了“软件工程”概念,人们希望以工程化的原则、规范、方法,在技术和工具的支持下进行软件开发,并保证软件的质量。在软件工程活动中,测试是必不可少且至关重要的环节。那么软件测试要解决什么问题呢?

1973年,Bill Hetzel给出了软件测试的第一个定义:“软件测试就是为了程序能够按照预期设想运行而建立足够的信息。”这个定义强调的是证实程序按预期运行,当软件测试这种技术手段发现程序能够按预期运行时,建立信息的目的也就达到了。但是这个定义受到一些人的质疑,他们认为测试本身是有局限性的,即使测试通过也不证明软件是对的,而且测试的目的不应该是去证明软件正确。

1979年,Glenford J.Myers给出了软件测试的一个新定义:“软件测试是为了发现错误而执行一个程序或系统的过程。”这个定义强调测试的目的是发现错误,软件测试应当竭尽所能去发现尽可能多的错误。

1983年,IEEE在软件工程术语标准中给出了软件测试的定义:“使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求,或是弄清预期结果与实际结果之间的差异。”这个定义强调了实际结果与预期结果的差异,作为国际组织发布的标准,它对软件测试活动产生了很大的影响,对软件测试的理论、方法、技术以及工具进步都有很大的促进作用。

不管哪个时间的定义,软件测试的目的都是一样的,这个目的就是“保证软件质量”,具体来讲就是要保证软件或系统符合相关的法律法规、技术标准和应用需求,降低软件的产品风险及应用风险。

1.3.2. 软件测试的流程

从软件测试的定义我们可以看到,软件测试是软件工程中一个非常重要的环节。对软件测试这个整体活动进行阶段性任务的划分,可使软件测试活动变得容易控制和管理。通常我们可以将软件测试的流程分为5个阶段,如图1-5所示。

图1-5 软件测试的流程

图1-5中的每个阶段的任务介绍如下。

(1)需求阶段:测试人员在需求阶段要了解需求、对需求进行分解,得出测试需求,即对软件要测试的内容及范围进行确定,并且要对需求没有进行详细说明的情况与产品人员进行沟通。

(2)测试计划阶段:该阶段测试负责人要编写好测试计划、测试方案,早计划早受益。

其他的测试人员要在该阶段对自己的测试任务及任务的时间节点等进行充分了解。在该阶段,还要对在项目组内部写好的测试计划进行讨论和评审,以便整个项目团队对测试活动有充分的了解,方便团队配合测试工作。

(3)测试设计和开发阶段:在该阶段测试人员适当地了解软件结构设计,对于设计测试用例是很有帮助的,测试人员可以根据需求和设计编写测试用例,或者开发测试脚本,编写自动化测试用例。

(4)测试执行阶段:该阶段是软件测试最为重要的阶段,这时候测试人员需要把测试用例进一步细化,根据测试用例和计划执行测试,在执行的过程中记录缺陷,并提交、跟踪、处理缺陷,直到关闭缺陷。

(5)测试评估总结:该阶段测试人员要编写测试总结报告,包括测试的覆盖率、测试过程是否规范、软件是否达到上线要求等内容。