将软件测试人员整合到敏捷团队中,这是敏捷之道常常重复的一条箴言,可我们并没有认真想过这到底意味着什么或者应该怎么做。

团队中测试人员的角色具体负责什么呢?他们要:

协助团队抽取并定义验收条件(或需求)

提供相关质量信息,而不是通过自动化测试、探索性测试(exploratory test)

[译注]来寻找bug与客户一起工作,识别风险在开发人员测试(单元测试与集成测试)的薄弱环节投入更多精力。比如,如果我们知道团队已经完成了对数据层的测试,但是GUI层难于进行单元测试,那测试人员应该花费更多努力在这一层的测试上。选编自(Cem Kaner, Johanna Rotheman(pdf),以及Jonathan Kohl)。

与大多数人已经熟知的传统测试经验大不相同,敏捷团队中的测试有其自身特点。Jonathan Kohl,是Kohl Concepts的联合创始人。如他所说:“不同之处在于:在敏捷项目中,我们可以更快地找到重要的bug。我们更愿意将测试贯穿于开发过程始终。现在开发人员们使用可靠的自动化测试来让他们的工作更加严谨,我所测试的产品也更加健壮了。”

Antony Marcano是一位敏捷测试独立咨询顾问,他提及了自己学习到的一些经验:

编写验收测试需要协作:尤其是在客户、测试人员和程序员之间。

测试人员与开发人员应该互相提升彼此的技能。

测试任务应该作为sprint backlog的一部分,而不能是单独的测试计划。

使用“探索性测试”来产生反馈。

在修复bug之前,要先写自动化测试以重现这些bug。

Simon Baker是Energized Work的联合创始人。在他的团队中,开发人员编写绝大部分的验收测试。测试人员从而可以专注于进行“探索性测试”,并与Product Owner一起与客户沟通,并帮助团队理解用户(而不仅仅是故事)。开发人员针对垂直的切片(故事的小部分)展开工作,以满足特定的验收条件。当切片完成后,开发人员与测试人员一起仔细检查切片,并理解验收测试。团队将缺陷视为工作线性进展的停止点。开发人员可以在下次切片处理过程中修复缺陷,或者选择创建一个缺陷修复任务,从而使其不再处于开发阶段。缺陷修复任务成为团队优先级高的任务。测试人员发现,即使他们与开发人员都使用同样的技能,还是要花费很多时间彼此协作,而整理bug的时间反而少了。

译注:探索性测试(Exloratory Test),是一种通过假定来寻找软件缺陷的战术测试技能。利用它,可以同时进行学习、测试设计和测试执行。软件在接受测试的同时,测试人员学到新的东西,积累更多经验,从而能够产生更多的、有新意的测试。