- 软件测试技术指南
- 斛嘉乙 符永蔚 樊映川
- 2121字
- 2025-02-22 07:57:17
1.4 软件测试模型
软件测试根据不同的测试对象以及测试项目的背景可采用不同的测试模型实施测试活动。软件测试模型有:V模型、W模型、H模型、X模型、敏捷测试等。
1.4.1 V模型
RAD(Rap Application Development,快速应用开发,简称RAD)是软件开发过程中的一个重要模型,由于其模型构图形似字母V,所以又称软件测试的V模型,它通过开发和测试同时进行的方式来缩短开发周期,提高开发效率,如图1-8所示。

图1-8 V模型
V模型最典型的测试模型,最早由PaulRook在20世纪80年代后期提出。
V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它强调软件开发的协作和速度,反映测试活动和分析设计关系,将软件实现和验证有机结合起来。明确了测试过程中存在不同的级别,并清楚描述测试的各个阶段与开发过程的各个阶段之间的对应关系。
V模型存在一些局限性:该模型呈现线性的发展趋势,而且,它把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,主要针对程序寻找错误,忽略了测试活动对需求分析、系统设计等活动的验证和确认。如果需求分析前期产生的错误,要到后期的验收测试才能发现。
V模型适用于项目比较小、周期比较短的项目。随着软件行业发展,业务规模的不断扩大,研发模型的不断改革,该模型已渐渐被淘汰。
1.4.2 W模型
W模型是在V模型的基础上演变而来的,是由Evolutif公司提出,相对于V模型,W模型增加了软件开发各阶段中同步进行的验证和确认活动。W模型由两个V组成,分别代表开发和测试过程,它明确表明开发和测试的并行关系,如图1-9所示。

图1-9 W模型
V&V理论,即验证(Verification)和确认(Validation),是在模型实施过程中进行的,具体地说,就是验证是否做了正确的事情和确认是否把事情做正确了。
1)验证:保证软件正确地实现了特定功能,验证是否满足软件生命周期过程中的标准和约定,判断每一个软件生命周期活动是否完成。
2)确认:保证所生产的软件可追溯到用户需求,确认过程是否满足系统需求,并解决了相应的问题。
W模型遵循了测试原则,要求测试活动从用户需求就介入,测试人员应该参与到对需求文档的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险及早制定应对措施,这将显著减少总体测试时间,加快项目进度,有利于尽早地发现问题。
测试伴随着整个软件开发周期,W模型强调,被测对象不仅仅是程序,需求、设计以及每个阶段输出的文档同样需要测试,也就是说,测试与开发是同步进行的。但是W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束后,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临的困惑。
从W模型可以看出,完成所有的测试活动,对测试工程师的技能也有一定的要求。测试团队也相继出现了不同职能的测试工程师。
1.4.3 H模型
H模型中,软件测试活动是完成独立的,它将测试准备和测试执行分离,有利于资源调配,降低成本,提高测试效率,充分体现测试过程的复杂性,如图1-10所示。

图1-10 H模型
测试准备:包括测试需求分析、测试计划、测试设计、测试用例、测试验证等;
测试执行:包括测试运行、测试报告、缺陷分析、回归测试等。
H模型,贯穿于整个产品的生命周期,与其他流程并发地进行。简单说,就是软件测试活动要尽早准备,尽早执行,只要某个测试达到准备就绪点,就可以开展测试执行活动,并且不同的测试活动可按照某个次序先后进行,也可以反复进行。
1.4.4 X模型
X模型的基本思想是由Marick提出的,Robin F.Goldsmith将其思想定义为X模型,如图1-11所示。

图1-11 X模型
X模型中,左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。在测试中,如果已通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。
X模型中提出一个重要的理念是探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,而且对测试员的熟练程度要求比较高。
1.4.5 敏捷测试
敏捷测试(Agile Testing)也是测试的一种模型,它通过不断修正质量指标,正确建立测试策略,确认客户的有效需求来保证产品的质量。敏捷测试是遵循的一种测试实践就是强调从客户的角度,即从使用系统的用户角度来测试系统。
敏捷测试需要关注需求变更、产品设计、源代码设计等。通常情况下,需要全程参与敏捷开发团队的讨论评审活动,并参与决策制定等。在独立完成测试设计、测试分析、测试执行的同时,还要关注用户需求并进行有效沟通,从而协助敏捷流程,推动产品的快速开发。敏捷测试不仅测试软件本身,还包含了软件测试的过程和模式,测试除了针对软件的质量,还要保证整个软件开发过程是正确的是符合用户需求的。
敏捷测试的主旨是测试驱动开发,所以对测试人员的要求有以下两点:
1)理解敏捷的核心价值观(沟通,反馈,尊重、学习、分享)。
2)具备测试基本的技能,也可以擅长某个领域(如:探索性测试、白盒测试等)。