敏捷与测试的故事(2) -你今天Scrum了么?

2010-04-19  欧阳辰 

By  QAThinker.com   (测试客)

随着Agile开发方法的流行,大家都希望自己Agile一些。然而,Agile软件开发宣言,只提供了一些概括性的原则,并没有具体说如何操作。举例来说,Agile强调软件,而不是文档,那么在项目开发过程中,到底需不需要文档呢?每个开发周期多长?如何设置检查点呢?这些具体操作的问题,在Agile的方法层面,并没有得到解决。所以,很多程序员又开始苦恼了,他们希望一个可以操作的流程来执行项目,最好这个流程易学,易用,容易上手。Scrum就是这么一种框架(Framework),用于实现项目管理和敏捷开发。

其中两点值得注意:

1)Scrum是一个框架(Framework),而Agile 软件开发是一个开发方法(Methodology);框架是复杂实体或过程的抽象,据有较好的可执行性;方法更多的是理论指导和一些原则。

2)Scrum可以用于项目管理,这样项目经理和主管就很高兴了,他们自然成为Scrum的拥护者了。

那么Scrum究竟是什么意思?"Scrum"这个词来自于橄榄球运动,指的是两个队伍争锋相对的争球,通常发生在小小犯规或有人受伤后的开球阶段,所以Scrum看起来想合法的打群架一样。Scrum开发方法就是指整个开发过程中,大家紧紧抱团的概念,不讲究太多次序感。

 

 

橄榄球中的Scrum,文明的打群架

1991年,杰夫·萨瑟兰在Easel公司开发了轻量级的迭代方法,并首次称之为Scrum。1995年,在奥斯汀举办的OOPSLA '95上,萨瑟兰和施瓦伯联合发表了论文首次提出了Scrum概念。施瓦伯和萨瑟兰在接下的几年里合作,将上述的文章,他们的经验,以及业界的最佳实践融合起来,形成我们现在所知的Scrum。

2001年,施瓦伯与 麦克·比窦(Mike Beedle)合著了《敏捷软件开发-使用Scrum过程》一书,介绍了Scrum方法。这本书成为Scrum的经典之作。同年,Agile软件开发宣言也诞生了,所以这本书也极大的推动了Agile软件开发的普及。

讲了这么多的背景,那么究竟是什么Scrum,我并不着急介绍;因为,介绍Scrum的文章太多了,着急的读者可以先搜索引擎之,有很多快速入门的书。我想先给大家一些试验数据,看看Scrum究竟有没有用?

下面的数据是来自InfoQ网站2008年做的调查《Scrum在中国——企业实施情况调查实录》详细,结果如下:

出于保护企业和个人隐私的缘故,大部分被采访人的具体信息均已隐去,其名单如下:

姓名(职务)
公司性质
实施方式
实施时间
结果
璎珞天色,负责过程改进
某知名大型互联网公司
自底向上
2006年3月
成功
kaverjody,Scrum Master 某知名大型软件企业
自顶向下
2005年12月
成功
David,Engineer
某知名大型互联网公司
自顶向下

失败
张汉东,Scrum Master
Nibirutech,创业型公司 全面推进
2007年11月
成功
赵师容,Senior Engineer 某创业型公司
自顶向下

失败

大家可以看到,Scrum不是万能的,有成功的也有失败的,大型公司可能失败,小公司也可能失败。所以,如果你是一个Scrum的新手,一定要做好失败的准备。

好了,进入正题了,什么是Scrum,简单的说就是下面这个图;(网上很多Scrum图都是大同小异,而且大多为英文的,所以我按照自己理画了个中文的)。

先介绍最简化的Scrum模型,如下:

主要角色:

a) 产品负责人(Product Owner): 定义产品功能
b)  Scrum主管(ScrumMaster) : 负责每个Sprint(1-4周)协调工作,轻量级的项目管理;
c) 小组成员(Team):真正干活的人,大约5-7个为宜。

主要产出:

    a) 产品功能列表(Product Backlog)
    b) 冲刺活动列表(Sprint backlog) : 每个Sprint的主要活动
    c) 发布的产品功能

