《架构世界》2020移动开发刊:建设移动统一消息管理中心
上QQ阅读APP看书,第一时间看更新

1.对敏捷软件测试的理解

敏捷测试的定义

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分钟的站会,告知各自完成的工作、遇到的问题、接下来的工作及需要配合的人员测试人员组织产品演示会:对每次迭代的产物提交评审,向需求方进行演示,对需求进行确认参与每次迭代复盘会议:对整个迭代过程进行总结,并举行评优及奖励活动