5. 前置测试模型
前置测试模型是由 Robin F.Goldsmith等人提出的,该模型将测试和开发紧密结合, 提供了一种轻松的方式,可以使你的项目加快速度。
前置测试模型如图23-9所示。
前置测试模型将开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为。并且表示了这些行为在项目周期中的价值所在。如果其中有些行为没有得到很好的执行,那么项目成功的可能性就会因此而有所降低。如果有业务需求,则系统开发过程将更有效率。如果没有业务需求,我们进行开发和测试都是不可能的, 并且业务需求最好在设计和开发之前就被正确定义。这并不仅仅是为以后提交上来的程序的测试做好初始化准备,也是为了验证需求是否是可测试的。这些测试可以交由用户来进行验收测试,或者由开发部门做某些技术测试。
很多测试团体都认为,需求的可测试性即使不是需求首要的属性,也应是其最基本 的属性之一。因此,在必要的时候可以为每一个需求编写测试用例。不过,基于需求的 测试最多也只是和需求本身一样重要。一项需求可能本身是错误的,但它仍是可测试的。而且,你无法为一些被忽略的需求来编写测试用例。
前置测试将测试执行和开发结合在一起,并在开发阶段以“编码—测试—编码—测 试”的方式来体现。当程序片段一旦编写完成,就会立即进行测试。 一般情况下,先进 行的测试是单元测试,因为开发人员认为通过测试来发现错误是最经济的方式。但也可 以参考X 模型,即一个程序片段也需要相关的集成测试,甚至有时还需要一些特殊测试。
对每一个交付内容进行测试。源程序代码并不是唯一需要测试的内容,我们必须要用一定的方式对每一个交付的开发结果进行测试。模型图中的被圈框表示了其他一些要测试的对象,包括可行性报告、业务需求说明,以及系统设计文档等。这同V 模型中开 发和测试的对应关系是相一致的,并且在其基础上有所扩展,变得更为明确。
在设计阶段进行测试计划和测试设计,设计阶段是作测试计划和测试设计的最好时机。很多项目组要么根本不做测试计划和测试设计,要么在即将开始执行测试之前才飞快地完成测试计划和测试设计。在这种情况下,测试只是验证了程序的正确性,而不是验证整个系统本该实现的东西。
验收测试应该独立于技术测试,这样可以提供双重的保险,以保证设计及程序编码能够符合最终用户的需求。前置测试模型提倡验收测试和技术测试沿循两条不同的路线来进行,每条路线分别验证系统是否能够如预期设计一样可以正常工作。当单独设计好的验收测试完成了系统的验证时,我们即可确信这是一个正确的系统。
与 V 模型不同的是,前置测试模型认识到验收测试中所包含的3个要素:基于测试 的需求、验收标准和验收测试计划,其中基于测试的需求和验收标准都与业务需求定义 相联系,但是,验收测试计划则需要等到系统设计完成,因为验收测试计划是由针对按 设计实现的系统来进行的一些明确操作定义所组成,这些定义包括:如何判断验收标准 已经达到,以及基于需求的测试已算成功完成。
技术测试主要是针对开发代码的测试,如 V 模型中所定义的动态的单元测试,集 成测试和系统测试。另外,前置测试还提示我们应增加静态审查,以及独立的QA 测试。 QA 测试通常跟随在系统测试之后,从技术部门的意见和用户的预期方面出发,进行最后的检查。同样的还有负载测试、安全性测试、可用性测试等,这些测试不是由业务逻 辑和应用来驱动的。对技术测试最基本的要求是验证代码的编写和设计的要求是否相一 致。 一致的意思是系统确实提供了要求提供的,并且系统并没有提供不要求提供的。技 术测试在设计阶段进行计划和设计,并在开发阶段由技术部门来执行。
前置测试模型用较低的成本来及早发现错误,并且充分强调了测试对确保系统的高质量的重要意义。在整个开发过程中,反复使用了各种测试技术以使开发人员、经理和用户节省其时间,简化其工作。