主要关键活动:
a) 在每个Sprint前,都有计划会议,用于讨论出冲刺活动列表(Sprint Backlog)
b) 每天都有15分钟的会议,所有小组成员都发言“自己干了什么?有什么问题?明天做什么?”,每人只有2分钟时间。
c )每个Sprint结束,都应该有可发布的功能

好了,这就是Scrum最主要的流程,在这个主流程之外,当然有很多可以自定义的活动等。

好了Scrum模型就是这样,那么如果采用Scrum模型,对测试有什么影响呢?我的感觉是,它对测试管理的影响非常大,主要表现在以下几个方面:

1)测试活动很难有效地加入到Sprint Backlog中去

        对于开发人员来说,代码编写的活动内容比较确定,时间也比测试好估计一些。 但对于测试活动,制定计划时候很难列出详细的内容和时间估计,特别是在只有几个星期的时间内。有时候,一个麻烦的Bug,可以耽误整个测试的进度。

2)  开发活动的灵活性给测试任务的执行带来挑战

Scrum模型中,任务的进展往往没有严格的关联性,开发人员可以选择性开展工作;虽然测试人员可以对开发人员的活动提出一些要求,但是开发人员的灵活性很大,测试人员经常要花很多时间应对灵活的开发进度。

3)  Scrum模型提供的Burndown图表,并不完全适合测试管理

Scrum提供的Burndown图,主要可以跟踪活动的完成率,但是这个图形与软件测试的实际进展,软件质量之间。

4) 由于Scrum强调快速迭代开发,测试的周期缩短,节奏加快。

5) Scrum增量开发模式,使得软件的升级测试和部署测试更为重要

 

578°/5704 人阅读/8 条评论 发表评论

刘俊  2010-04-19

我们公司早就用scrum了,每个sprint周期为1-4weeks,根据项目大小,当前周期需要完成功能的数目来确定周期长短。这样的开发模式很好的应对了敏捷开发的要求,只不过从自动化测试的角度来看,好累啊。


焦爱玲  2010-04-19

敏捷开发模式下的管理是和以前有可很大的区别,对我们的测试计划的方式影响很大。强大的模式,需要实践到各流程,固然有其推敲之处,不过我们的效果不太好,应该和一楼的情况差不多


夏庆京  2010-04-19

sprint多,频繁发布对测试人员要求不是一般的高啊。
可能一个测试周期还没结束而已经测过的代码又被改动了。


谢明志  2010-04-20

刘俊: 我们公司早就用scrum了,每个sprint周期为1-4weeks,根据项目大小,当前周期需要完成功能的数目来确定周期长短。这样的开发模式很好的应对了敏捷开发的要求,只不过从自
自动化测试一定要考虑ROI.  你看看这个
4. http://www.ibm.com/developerworks/cn/rational/r-cn-agiletesting4/
敏捷测试的最佳实践,第 4 部分: 自动化测试的 ROI


谢明志  2010-04-20

夏庆京: sprint多,频繁发布对测试人员要求不是一般的高啊。
可能一个测试周期还没结束而已经测过的代码又被改动了。
认同,人是敏捷推行的基础,我看Agile Tester都应该多面手,内裤外穿。 哈!


杨杰荣  2010-04-20

焦爱玲: 敏捷开发模式下的管理是和以前有可很大的区别,对我们的测试计划的方式影响很大。强大的模式,需要实践到各流程,固然有其推敲之处,不过我们的效果不太好,应该和一楼的情
有时间能分享一下Scrum模式下 具体测试过程中 测试文档相关的一些管理经验么?


刘俊  2010-04-20

好的,我来看看


欧阳辰  2010-04-20

刘俊: 我们公司早就用scrum了,每个sprint周期为1-4weeks,根据项目大小,当前周期需要完成功能的数目来确定周期长短。这样的开发模式很好的应对了敏捷开发的要求,只不过从自
恩,如果采用Scrum,对测试人员是一个挑战。 但是可以考虑改变一些传统,比如把一些测试的工作,让开发人员负责。


登录 后发表评论