简介

  在Scrum中,每个Sprint都产生出一个潜在可交付的产品。为了成为可交付的产品,这个增量必须满足所有验收条件,同时还要通过各种类型的测试。因此,每个sprint都要进行所有类型的测试以保证这个sprint结束后得到的是可交付的产品。然而,根据我的在不同的项目经验来看,很多团队只是专注在其中一部分的测试,而并没有进行所有测试。

  在本文中,我将会介绍PURIFF的概念,这个概念包含了所有应该在一个sprint中所完成的所有测试。Scrum团队可以将PURIFF作为检查测试工作完成程度的清单。

  所谓PURIFF是下面这些测试类型的首字母缩写:

  P代表性能测试
  U代表单元测试
  R代表非回归测试
  I代表集成测试
  F代表功能测试
  F代表非功能性测试

  PURIFF测试范围

  PURIFF代表以下类型的测试:

  性能测试。性能测试能够保证系统的反应时间在用户的可接受范围以内。性能测试包括测量系统对不同请求的反应时间。可以用于性能测试的工具是多种多样的,包括商业软件和开源软件:HP LoadRunner,IBM Rational Performance Tester,Apache JMeter等等。

  单元测试。单元测试是由开发人员编写的,用于测试代码级别的类的代码。这种测试属于测试驱动开发的类型。单元测试有多种解决方案,JUnit和NUnit是流行的单元测试工具。

  回归测试。回归测试的目标是要保证在对代码修改以后,没有引入新的问题。实际上,每次修改代码都有可能需要为系统进行回归测试。回归测试是一个烦琐冗长的过程,尤其是在敏捷流程中更为突出,由于敏捷流程要求持续变化和频繁交付,因此需要回归测试的频率更高了。由于手工回归测试非常耗时,因此我非常推崇自动化回归测试。尽管自动化测试需要成本,然而对自动化测试投入的汇报率却是非常高的。常用的自动化测试工具有:FitNesse, Selenium, Microsoft, Microsoft Test Manager, HP Application Lifecycle Management等等。

  集成测试。进行集成测试的目标是要验证各个模块直接能够正确地协同工作。集成测试一般在持续集成(CI)环境中自动运行。

  功能测试。功能测试的目的是要检查系统是否按照产品代表列表项中的验收标准指定的方式工作。功能测试是要验证sprint中产生的产品增量是否能够通过验收标准。这种测试既可以是手动的也可以是自动的。

  非功能性测试。非功能性测试覆盖了系统的非功能性方面,这些方面通常被定义为非功能性需求。例如:扩展性测试、稳定性测试、安全性测试、移植性测试、压力测试等等。

  结论

  在与团队的工作中,我发现PURIFF的应用是非常有用的,因为它包含了在一个sprint所需要的所有种类的测试。即使不是每个sprint开发出来的增量产品都需要部署到产品线上,Scrum团队仍然可以使用PURIFF作为检查清单来对你们的测试进行归类。