天天看点

【软件测试基础理论知识】3.1软件测试模型——V模型、W模型、H模型总结

软件测试模型

    • 软件测试模型
      • 1. V模型
      • 2.W模型
      • 3.H模型
    • 总结

软件测试模型

软件测试根据不同的测试对象以及测试项目的背景可采用不同的测试模型实施测试活动。软件测试模型有:V模型、W模型、H模型、X模型、敏捷测试等。

1. V模型

V模型是对瀑布模型的改进,纠正了不重视测试阶段重要性的错误认识。

从整体上看起来,它就是一个V字形结构。以“编码”为分割点,由左右两边构成,左边为开发阶段,右边为测试阶段,开发阶段的每一步骤都有与其对应的测试级别。V模型的重要意义在于,非常明确地表明了测试过程中存在的不同级别,并且非常清晰地描述了这些测试阶段和开发阶段的对应关系。 如图所示:

【软件测试基础理论知识】3.1软件测试模型——V模型、W模型、H模型总结

V模型存在一些局限性:该模型呈现线性的发展趋势,把测试放在项目的最后阶段,没有尽早介入到开发中。而且主要针对程序寻找错误,忽略了测试活动对需求分析、系统设计的验证和确认。需求的满足情况一直要到后期的验收测试才能被验证出来。同时忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试。

学习小疑惑–个人理解

在学习V模型过程中,有些书会说:

“在软件生命周期,V模型的开发活动和测试活动几乎同时开始,这是两个并行的动态”——《软件工程》陈永

但实际上,我们都知道,V模型是一个线性的过程,把测试作为编码后的最后一个活动,也就是说,测试活动要等到编码结束后才会开始,这也是V模型的最大的缺点。那为什么有些书会说,测试和开发是几乎同时开始,是并行的呢?

个人认为:

这里所强调的并行性是指,在软件的需求得到确认并通过评审后,在软件开发过程中就会同时进行测试设计工作了。比如说:在概要设计时,就把集成测试用例编写出来了,这里体现了并行性。而这些事先设计好的测试用例要等到编码结束后,才能真正的得到执行验证,这里又体现了V模型的线性(串行性)。

一般来讲:单元测试所对应的是详细设计环节,也就是说,单元测试的测试用例是和详细设计一起出现的,在研发人员做详细设计的时候,相应的测试人员也就把测试用例写了出来;集成测试对应概要设计,在做模块功能分析及模块接口,数据传输方法的时候,就把集成测试用例根据概要设计中模块功能及接口等实现方法编写出来,以备以后作集成测试的时候可以直接引用;而系统测试,就是根据需求分析而来,在系统分析人员作系统分析,编写需求说明书的时候测试人员就根据客户需求说明书,把最后能实现系统功能的各种测试用例写出来,为做最后系统测试作准备。验收测试与用户需求对应,是非设计流程。

2.W模型

V模型没有体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段件开发各阶段中同步进行的验证和确认活动,演化为基于V&V原理的W模型。W模型补充了V模型中忽略的内容,强调测试活动要尽早介入,且被测对象不仅仅是程序,系统需求、系统设计以及每个阶段输出的文档同样需要测试。

W模型由两个V组成,分别代表开发和测试过程,它明确表明开发和测试的并行关系,如图所示:

【软件测试基础理论知识】3.1软件测试模型——V模型、W模型、H模型总结

V&V理论,即验证(Verification)和确认(Validation),是在模型实施过程中进行的,具体地说,就是验证是否做了正确的事情和确认是否把事情做正确了。

  • 1)验证:保证软件正确地实现了特定功能,验证是否满足软件生命周期过程中的标准和约定,判断每一个软件生命周期活动是否完成。
  • 2)确认:保证所生产的软件可追溯到用户需求,确认过程是否满足系统需求,并解决了相应的问题。

但是W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束后,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型,也不能适应开发过程中的变更调整。与V模型相同,没有对软件测试的流程进行说明。

3.H模型

H模型将测试准备和测试执行分离,有利于资源调配,降低成本,提高测试效率,充分体现测试过程的复杂性。H模型只体现了测试过程,没有体现开发过程,表明软件测试活动是完全独立的。如图所示:

【软件测试基础理论知识】3.1软件测试模型——V模型、W模型、H模型总结

测试准备:包括测试需求分析、测试计划、测试设计、测试用例、测试验证等;

测试执行:包括测试运行、测试报告、缺陷分析、回归测试等。

H模型强调测试活动要尽早准备,尽早执行,只要某个测试达到准备就绪点,即达到准入条件(测试方案、测试策略、测试用例、测试环境、输入输出项等是否明确)就可以开展测试执行活动,并且不同的测试活动可按照某个次序先后进行,也可以反复进行。(不需要像V模型和H模型一样,等到编码完成以后才开始执行测试)

它充分体现了测试流程的完整性、独立性以及测试过程(而非技术)的复杂性,强调了过程管理的重要性。

总结

V模型 强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应。但是测试介入的太晚,可能导致需求错误要等到最后才被发现。同时忽略了测试的对象不应该仅仅包括程序,没有明确指出对系统需求、系统设计的测试。

W模型 强调测试活动要尽早介入,且被测对象不仅仅是程序,系统需求、系统设计以及每个阶段输出的文档同样需要测试(对V模型的补充)。但和V模型一样,仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,无法支持迭代的开发模型,也不能适应开发过程中的变更调整。

H模型 H模型强调测试活动要尽早准备,尽早执行。 且软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行。只要某个测试达到准备就绪点就可以开展测试执行活动,支持迭代。