【IT168 技术文章】
测试是研发过程中的一个重要环节,但同其它过程相比,测试往往没有得到应有的重视,因此,大多数测试模型往往也不为人知。在前2篇文章中,我们已经讨论了历史悠久的V模型,以及X模型的强项和不足之处。这2个模型是当前被测试专家所推崇的主要的测试模型。在这篇文章中,我们将介绍前置测试模型。我们的客户、学生一致认为该方法可以帮助理解和指导有效的软件测试。前置测试从V模型和X模型中汲取其中精华,并设法弥补了它们的不足之处。
虽然前置测试也不是完美的,但它可以带来明显的益处。与其等待最完美的方法出现,还不如先采用能带来尽可能多益处的方法。另外,我们将会不断完善这个模型,当发现有值得加入进来的合适的内容时,我们就会马上进行改进。
前置测试模型可参考下面的图示:

前置测试模型体现了以下的要点:
开发和测试相结合
前置测试模型将开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为。并且表示了这些行为在项目周期中的价值所在。如果其中有些行为没有得到很好的执行,那么项目成功的可能性就会因此而有所降低。
如果有业务需求,则系统开发过程将更有效率。我们认为在没有业务需求的情况下进行开发和测试是不可能的。而且,业务需求最好在设计和开发之前就被正确定义。
对每一个交付内容进行测试
每一个交付的开发结果都必须通过一定的方式进行测试。源程序代码并不是唯一需要测试的内容。在图中的绿色框表示了其它一些要测试的对象,包括可行性报告、业务需求说明,以及系统设计文档等。这同V模型中开发和测试的对应关系是相一致的,并且在其基础上有所扩展,变得更为明确。
本文作者之一的Goldsmith已经提出过21项可以验证需求的精确性和完整性的测试技术作为其研究成果。大多数组织只使用了其中的一小部分。前置测试模型包括2项测试计划技术,这也是属于上述21项需求测试技术中的一部分。其中的第一项技术是开发基于需求的测试用例。这并不仅仅是为以后提交上来的程序的测试做好初始化准备,也是为了验证需求是否是可测试的。这些测试可以交由用户来进行验收测试,或者由开发部门做某些技术测试。很多测试团体都认为,需求的可测试性即使不是需求首要的属性,也应是其最基本的属性之一。因此,在必要的时候可以为每一个需求编写测试用例。不过,基于需求的测试最多也只是和需求本身一样重要。一项需求可能本身是错误的,但它仍是可测试的。而且,你无法为一些被忽略的需求来编写测试用例。
第2项技术是定义验收标准。在接受交付的系统之前,用户需要用验收标准来进行验证。验收标准并不仅仅是定义需求,还应在前置测试之前进行定义,这将帮助揭示某些需求是否正确,以及某些需求是否被忽略了。
同样的,系统设计在投入编码实现之前也必须经过测试,以确保其正确性和完整性。很多组织趋向于对设计进行测试,而不是对需求进行测试。Goldsmith 曾提供过15项以上的测试方法来对设计进行测试,这些组织也只使用了其中很小的一部分。在对设计进行的测试中有一项非常有用的技术,即制订计划以确定应如何针对提交的系统进行测试,这在处于设计阶段并即将进入编码阶段时十分有用。
在设计阶段进行计划和测试设计
设计阶段是做测试计划和测试设计的最好时机。很多组织要么根本不做测试计划和测试设计,要么在即将开始执行测试之间才飞快地完成测试计划和设计。在这种情况下,测试只是验证了程序的正确性,而不是验证整个系统本该实现的东西。
测试有2种主要的类型,这2种类型都需要测试计划。在V模型中,验收测试最早被定义好,并在最后执行,以验证所交付的系统是否真正符合用户业务的需求。
与V模型不同的是,前置测试模型认识到验收测试中所包含的3种成份,其中的2种都与业务需求定义相联系:即定义基于需求的测试,以及定义验收标准。但是,第三种则需要等到系统设计完成,因为验收测试计划是由针对按设计实现的系统来进行的一些明确操作定义所组成,这些定义包括:如何判断验收标准已经达到,以及基于需求的测试已算成功完成。
技术测试主要是针对开发代码的测试,例如V模型中所定义的动态的单元测试,集成测试和系统测试。另外,前置测试还提示我们应增加静态审查,以及独立的QA测试。QA测试通常跟随在系统测试之后,从技术部门的意见和用户的预期方面出发,进行最后的检查.同样的还有特别测试。我们取名特别测试,并把该名称作为很多测试的一个统称,这些测试包括负载测试、安全性测试、可用性测试等等,这些测试不是由业务逻辑和应用来驱动的。
对技术测试最基本的要求是验证代码的编写和设计的要求是否相一致。一致的意思是系统确实提供了要求提供的,并且系统并没有提供不要求提供的。技术测试在设计阶段进行计划和设计,并在开发阶段由技术部门来执行。