敏捷测试模式之Scrum及其实践

一、    敏捷开发模式简介

敏捷是近年来软件研发领域很火的一个词,采用敏捷开发模式的研发团队是越来越多了,尤其是敏捷模式中的Scrum更是佼佼者大行其道,这表明敏捷模式确有其好处,能给企业带来效率的提升和成本的降低。

让我们看看大名鼎鼎的敏捷宣言,如下图所示:

大家对这段敏捷宣言都有自己的理解,我理解的其核心观点就是敏捷:能够快速,灵活的对变化做出响应,能够去掉繁文缛节,做到身轻如燕,专注于目标并在短期内产出成果物。

其实敏捷开发模式的提出和壮大也是被现实所迫。近年来软件需求变化越来越迅速,如何快速响应这种变化及时推出满足市场需要的产品是对软件从业者的巨大考验,而敏捷开发模式就是一种较好的解决方案,可谓是银弹。

二、    Scrum简介

Scrum很多研发团队都在用了,Scrum是当前最流行的一种敏捷开发模式,原因我认为关键是该模式简单明了,给出了具体的实践方式,可操作性很强。

Scrum由一组迭代周期组成,每个迭代(sprint)为2-4周,在每个迭代中都依次有planning (计划) , daily standup meeting(每日站会) , review(评审) 和retrospective (回顾)会议组成,由ScrumMaster (Scrum负责人)来召集这些会议,当然由团队负责人担任ScrumMaster也是比较常见的;有些团队也采用成员轮流担任ScrumMaster的方式,这样可以增强每个团队成员的主人翁和责任意识等。

三、    敏捷测试模式

敏捷开发模式大家都耳熟能详了,但敏捷测试模式还是比较新颖的名词,不能说是本人的创造,但本人在当初组建测试团队时就有运用敏捷开发模式的想法,团队成立后便着手实践该模式并坚持至今,自认为是取得了良好的效果。

当然肯定有人会反驳我的观点,他们认为敏捷开发模式每个迭代都包括设计,开发和测试,无需单独出来一个敏捷测试模式。这种观点当然是正确的,但无论什么模式都要应用到实际工作中去。我所在的公司测试部门是独立的部门并独立开展测试工作,不属于某一具体的开发团队,也就是说开发团队并没有人进行专门的测试工作,在职能架构上研发部和测试部也是并行独立的。

在这种情况下,测试团队应该根据产品计划合理的开展工作,采用敏捷测试模式就是一种不错的选择。

四、    Scrum在测试团队的具体实践

下面具体介绍下我所在的团队的敏捷测试模式实践。

我们采用的仍是业界流行的Scrum作为具体的敏捷测试模式,一般情况下每两周一个sprint(冲刺,也就是迭代的意思),每个迭代由计划,每日站立,演示和总结共四类会议组成。

在计划会议中由ScrumMaster(ScrumMaster负责人,由部门负责人也就是本人兼任)根据产品计划列出本迭代的backlog (待办事项,有的地方也称为User Story既用户故事),之后再将每个待办事项细分为多个任务,每个任务都会指定具体的负责人和预估的花费时间,这个时间以小时为单位,一般最小单位为2小时,最大为16小时。太短的时间会导致任务过多,可通过整合到其他任务的方式处理;太长的时间则导致任务较粗放,难以把控进度情况和出现的问题。每个任务的预估时间不一定准确,这需要ScrumMaster的经验或者采用团队每个成员进行估算然后取平均值的做法来设定。需要注意的是:请把这个会议的时间控制在一小时内,经常见到这个会议超长的现象,主要原因是没有提前计划,在会议中才开始列出待办事项,我认为待办事项在开会前ScrumMaster就应该已经胸有成竹了,在这个会议中只需要把待办事项具体分解为多个任务即可,甚至于有些待办事项也提前分解好了,在这个会议中只是让团队成员认领任务或者直接分配给团队成员即可。

