从测试生命周期就可以看出瀑布和敏捷项目之间最大的差异。瀑布项目对每个阶段都有严格的准入和准出标准,而且只有前一个阶段结束,才可以进入下一个阶段。而敏捷项目则会尽可能早的启动测试阶段,并且允许不同的阶段出现重叠。敏捷项目也有一些结构性的内容,如准出标准,但它没有严格的准入标准。
在图中,你一眼就能看出敏捷项目和瀑布项目的测试生命周期差异所在。在敏捷项目中,业务分析师、测试分析师和业务代表等人一起讨论某个想法的行为,它如何适配于整体目标,怎样去验证它是否完成了该做的事情。这些分析构成了功能测试、用户验收测试和性能测试的基础。做完分析之后便开始功能的开发,单元测试、集成测试、探索性测试、非功能性测试(及数据验证--如果有这一项的话)也纷纷开始。不过只有等系统可以作为产品运行时才开始进行产品验证。
测试阶段没有严格的准入标准,这就意味着只要时机合适,随时都能开始。因为每个测试阶段对于确保应用程序的质量都至关重要,所以便应该尽早开始每个阶段的分析工作,这可以帮助人们修正设计,找出问题,为以后节省出大量的时间。下面是敏捷项目的一些准出标准。
单元测试的标准:
100%自动化;
100%通过;
超过90%的代码覆盖率;
纳入持续构建。
集成测试的标准:
100%自动化;
100%通过;
纳入持续构建。
功能测试的标准:
90%以上自动化;
100%通过;
所有的自动化测试都纳入持续构建。
探索性测试的标准:
测试分析师对应用程序的质量有信心。
用户验收测试的标准:
业务代表认可应用程序满足需求;
用户认可应用程序的可用性。
性能测试的标准:
100%自动化;
业务人员认可应用程序满足了业务性能需求;
性能测试可以重复执行。
非功能测试的标准:
业务人员认可非功能需求得到了满足;
操作人员认可非功能需求得到了满足。
数据验证测试的标准:
确信数据被正确移植。
产品验证的标准:
应用程序在产品环境中正确安装。
瀑布项目的测试生命周期限制某个测试阶段只能在前面的测试阶段走完以后才能开始。从理论上讲这也是说得过去的,因为后面的测试阶段会依赖于前面的执行通过(如果某些功能不正确,就用不着再对它做性能测试了)。但是,要是非得等到所有功能都正确实现以后才开始性能测试,可就一点道理都没有了。敏捷项目会在适当的时候启动每一个测试阶段,这样可以尽早找出问题,让团队有更多的时间解决问题。但是敏捷项目的准出标准跟瀑布项目是一样的。除非功能都验证无误,否则就不能认为性能测试已经完成。