回顾往昔:
在软件开发的不断实践过程中,人们积累经验教训,预估未来发展,总结出了很多的开发模型,比较典型的开发模型有,边做边改模型,瀑布模型,快速原型模型、螺旋模型,增量模型,演化模型,喷泉模型,智能模型,混合模型还有RAD模型以及最近比较流行的,基于网络的面向对象的模型——RUP(RationalUnifiedProcess,统一软件开发过程。但是遗憾的是,这些模型中,没有给予测试足够的重视和诠释。所以,才会有后来的软件测试过程模型的诞生,在这些测试模型中,兼顾了软件开发过程,对开发和测试做了很好的融合。
软件测试和软件开发一样,都遵循软件工程原理,遵循管理学原理。测试专家通过实践总结出了很多很好的测试模型。这些模型将测试活动进行了抽象,明确了测试与开发之间的关系,是测试管理的重要参考依据。今天我主要向大家介绍五种测试模型。分别为:V模型,W模型,H模型,X模型和前置测试模型。接下来,让我们一一分析:
每一类分别介绍,历史来源,具体原理,有图有真相。也可以说一下它们的不同之处
原理:V模型是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系,从左到右,描述了基本的开发过程和测试行为。V模型的策略既包括低层测试又包括了高层测试,低层测试是为了源代码的正确性,高层测试是为了使整个系统满足用户的需求。
如图所示,图中的箭头表示时间方向,左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即个测试过程的各个阶段。
它在测试中的地位,就和瀑布模型在开发中的地位一样,是一种最基础的模型,其他模型都是从这个模型演化来的。
价值体现:它非常明确地标明了测试过程中存在的不同级别,强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应。
局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现。忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试。言简意赅的说:没有明确说明早期的测试,不能体现“尽早地和不断地进行软件测试”的原则。
原理:在V模型中增加软件各开发阶段应同步进行的测试,别演化为一种W模型,因为实际上开发是“V”,测试也是与此相并行的“V”。W模型可以说是V模型自然而然的发展。它强调,测试伴随着整个软件开发周期,而且测试的对象不仅仅是层序,需求,功能和设计同样要测试。
价值体现:我们可以认为,W模型,测试与开发是同步进行的,从而有利于今早的发现问题。强调了测试计划等工作的先行和对系统需求和系统设计的测试;
局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整。
原理:H模型将测试活动从开发流程完全独立出来,使测试流程形成一个完全独立的流程,将测试准备活动与测试执行活动清晰地体现出来。
图中的流程仅仅演示了再整个生产周期中某个层次上的一次测试“微循环”。图中的其他流程可以是任意开发流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。
价值体现:软件测试是一个独立的流程,贯穿于产品的整个生命周期,与其他流程并发的进行。软件测试原则“尽早准备,尽早执行”;强调测试是独立的,只要测试准备完成,就可以执行测试。
局限性:本模型太过于模型化,重点在于理解其中的意义指导实际工作,而模型本身并无太多的可执行的指导意义。
原理:X模型左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后,将进行频繁的交接,通过集成最终合成为可执行的程序。这一点在图的右上方得以体现,而且这额可执行程序还需要进行测试,已通过集成测试的成品可以进行封版并提交给用户,也可以作为更大规模和范围内集成的一部分。同时,X模型还定位了探索性测试,如图右下方所示,这是不进行事先计划的特殊类型的测试,例如“我就这么测一下,结果会怎么样”。
价值体现:探索性测试,能够帮助有经验的测试人员在测试计划之外发现更多的软件错误。
局限性:探索性测试可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。
原理:前置测试模型将开发和测试的声明周期整合在一起,表示了项目声明周期从开始到结束之间的关键行为。它对每一个交付内容进行测试(图中的椭圆框表示了其他一些要测试的对象),在设计阶段进行测试计划和测试设计,让验收测试和技术测试保持相互独立。总之,它是一个将测试和开发紧密结合的模型,该模型提供了轻松的方式,可以使你的项目加快素的。。
价值体现:前置测试能给需要使用测试技术的开发人员、测试人员、项目经理和用户等带来很多不同于传统方法的内在的价值。与以前的方法中很少划分优先级所不同的是,前置测试用较低的成本来及早发现错误,并且充分强调了测试对确保系统的高质量的重要意义。它不仅能节省时间,而且可以减少那些令开发人员十分厌恶的重复工作。
在这些模型中,V模型强调了在整个软件项目开发中需要经历的若干个测试级别,但是它没有明确指出应该对软件的需求、设计进行测试,在这一点上,W模型得到了补充。但是W模型和V模型一样没有专门针对测试的流程说明。随着软件测试的不断发展,第三方测试已经独立出来这个时候,H模型就得到了相应的体现,表现为测试独立。X模型和前置测试模型又在此基础上增加了许多不确定的因素处理情况,这就对应了实际情况中,项目经常变更的情况发生。
总而言之,在实际的项目中,我们要合理应用这些模型的优点,比如在W模型下,合理运用H模型的思想进行独立的测试,或者在前置测试模型中,参考X模型的一个程序片段也需要相关的集成测试的理论等,将测试和开发紧密结合,寻找最适合的测试方案。