3.1.3 基于流程的测试过程模型
3.1.3.1 V模型
V模型定义了基本的开发过程和测试行为,描述测试过程活动与开发过程的关系,展示了动态测试的全部过程,确定了软件开发过程中需要经历的测试级别,是最具代表性、最基础的测试过程模型之一。基于V模型的测试策略包括低层测试和高层验证。低层测试旨在验证源代码的正确性,而高层验证将关注的重点放在软件系统与需求符合性的验证上。V模型如图3-3所示。
图3-3 V模型
3.1.3.2 W模型
V模型将软件测试作为编码结束后查找程序错误的一项过程活动,忽视了对系统规格、需求规格、系统设计的验证和确认,与瀑布模型形成紧耦合关系,不利于过程的展开和优化。1993年,为解决V模型存在的不足,Paul Herzlich将V模型耦合成V&V模型,即W模型。与V模型相比,W模型增加了软件开发各阶段需要同步开展的验证和确认活动,强调测试与开发同步。W模型如图 3-4所示。
图3-4 W模型
W模型是V模型的自然拓展,将测试过程同开发过程融为一体,每项测试活动对应一个开发行为,展示了测试与开发的并行关系,同时将程序、文档及数据作为测试对象,体现了测试贯穿于开发过程及“尽早和持续不断地进行测试”的思想,更加科学地展示了软件测试的目的和意义。
虽然V模型和W模型都将开发行为与测试行为相互对应,但W模型并不主张动态测试必须与开发阶段严格对应。例如,在某些情况下,系统测试中的功能测试、性能测试、安全性测试等即可构成动态测试的全部内容,在验收测试过程中,采信系统测试结果。同时,W模型也不限制动态测试行为必须严格地基于对应开发行为所产生的文档。
W模型同样基于瀑布模型,开发和测试保持线性的前后关系,不利于迭代支持、自发性及变更调整。对于迭代开发、敏捷开发、持续集成及基于原型的大型复杂系统开发,难以有效解决软件测试管理所面临的困难。
3.1.3.3 H模型
无论是V模型还是W模型,均基于瀑布模型,将需求分析、软件设计、编码实现过程线性展开。而工程上,这些活动可能相互交叉、相互重叠。软件测试是一个反复触发、不断迭代的过程活动,并非严格的次序关系。H模型将测试过程活动独立出来,形成一个独立过程,构建开发过程中某阶段的一次测试循环,清晰地展示测试策划、测试设计、测试执行等过程活动,贯穿于软件生命周期,与其他流程并发进行,当某个测试点准备就绪时,就可以从测试准备阶段进入测试执行阶段。H模型如图3-5所示。
图3-5 H模型
H模型描述了软件开发过程中某个阶段所对应的测试活动。模型中的其他开发流程可以是任意的开发流程,如软件设计或编码实现。也就是说,只要测试准备就绪,就可以开始测试执行活动。在软件生命周期过程中,存在多个这样独立的测试活动,与其他活动并发进行,不同测试活动可以按次序进行,也可以迭代实施。
3.1.3.4 X模型
X模型针对单独的软件元素,进行相互分离的编码和测试,然后通过频繁的交接,集成为可执行程序。X模型同样也是对V模型的改进。X模型如图3-6所示。
图3-6 X模型
X模型左侧描述的是对单独程序片段进行的相互分离的编码和测试,然后进行交接,集成为最终的可执行程序,随后对这些可执行程序进行测试。多条并行的曲线表示变更可能在各个部分发生。X模型定位了探索性测试,这是不进行事先计划的特殊类型测试,该方法能帮助测试人员在测试计划之外发现更多错误。但运用该模型可能造成人力、物力和财力浪费,并且对软件测试人员的能力和素质提出了更高的要求。