让团队成员自己认领任务还是进行分配需要根据团队的具体情况进行处理,我所在的团队一般情况下都是由ScrumMaster来分配的,因为自由认领的情况下很可能会出现一些任务大家去争抢,一些任务没人愿意去认领的尴尬情况。当然分配任务也是根据每个团队成员的所长和发展方向作为依据的。

之后每个工作日早上上班一刻钟后召开每日站会。站会,顾名思义,就是站着开会,这样会议的时间不会太长,大家也能集中精力,会议一般控制在十分钟以内。在这个会议中,每个团队成员分别回答三个问题,这三个问题依次是:

1.上一个工作日做了什么?

2.今天计划做什么?

3.遇到什么问题或者困难或者说需要什么帮助?

其他的就不要说了,如果真的需要花较多的时间,就应该另外安排时间进行。

在每日站会中,注意团队成员是在彼此进行沟通和承诺,以便让大家都对任务做到心中有数,而不要搞成是向ScrumMaster汇报工作,这两者是不同的。

在开始实施Scrum的时候,强烈建议准备一个较大的白板和一些即时贴。在这个白板上先划出4列,这4列的列名分别是:待办事项,准备开始,进行中和已完成;再划出横行,可由团队成员数加一来确定横行的数目。在计划会议中,就可以把确定的任务写到即时贴中,一个任务用一张即时贴,可用A4纸打印出待办事项的内容,待办事项的格式可如下图所示。

待办事项的优先级越高,则应该贴在越靠上的行的待办事项列中,之后将任务即时贴都贴在白板的待办事项行对应的准备开始列中。

在开每日站会的时候,团队成员都面对白板围成一个半圆。当团队成员说完其上个工作日完成了什么和今天准备做什么之后,就可以分别移动对应的任务即时贴从进行中到已完成和从准备开始到进行中了,如下图所示。

这里如果第三个问题的答案是肯定形式的(遇到问题或者困难等),则可能无需移动即时贴了,也就是说遇到路障了,则可以在对应的即时贴中特别标注下原因,ScrumMaster和团队相关的其他成员此时应该对路障高度关注,搞清楚原因并试图给出解决方案,如果需要较长时间才能找到原因或者给出解决方案,则需要另外安排时间,不要占用过多的会议时间。

当迭代进行了一段时间,大家都对Scrum有了比较深入的理解后,就可以用更方便的电子白板来取代白板和即时贴了,常见的有https://www.pivotaltracker.com,这个比较方便灵活,微软的TFS也自带了Scrum,支持中文,使用起来很方便。不过使用电子白板后,可能就不是所有人都站着开会了,我们是ScrumMaster坐在电脑前移动卡片,其他团队成员站在其周围形成一个半圆。还有的团队是到会议室去开每日站会,大家都是坐着的,不过此时大家都知道这个会议不会开太长时间的,就不必要拘泥于必须要站着的形式了。

一般来说一个Scrum团队的成员数应在5-9人之间,如果团队成员多于9人,建议将其拆分为两个小的Scrum团队分别实施各自的Scrum。

到了迭代结束的那天,可以在下午召开演示和回顾会议,我们一般将这两个会议放在一起召开,当然一定是先演示后回顾。

有人要问了,研发有产出可以演示和评审,测试演示什么呢?这个问题问得好。我们是有需要演示的就演示,没有就不演示。主要是对新的测试方法和技术的演示,比如某个成员采用了一种新的测试用例设计方式,那就可以让其演示下具体的设计和编写思路和做法;又比如某个成员掌握了一种新的自动化测试技术或者方法,也可以演示下整个过程,还可以让成员分享自己的经验等等。演示会增强演示者的自信心,同时团队中的其他成员得到了宝贵的经验和学习的机会。

这个会议的时间控制在一小时以内,会议时间太长了大家都有疲惫感,所以演示者在会议召开前可以适当准备下,比如制作一个简单的PPT,准备好要演示的环境等。

