1.6 软件测试模型
在软件工程的发展过程中,形成了许多开发过程模型,如瀑布模型、原型模型等,软件测试的模型通常是对应着开发模型演变的。本节介绍常用的软件测试模型:V模型、W模型、X模型。
1.V模型
V模型最早是由Paul Rook在20世纪80年代后期提出的,目的是改进软件开发的效率和效果,是瀑布模型的变种。V模型明确地标注了测试过程中的各种环节,并且清楚地描述了这些测试阶段和开发过程中各阶段的对应关系,如图1-8所示。
从V模型看出,单元和集成测试应检测程序的执行是否能满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否能达到系统要求的指标;验收测试确定软件的实现是否能满足用户需求或合同的要求。
图1-8 软件测试V模型
2.W模型
V模型存在比较大的局限性。它把测试标定为软件工程的一个阶段性活动,而且是编码结束之后才开始的活动,启动时间太晚,不符合尽早开始测试的原则。这个模型会让人误解测试在软件工程中的作用,而且会造成软件缺陷发现的延迟,越是早期活动引入的缺陷越是晚被发现,这将带来缺陷修复的巨大代价。
W模型是对V模型的改进,增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字形模型组成,分别代表测试与开发过程,如图1-9所示。图1-9中明确标示出了测试与开发的并行关系。
图1-9 软件测试W模型
W模型强调了测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。这样的操作有利于尽早、全面地发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
但是W模型也有一些局限性,在W模型中需求、设计、编码等活动被视为串行的。测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。W模型无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能消除测试管理面临着的困惑。
3.X模型
X模型左边描述的是针对单独程序片段所进行的相互分立的编码和测试,此后,将进行频繁的交接,通过集成最终合成可执行的程序。X模型如图1-10所示,图中右下方还定位了探索性测试。这是不进行事先计划的特殊类项的测试,诸如“我这么测一下,结果会怎么样”,这种方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。
图1-10 X模型
4.测试模型小结
任何模型都不是完美的,应该尽可能地应用模型中对项目有实用价值的方面,但不强行地为使用模型而使用模型。在实际工作中,我们要灵活地运用各种模型的优点。如在W模型的框架下,运用X模型的方法对程序片段不断地进行测试,运用自身的测试经验来发现程序可能会出现的问题,并同时将测试和开发紧密结合,最终保证按期实现预定目标。