按测试模式来分类: 瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。

1、(传统的)瀑布模型:

项目计划->需求分析->软件设计->程序开发->软件测试->集成维护

软件测试的模型-LMLPHP

项目计划阶段:主要是制定项目总体研发计划,树立项目里程碑节点,输出项目计划书;

需求分析阶段:明确客户的需求定义,并对这个定义进行清晰的描述,是充分理解客户需求,描述产品功能的重要阶段,这个阶段会输出产品的需求规格说明书;

软件设计阶段:则会根据需求的定义,来确定产品实现的方案,包括定义软件硬件的结构,组建模块的实现方法,接口、界面、数据如何进行组织,这个阶段会输出包括概要设计,详细设计在内的多份说明书;

程序开发阶段:这个阶段是开发团队根据需求和设计具体实现我们的产品,来根据编程规范,构建我们的组件模块,最后输出我们的产品版本;

软件测试阶段则是通过独立的测试小组或者QI团队评估我们的产品是否满足需求的定义,最后输出测试结果报告,

集成维护阶段则是产品经过测试以后,交付给用户,根据用户的使用情况,再对产品进行维护,及必要的修改升级等操作。

优点:

  1. 强调需求,设计的作用;
  2. 前一阶段完成后只需关注后续阶段;
  3. 为项目提供按阶段划分的检查点,里程碑清晰
  4. 文档规范

缺点:

  1. 线性研发过程难以适应需求的频繁变化,
  2. 项目周期后段才可看到成果,用户要到末期才能看到开发结果,增加了开发的风险
  3. 强制的里程碑,对于开发过程中出现的变化,适应能力较差,
  4. 文档工作量较大,测试在项目的后期,文档的开发带来很大的工作量。

2、V模型(最广泛)

需求分析->概要设计->详细设计->软件编码->单元测试->集成测试->系统测试->验收测试

瀑布模型的变种。

软件测试的模型-LMLPHP

单元测试,集成测试:检测程序是否满足我们设计上的要求;

系统测试:在功能、性能这些质量特性上是否能够满足我们系统要求的指标;

验收测试:确定软件是否满足用户的一些需求,以及合同的一些规定;

优点:

在V模型里,强调软件开发的协作和速度,反应测试活动和分析测试的关系,并且将软件的实现和验证有机的结合了起来,V模型,明确的界定测试过程是存在不同阶段的。

缺点:

但是V模型也有一定的局限性,它仅仅把测试过程放在需求分析、系统设计、编码之后的一个阶段,忽视了测试对于需求的分析和验证。我们对需求的验证,对系统设计的验证,到后期的验收测试才有可能被发现,对于我们测试当中的测试需要尽早进行的原则在V模型中没有体现,这是V模型的局限。

3、W模型(双V模型)

软件测试的模型-LMLPHP

优点:开发与测试并行,有利于尽早发现问题,有利于及时的了解项目的测试风险,来及早的执行相应的应对方案,加快项目的进度。 

局限性:需求、设计、编码仍然是串行进行的,测试和开发保持线性的关系,上一个阶段完成之后才能进行下一个阶段,不能够很好的支持迭代的开发模型。

4、X模型

解决交接和频繁集成周期的问题

软件测试的模型-LMLPHP

左边描述的是针对单独的程序片段相互分离的编码和测试,此后进行频繁的交接,再通过集成,最终合成可执行的程序,对这些程序进行测试,这些程序还是需要冀衡测试,已经通过的程序可以进行封板提交给用户,也可以作为更大集成的一部分,X模型还定位了探索式测试,探索式测试是不进行事先计划的特殊类型的测试,能够帮助测试人员在测试计划之外发现更多的错误。

5、H模型:

把软件测试看成一个完全独立的流程,与其他流程并发进行,比如设计流程,编码流程,甚至是测试流程,

软件测试的模型-LMLPHP

H模型强调把测试分为测试准备和测试执行两个不同的阶段,只要由于其他流程的进展引发了测试就绪点的到位,这时候,只要测试准备不能完成,测试执行活动就可以或者需要开展,在H模型当中,测试是一个完全独立的模型,所以可以和其他的流程交叉地进行,也便于我们尽早的执行测试。

07-07 21:02