最后的回顾会议其实就是总结会议,对本迭代进行回顾总结,目的就是CMM中所说的最高级别持续改进:保持做得好的,改进做得不够好的。这个会议最多半小时就足够了。可以采用给每个成员发放一张卡片,正面写出本迭代自己认为做得好的至少三个方面,反面写出本迭代自己认为做得不够好的至少三个方面。在开始阶段,大家都能写出很多,但当迭代了多次后,可能大家写不出来了或者写的和以前的迭代的内容差不多,这时候可采取针对本迭代内的每个待办事项逐一进行回顾和总结,这样更具有针对性。如果大家还是实在写不出来做得不够好的,那可能说明团队确实很优秀了,那也可以往后减少甚至不用开总结会议了。

ScrumMaster收集大家的卡片并将其在白板中列出,如果总计做得好的或者做得不够好的数量超过三个,则可以用举手投票的方式选中得票数最多的前三个,之后对做得不够好的前三个,需要大家分别讨论下解决方案,最后由ScrumMaster整理出最终的解决方案并指定解决方案的跟进负责人,这样到下个迭代开总结会议的时候再来看看上个迭代的这三项,看看究竟有无改进,长期坚持下去,必定能使团队朝着更好的方向发展起到好的作用。

五、    总结

总得来说,采用敏捷模式开展测试工作,使得每个团队成员都非常清楚自己的目标和当前工作状态,每日站会使得大家能够有效沟通并尽快得知和解决出现的问题,同时报告自己的工作进度也无形中产生了一种压力,避免了有些员工前几天比较懒散,到了最后几天才匆忙赶工的情况;报告当天的工作计划也是一种承诺,会督促团队成员尽量按时完成任务。迭代的方式使得团队成员对自己的工作有了强烈的节奏感,这种节奏感我认为对于工作效率的提升是至关重要的,因为团队成员清楚的知道自己每天应该做什么同时也知道团队中的其他成员正在做什么,大家都为同一个目标而努力,到了迭代结束的日子大家进行演示和总结,这样会促进彼此的成长和团队凝聚力,使其不断的持续改进,长期坚持下去,这样的团队必定是一个战斗力很强工作效率很高的团队。

参考文献

  • www.baidu.com
  • www.mountaingoatsoftware.com/scrum
  • www.scrumalliance.org
  • www.controlchaos.com

作者简介

北京理工大学软件工程硕士毕业,有十多年的软件开发/测试和团队管理经验。对软件质量管理,软件测试有丰富经验,擅长Web和移动App的自动化测试和接口测试等。

时间: 2024-10-10 06:50:29

敏捷测试模式之Scrum及其实践的相关文章

从一个实例详解敏捷测试的最佳实践

简介: 敏捷软件开发是目前十分流行,并在业界逐步推广的软件开发模式.不同与传统的软件开发模式,敏捷开发模式有着自己鲜明的价值和方法.其中,敏捷测试部分也同以往的软件测试流程有所不同.这对测试人员提出了新的要求,带来了新的挑战.本文将结合一个软件项目实例,基于项目开发的不同阶段,详细介绍每个阶段的主要测试活动.文中将分析每个主要测试活动的前提条件和目标任务,并根据实例推荐最佳的解决方案. 第一部分:敏捷软件开发简介 敏捷软件开发(Agile Software Development)初起于九十年代

《敏捷测试的最佳实践》学习笔记

第一部分:敏捷的实质 敏捷开发有益于个人发展 就测试而言,测试人员就是好比一辆跑车里的唯一的驾驶员,项目就好比这辆跑车,测试人员需要及时修正行驶方向的偏差,确保这辆车在正确的道路上稳步前行.如果,测试人员没有具备足够的责任心和领导力,只是人云亦云,恐怕这种测试要与不要没什么分别,敏捷项目的质量也更让人担忧,而敏捷也就失去了原有的意义.因此,作为唯一的测试人员,他(她)将拥有对测试的所有权,计划.设计并且执行所有的测试工作.而也因为拥有了更多的主人翁精神,积极的工作热情,测试人员勇敢的面对工作中的

敏捷测试的方法和实践

