究竟敏捷测试到底是什么?
作者:网络转载 发布时间:[ 2013/3/12 13:46:41 ] 推荐标签:
2、Scrum的敏捷测试
下面以流行的敏捷框架Scrum来讨论敏捷测试,会更具体一些,会更具可操作性。我们通过下面图2再复习一下Scrum的模型,但这里不详细介绍了。

图2 Scrum过程示意图
从图中可以看出,除了后“验收测试”阶段,其它过程似乎没有显著的测试特征,但隐含的测试需求和特征还是存在的。
1)Product Backlog (需求定义阶段),在定义用户需求时测试要做什么?测试需要考虑客户的价值大小(优先级)、工作量基本估算之外,需要认真研究与产品相关的用户的行为模式(如BDD),产品的质量需求,哪些质量特性是我们需要考虑的?有哪些竞争产品?这些竞争产品有什么特点(优点、缺点等)?
2)Sprint Backlog(阶段性任务划分和安排),这时候需要明确具体要实现的功能特性和任务,作为测试,这时候要特别关注“Definition of Done”,即每项任务结束的要求——即任务完成的验收标准,特别是功能特性的设计和代码实现的验收标准。ATDD的关键一步也体现在这里,在设计、写代码之前,要将验收标准确定下来。一方面符合测试驱动开发思想,第一次要把事情做对,预防缺陷;另方面持续测试和验收测试的依据也清楚了,可以快速做出测试通过与否的判断。
3)在每个迭代(Sprint)实施阶段,主要完成Sprint Backlog所定义的任务,这时除了TDD或单元测试之外,应该进行持续集成测试或通常说的BVT(Build Verification Test)。而且开发人员在设计、写代码时都会认真考虑每一组件或每一代码块都具有可测试性,因为测试任务可能由他们自己来完成。如果有专职的测试人员角色,一方面可以完善单元测试、集成测试框架,协助开发人员进行单元测试;另方面可以按照针对新实现的功能特性进行更多的探索式测试,同时开发验收测试的脚本。如果没有专职的测试人员角色,这些事情也是要完成,只是由整个团队共同完成。虽没有工种的分工,但也存在任务的分工。
4)验收测试可以由自动化测试工具完成,但一般情况下,不可能做到百分之百的自动化测试。例如易用性测试很难由工具完成。即使对性能测试,是由工具完成,但还需要人来设计测试场景,包括关键业务选择、负载模式等。敏捷的验收测试,和传统的验收测试不同,侧重对“Definition of Done”的验证,但基本的思想和传统开发是一致的,任何没有经过验证的产品特性是不能直接发布出去的。
3、结论
敏捷测试是符合敏捷宣言思想,遵守敏捷开发原则,在敏捷开发环境下能够很好地和其整体开发流程融合的一系列的测试实践,这些实践具有鲜明的敏捷开发的特征,如TDD、ATDD、结对编程、持续测试等。和传统测试的区分,可以概括如下:
1)传统测试更强调测试的独立性,将“开发人员”和“测试人员”角色分得比较清楚。而敏捷测试可以有专职的测试人员,也可以是全民测试,即在敏捷测试中,可以没有“测试人员”角色,强调整个团队对测试负责。
2)传统测试更具有阶段性,从需求评审、设计评审、单元测试到集成测试、系统测试等,从测试计划、测试设计再到测试执行、测试报告等,但敏捷测试更强调持续测试、持续的质量反馈,阶段性比较模糊。
3)传统测试强调测试的计划性,认为没有良好的测试计划和不按计划执行,测试难以控制和管理,而敏捷测试更强调测试的速度和适应性,侧重计划的不断调整以适应需求的变化。
4)传统测试强调测试是由“验证”和“确认”两种活动构成的,而敏捷测试没有这种区分,始终以用户需求为中心,每时每刻不离用户需求,将验证和确认统一起来。
5)传统测试强调任何发现的缺陷要记录下来,以便进行缺陷根本原因分析,达到缺陷预防的目的,并强调缺陷跟踪和处理的流程,区分测试人员和开发人员的各自不同的责任。而敏捷测试强调面对面的沟通、协作,强调团队的责任,不太关注对缺陷的记录与跟踪。
6)传统测试更关注缺陷,围绕缺陷开展一系列的活动,如缺陷跟踪、缺陷度量、缺陷分析、缺陷报告质量检查等,而敏捷测试更关注产品本身,关注可以交付的客户价值。在快速交付的敏捷开发模式下,缺陷修复的成本很低。
7)传统测试鼓励自动化测试,但自动化测试的成功与否对测试没有致命的影响,但敏捷测试的基础是自动化测试,敏捷测试是具有良好的自动化测试框架支撑的快速测试。

sales@spasvo.com