由实例驱动的软件验收测试 验收测试计划
人们一直将测试看做开发工作不可或缺的一部分,代码和测试用例都是敏捷项目的重要产出。然而,在许多敏捷团队中,相较验收测试而言,单元测试和集成测试的地位要更为显著。Gojko Adzic和Lisa Crispin建议采取措施,将验收测试作为开发工作的一部分。
Gojko认为有必要以实例编写研讨会的形式来支持验收测试。他认为:在下个迭代开始前,团队应该大致了解一下下个迭代要开发哪些功能。在不干扰当前迭代工作的前提下,有些团队成员可以参加实例编写研讨会。这个研讨会要重点研究如何编写有现实意义的例子,以后好把它们转换成验收测试。在Gojko看来:
研讨会的目的,是要在开发人员、业务人员和测试人员之间建立共同的理解,让大家知道接下来两周的工作目标。研讨会更具体的目标,就是产生现实的实例,可供以后转换为验收测试。
……
因为实际的例子是经过讨论并撰写下来的,所以如果大家对需求的理解有什么不一致,在这个阶段很容易发现,也就能够为开发阶段的工作打下坚实基础。当与会每个人都同意编写的实例已经够用而且足够清晰之后,研讨会也就可以结束了。同时,当前迭代要用到的验收测试应该持续不断地进行简化,并以更好的形式组织。
Lisa Crispin也着重指出了实例在定义验收测试中的重要性。不过,她尤其提醒不应深入过多细节,这样反而会降低效率。在Lisa看来,她认为测试策略应该是这样的:
1. 先跟产品负责人开会讨论需求的满意条件,可以提问题,得到实例,切分大故事
2. 迭代规划
3. 高级别的验收测试和其他的准备工作,比如获取测试数据和其他更多实例
4. 详细说明测试用例
5. 编写可自化运行的FitNesse测试(面向业务的测试,可用来指导开发)
6. 探索性测试,自动化GUI冒烟测试
每个用户故事都要进行4-6这三个步骤。
因此,验收测试应该作为每个迭代中开发工作的一部分。关键在于让业务团队和开发团队先碰面,并产生足够的实际例子,并以之创建有用的验收测试。