(图片来源网络,侵删)
在软件开发过程中,人们根据经验教训并结合未来软件的发展趋势总结出了很多软件开发模型,如瀑布模型、快速原型模型、迭代模型等,这些模型对软件开发过程具有很好的指导作用,但遗憾的是它们对软件测试并没有给予足够的重视,利用这些模型无法更好地指导软件测试工作。软件测试是与软件开发紧密相关的一系列有计划的活动,是保证软件质量的重要手段因此人们又相继设计了很多软件测试模型用于指导测试工作。软件测试模型兼顾了软件开发过程,对软件开发和测试进行了很好的融合,它既明确了软件开发与测试之间的关系,又使测试过程与开发过程产生交互,是测试工作的重要参考依据。软件测试模型对测试工作具有指导作用,对测试效果与质量都有很大的影响,很多测试专家在实践中不断改进创新,创建了很多实用的软件测试模型。下面介绍几种比较重要的软件测试模型。V模型V模型是由保罗·鲁克(Paul Rook)在20世纪80年代提出的,它是软件测试模型中最具有代表性的模型之一。V模型是瀑布模型的变种,在瀑布模型的后半部分添加了测试工作如下图所示。V模型描述了基本的开发过程与测试行为,主要反映了测试活动分析与设计之间的关系。它非常明确地表明了测试过程所包含的不同级别,以及测试各阶段与开发各阶段所对应的关系。V模型的左边是自上而下、逐步细化的开发过程,右边是自下而上、逐步集成的过程,这也符合了软件开发与软件测试的关系。V模型应用瀑布模型的思想将复杂的测试工作分成了目标明确的小阶段来完成,具有阶段性、顺序性和依赖性,它既包含了对于源代码的底层测试,也包含了对于软件需求的高层测试。但是V模型也有一定的局限性,它只有在编码之后才能开始测试,早期的需求分析等前期工作没有涵盖其中,因此它不能发现需求分析等早期的错误,这为后期的系统测试、验收测试埋下了隐患。W模型W模型是由Ⅴ模型演变而来的,它强调测试应伴随整个软件生命周期。其实W模型是个双V模型,软件开发是一个V模型,而软件测试是与开发同步进行的另一个V模型如下图所示。W模型的测试范围不仅包括程序,还包括需求分析、软件设计等前期工作,这样有利于尽早地全面发现问题。但是W模型也有自己的局限性,它将软件开发过程分成需求、设计、编码、集成等一系列的串行活动,无法支持迭代、自发性等需要变更调整的项目。H模型为了解决V模型与W模型存在的问题,有专家提出了H模型,H模型将测试活动完全独立了出来,形成一个完全独立的流程,这个流程将测试准备活动和测试执行活动清晰地体现出来。测试流程和其他工作流程是并发执行的,只要某一个工作流程的条件成熟就可以开始进行测试。例如在概要设计工作流程上完成一个测试,其过程如下图所示。只是体现了软件生命周期中概要设计层次上的一个测试“微循环”。在H模型中测试级别不存在严格的次序关系,软件生命周期的各阶段的测试工作可以反复触发、迭代,即不同的测试可以反复迭代地进行。在实际测试工作中,H模型并无太多指导意义,读者重点是理解其中的设计意义。X模型X模型的设计原理是将程序分成多个片段反复迭代测试,然后将多个片段集成再进行选代测试,如下图所示。X模型左边描述的是针对单独程序片段进行的相互分离的编码和测试,多个程序片段进行频繁的交接,在X模型的右上部分,将多个片段集成为一个可执行的程序再进行测试。通过集成测试的产品可以进行更大规模的集成,也可以进行封装提交给客户。在X模型的右下部分还定位了探索性测试,它能够帮助有经验的测试人员发现更多测试计划之外的软件错误,但这对测试人员要求会高一些。上面共介绍了4种软件测试模型,在实际测试工作中,测试人员更多的是结合W模型与H模型进行工作,软件各个方面的测试内容是以W模型为准,而测试周期、测试计划和进度是以H模型为指导。X模型更多是作为最终测试、熟练性测试的模板,例如对一个业务测试已经有2年时间,则可以使用X模型进行模块化的、探索性的方向测试。
0 评论