一.敏捷测试的定义
Wikipedia对敏捷测试的定义:
Agile testing is a software testing practice that follows the principles of agile software development.1
译文:敏捷测试是一种遵循敏捷软件开发原则的软件测试实践。
这是通过一种敏捷的做事方法,可以让团队协作更紧密、工作效率更高,确保以可持续的速度频繁地交付客户所期望的业务价值。
敏捷测试与传统测试的区别
传统模式是把软件开发分为软件需求、软件开发(设计&编码)、软件测试、软件发布等阶段,一般利用里程碑的方式对各阶段进行明确定义。软件测试是研发过程中的一个阶段,而且一般都属于项目的最后阶段;测试团队都是立场比较明确,与团队之间的沟通以正式为主;
测试以需求为依据,要求有需求规格,自动化测试不作为要求;测试计划做得比较详细,对测试活动都会做好周密的安排;需求方确定需求后,中间环节参与较少。
在敏捷模式里,相对传统模式,软件测试不再是一个独立的阶段,测试是融入在软件开发过程中的一个组成部分,发生在每一次迭代中,也包含所有类型的测试,如单元测试、集成测试、系统测试、验收测试等。测试人员与开发人员工作更紧密,非正式的直接沟通成为了一种常态;
测试以最终用户为准,辅以用户场景或用户故事作为测试的依据;测试追求快速高效,自动化测试在测试中扮演了及其重要的角色,敏捷测试人员辅以探索性测试跟踪核心业务场景;敏捷测试拥抱变化,测试计划比较灵活,按业务价值交付顺序执行;需求方需求定义后,参与每一次产品演示,确认每一次迭代产物,全程参与项目。
二.典型的敏捷软件开发过程
在敏捷的软件开发过程中,敏捷测试人员利用他们的专业知识从客户那获取需求所包含的业务行为,与开发团队协作,将这些行为转化为指导编码的可执行规范。
敏捷测试人员参与用户故事拆分,遵循比尔·维克(Bill Wake)的INVEST原则,即一个合适的用户故事应该是独立的(Independent)、有价值的(Valuable)、可讨论的(Negotiable)、小的(Small)、可估算的(Estimable)和可测试的(Testable)。2
测试人员参加需求说明会和计划会:产品经理给项目人员串讲用户故事,在这个过程中项目人员提出自己的建议和想法,并充分讨论。需求讨论清楚后,大家用敏捷牌估算工作量
参与每日站会:开发过程中每天早上有一个大约15分钟的每日站会,告知各自完成的工作、遇到的问题及接下来的工作
测试人员组织产品演示会:对每次迭代的产物提交评审,向需求方进行演示,对需求进行确认
参与每次迭代复盘会议:对整个迭代过程进行总结,并举行评优及奖励
三.敏捷软件测试的核心价值为什么需要敏捷测试?
很直接的原因,整个项目都在采用敏捷的开发模式,你还想申请一段独立的时间来执行测试,领导会答应吗?本来要快速响应需求,没有更多的时间留给你做测试,所以领导是不会同意这么做的,因此测试需要前移,要与团队进行协作,才能更好的适应这种小步快跑的敏捷开发模式。
再者,当测试发生在项目的尾端时,有时可以牺牲时间和质量来满足关键的进度和预算限制。随着开发和测试反馈之间的时间缩短,成本预计会下降。反馈循环越短,由于开发人员在处理新问题和项目时花费的时间更少,因此缺陷修复和改写所需的时间更少。
ISTQB在调查中发现,敏捷方法论的普及率最近几年增长显著,这也表明软件行业对敏捷测试过程和技术的需求越大。
敏捷测试能给我们带来什么价值呢?