文 / 朱少民 有一次,当开发人员完成当前Sprint 任务的代码之后,测试人员.开发人员和产品经理一起来浏览产品.从头到尾走一遍,产品经理发现了问题,认为需要对功能进行比较大的修改.这时开发人员估计需要两天时间才能完成代码,但测试人员反对这样做,我们本来只有5天测试时间,加上这次新做的功能比较多.开发代码质量不高,验收测试已经很紧张.如果再延迟两天,测试没法完成.产品经理说,你们不是在用敏捷测试方法,应该测得很快,三天应该能完成测试工作啊! 什么是敏捷测试呢?敏捷测试当然不能简单地理解为测得更

敏捷开发模式下的测试

敏捷开发 敏捷开发倡导的就是迭代式和增量式的开发模式,并且强调测试在开发过程中的重要性 .主要是围绕以用户为中心,以客户需求为导向的开发过程,这个过程有一个特点就是"随时有变化".虽然敏捷开发引入了灵活性,但其中的重点还是在于客户满意度.客户是敏捷过程的关键环节.如果,客户能够有所参与,并且客户了解到开发对于他们参与的欢迎,那么有助于增加客户对最终产品和开发team的信心和满意度.如果客户由于其他原因不愿意参与进来,那么选择传统的开发流程更好.敏捷开发有三个比较明显的特征:依赖客户完成

究竟什么是敏捷测试

时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就写了一篇文章<什么是敏捷软件测试>, 就已经谈到这个话题,“敏捷软件测试更多的是一种理念,而非过程”.在2011年,我自己也写了一篇文章<敏捷测试的思考和新发展>,谈到“在BDD.ATDD和TDD最根本的.共同的思想基础上,构成一个全新的.更完善的敏捷测试框架”.而更早的时候(2010年10月),写了一篇<敏捷测试的方法和实践>,开始的那一小节就在讨论 “什么是敏

【敏捷开发】详解敏捷测试

 敏捷软件开发是目前十分流行,并在业界逐步推广的软件开发模式. 不同与传统的软件开发模式,敏捷开发模式有着自己鲜明的价值和方法. 其中,敏捷测试部分也同以往的软件测试流程有所不同.这对测试人员提出了新的要求,带来了新的挑战. 第一部分:敏捷软件开发简介 敏捷软件开发(Agile Software Development)初起于九十年代中期.最早是为了与传统的瀑布软件开发模式(waterfall model)相比较,所以当时的方法叫做轻量级方法(Lightweight methods).二十世纪初

一步步学敏捷开发:1. Scrum概述

Scrum概述 Scrum概述无非就是敏捷宣言.敏捷原则.Scrum框架和价值观.在之前先看段比较专业的Scrum介绍. Scrum是跨职能团队以迭代.增量的方式开发产品或项目的一种开发框架.它把开发组织成被称为Sprint的工作周期.这些迭代每个都不超过4周(最常见的是两周),并且无间歇地相继进行.Sprint是受时间箱限制的,无论工作完成与否它们都会在特定日期结束,并且从不延长.通常由Scrum团队来选定一个Sprint的时长,并且对于他们所有的Sprint都使用这一时长,直到这个团队能力提

Testing - 敏捷测试

敏捷测试(Agile Testing) SM= Scrum Master PO= Product Owner PB= Product Backlog SB= Sprint Backlog  Scrum Team = Development Team + Scrum Master + Product Owner Development Team = team that develops the product backlog items (cross-functional team) PBI =

基于SCRUM方法实践的西油计科党建设计与实现-个人实践流程清单

基于SCRUM方法实践的西油计科党建设计与实现 个人实践流程清单 一.Alpha版本冲刺个人在SCRUM团队任务清单: 时间 我这个三天做了什么 实际解决燃尽图项目数量 我遇到了什么问题 我下一个三天要做什么 预计下三天完成燃尽图项目数量 2019.10.9 将大家在国庆完成的组织管理.党员管理小程序前端代码与自己本地微擎小程序后带代码整合,并做单元测试,搭建本地微擎后台.认证个人小程序号.购买认证域名.域名解析绑定服务器 8 SSL证书一直审核出现问题.整合前端组织管理的小程序代码一直显示一直