软件测试模型

常见的软件测试模型包括V模型、W模型、H模型、X模型和前置模型。

V模型
软件测试若使用经典的V模型阶段可以分为
单元测试
集成测试
系统测试

V模型是最具有代表意义的测试模型。V模型是软件开发瀑布模型的变种，它反映了测试活动与分析和设计的关系 。
从左到右，描述了基本的开发过程和测试行为，非常明确地标明了测试过程中存在的不同级别，并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系 。
左边依次下降的是开发过程各阶段，与此相对应的是右边依次上升的部分，即各测试过程的各个阶段。 

       用户需求                      验收测试  
         需求分析和系统设计      确认测试和系统测试 
              概要设计         集成测试
                 详细设计   单元测试
                        编码

V模型问题：
测试是开发之后的一个阶段。
测试的对象就是程序本身。
实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。
整个软件产品的过程质量保证完全依赖于开发人员的能力和对工作的责任心，而且上一步的结果必须是充分和正确的，如果任何一个环节出了问题，则必将严重的影响整个工程的质量和预期进度

W模型
W模型由Evolutif公司公司提出，相对于V模型，W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成，分别代表测试与开发过程，图中明确表示出了测试与开发的并行关系。

W模型中测试与开发对应关系如下：

开发：需求分析、概要设计、　　详细设计、　　编码、　　软件集成、系统集成、部署
　　　　　↑　　　　↑　　　　　　　↑　　　　　↑　　　　　　↑　　　　↑　　　↑
测试：需求评审、概要设计评审、详细设计评审、单元测试、集成测试、系统测试、验收测试

W模型强调：测试伴随着整个软件开发周期，而且测试的对象不仅仅是程序，需求、设计等同样要测试，也就是说，测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如，需求分析完成后，测试人员就应该参与到对需求的验证和确认活动中，以尽早地找出缺陷所在。同时，对需求的测试也有利于及时了解项目难度和测试风险，及早制定应对措施，这将显著减少总体测试时间，加快项目进度。
但W模型也存在局限性。在W模型中，需求、设计、编码等活动被视为串行的，同时，测试和开发活动也保持着一种线性的前后关系，上一阶段完全结束，才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况，W模型并不能解除测试管理面临着困惑。

H模型
在H模型中，软件测试的过程活动完全独立，形成了一个完全独立的流程，贯穿于整个产品的周期，与其他流程并发进行，某个测试点准备就绪后就可以从测试准备阶段进行到测试执行阶段；软件测试可以根据被测产品的不同分层进行。

X模型
  X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。

  X模型的基本思想是由Marick提出的，但首先Marick不建议建立一个替代模型，同时，他也认为他的观点并不足以支撑一个模型的完整描述，
不过，Robin F.Goldsmith先生在自己的文章里将其思想定义为X模型，理由是，在Marick的观点中已经具备了一个模型所需要的一些主要内容，
其中也包括了像探索性测试这样的亮点。

　X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试，此后将进行频繁的交接，通过集成最终成为可执行的程序，
然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户，也可以作为更大规模和范围内集成的一部分。
多根并行的曲线表示变更可以在各个部分发生。由图中可见，X模型还定位了探索性测试，这是不进行事先计划的特殊类型的测试，
这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费，
对测试员的熟练程度要求比较高。

前置模型

软件工程
软件测试