3. H模型
在V 模型和W 模型中都存在一定的局限性,它们都把软件的开发过程视为需求、设计、编码等一系列串行的活动,但实际上,这些串行活动之间存在着相互牵制的关系, 并且在大部分时间内,他们是可以交叉进行的。虽然软件开发周期期望有清晰的需求、 设计和编码阶段,但实践经验告诉我们,严格的阶段划分只是一种理想状况。
软件项目不可能在需求非常明确的情况下才开始进行的,一般情况下,在最初的需求被评审通过后,开发工作就开始进行,当初版软件完成提交后,产品人员会根据实际情况更改部分需求或补充完善新的需求功能。所以,相应的测试之间也不存在严格的次序关系。同时,各层次之间的测试也存在反复触发、迭代和增量的关系。另一方面, V 模型和 W 模型都没有很好地体现测试流程的完整性。
为了解决V 模 型 和W 模型中存在的上述问题,有专家提出了H 模型。 H 模型将测 试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰 地体现出来。
软件测试H 模型如图23-5所示。
H 模型图仅仅演示了在整个生存周期中某个层次上的一次“测试循环”。图中的其 他流程可以是任意开发流程,如设计流程和编码流程。也可以是其他非开发流程,如 SQA 流程,甚至是测试流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试 执行活动就可以进行了。 H 模型的优缺点如图23-6所示。
H 模型揭示了一个原理:软件测试模型是一个独立的流程,贯穿于整个软件产品的 周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段 进入测试执行阶段。软件测试不仅仅指测试的执行,还包括很多其他的活动。并且软件 测试要尽早准备,尽早执行。软件测试可以根据被测物的不同而分层次进行。不同的测 试活动可以是按照某个次序先后进行的,也可以是反复进行的,只要某个测试达到准备 就绪点,测试执行活动就可以开展了。