2.2 软件测试模型

在开发模型中将测试部分强化衍生出来的模型一般称为软件测试模型。

2.2.1 V模型

V模型是最具有代表性的测试模型。在传统的开发模型中,比如瀑布模型,通常把测试过程作为在需求分析、概要设计、详细设计和编码全部完成之后的一个阶段,尽管有时测试工作会占用整个项目周期一半的时间,但是仍认为测试只是一个收尾工作,而不是主要的工程。V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系,从左到右,描述了基本的开发过程和测试行为,明确地标明了测试工程中存在的不同级别,清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。

V模型图中箭头代表了时间方向,左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即测试过程的各个阶段。V模型的软件测试策略既包括低层测试又包括了高层测试,低层测试是为了确保源代码的正确性,高层测试是为了使整个系统满足用户的需求。

V模型指出,单元和集成测试是验证程序设计,开发人员和测试人员应检测程序的执行是否满足软件设计的要求;系统测试应当验证系统设计,检测系统功能、性能的质量特性是否达到系统设计的指标;由测试人员和用户进行软件的确认测试和验收测试,追溯软件需求说明书进行测试,以确定软件的实现是否满足用户需求或合同的要求。

不同公司所采取的V模型在阶段划分上可能程度不一致,同样测试部分的阶段也有相应的变化,例如有的开发部分的划分为:用户需求-产品设计-系统需求-概要设计-详细设计-编码,而对应的测试部分的阶段变化为:验收测试-系统集成测试-系统测试-集成测试-单元测试。采取什么程度的阶段划分并不重要,重点是测试部分和开发部分阶段的一一对应。

V模型存在一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段。容易使人理解为测试是软件开发的最后一个阶段,主要是针对程序进行测试寻找错误,而需求分析阶段隐藏的问题一直到后期的验收测试才被发现。

2.2.2 W模型

V模型的局限性在于没有明确地说明早期的测试,不能体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段应同步进行的测试,于是演化为一种W模型,在此模型中开发是V,测试也是与此相并行的V。

W模型可以说是V模型自然而然的发展。W模型强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求设计同样要测试。只要相应的开发活动完成,我们就可以开始执行测试,可以说,测试与开发是同步进行的,从而有利于尽早地发现问题。以需求为例,需求分析一完成,就可以对需求进行测试,而不是等到最后才进行针对需求的验收测试。

W模型也是有局限性的。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动。同样,软件开发和测试保持一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才可以正式开始下一个阶段。这样就无法支持迭代、自发性以及变更调整。