标签:使用 ar sp 问题 代码 c 时间 line ad
昨天通过微信沙龙,分享到了一个案例,讲述的是从成功到失败的过程。
很多人可能疑惑,很多案例都是从失败到成功,这个怎么反了。很多成功背后都有其原因,可能很励志,但从失败中我们能够获取更多。毕竟我们的知识大多源于失败而非成功。
故事是这样的(括号中的是笔者的情绪表达 :)):
(在很久很久以前……)某公司成立了一个团队,开发一款全新的产品。产品的开发模式是产品需求获取和开发同步进行,团队构成为:项目经理带领开发和测试两个子团队,每个子团队各有一名Leader。产品经理在开始仅提出最基本需求,根据内部用户的反馈,不断改进需求。(哇噢,很酷!)。这就导致了持续发布的需求。开发流程选用了Scrum。(用到敏捷啦*_*)。开发测试同步进行,最早几个Sprint,采用纯手工测试,仅限功能测试。(噢~,会成功么?)。纯手工的问题立刻暴露:无法回归。(出现问题了吧~)。形式所迫,引入自动化测试。(还好,纠正的及时 :))。项目经理很权威,立刻决定实施自动化测试,同时保留部分新功能的手工测试。但问题依然存在,当开发人员不参与测试,测试相对于开发的滞后是必然的。这个gap无法逾越。
项目经理允许测试落后开发一个Sprint。(看来要违反敏捷中“完成”原则了。)测试工程师们经过努力,达到了这个标准,中国team表示很满意;但美国老大不满意,要求开发测试必须同步。(看来老大还是理解敏捷的。)于是制定强制要求,要求开发人员必须写单元测试,由此引入了TDD。(哇!原来这个神器是被老大逼迫使用的。)同时测试架设CI,并引入测试覆盖率统计工具,如果新功能的测试代码覆盖率低于阈值,则不允许checkin代码。(持续集成也有啦。手舞足蹈中~)。项目经理进一步要求,开发人员必须参与集成测试Case的编写,这一点其实并没有很好的执行,但靠着项目经理个人的权威和测试工程师的努力,产品就这样发布了。反馈非常不错,Bug很少,且没有任何致命的Bug。(耶~成功啦~,此处掌声如雷!)。总结经验,感觉产品的质量很高,能到达这个质量,与开发和测试同步进行有直接关系。所以此产品1.0发布之后的开发中,希望敏捷过程更加推进了一步。
成功发布了一个产品后,团队又接受了开发另外一个新产品的任务,类型与前者类似。团队将敏捷推进到了第二阶段:全功能团队,Scrum+pair programming+TDD。(此处可以有掌声!)(满眼都是羡慕的小星星,结对都用上啦!)。开发测试不分,前后端不分,所有工程师都一律结对编程。由于招聘时对测试人员的要求高,因此Coding技能并不比开发人员差。这时没有QA和Dev的差别了,两个人之间会自由交换角色。团队终于从半敏捷转为全敏捷!(其实前面已经很敏捷啦~)。
但是从这时起,一个负能量的变化却在暗流涌动:整个团队中没有人再关心质量。但是问题并没有立刻暴露,因为前一个项目中遗留的资产(Test frame work、Test case等)还能继续使用。还有一点就是美国团队引入了一位精力充沛的Architect,这位老兄每天20小时盯着项目,还会自己手动的去进行测试。(美国牛仔?)。他成了项目中唯一一个关心质量的人,不断的督促团队成员去写测试Case。到这个阶段,整个项目依赖着前一个项目的积累和Architect的个人英雄主义推行着。
依赖着这套貌似很酷的“敏捷”,项目坚持到了产品的发布,但大家都知道这个项目的质量是无法和前一个产品相比的。(我这时问了一个问题:团队中是否有敏捷教练或类似的角色?回答是没有。)故事还没有结束,原测试人员的顶头上司(测试部门经理)转变了职能,但团队中QA engineer的report line并没有改变。至此,团队内外,已经没有人关心质量了。之后持续了一段时间的结对编程,但是TDD已经被放弃了。(神器被首先抛弃了。)。CI虽然还在运行,但每次运行时执行的Test Case已经很久没有增加过新的,旧的则无人维护以致被关掉了。(测试通不过怎么办?不测试就行了呗 :))。之后所谓的敏捷团队,就是产品经理的Story,以及团队成员每天去完成这些Story。他们觉得已经“完成”了,就Checkin。整个团队陷入了噩梦的状态,如果产品经理不去确认,没有人知道这些程序是否能够运行起来。
最终的结果是,曾经开发新产品Bug不超过两位数的团队,现在沦落到一个新的功能完成后,都没有人去测试一下的状态。(呜呜呜~,大哭!)。
是什么导致了这样的结果?下面是笔者的一点感受:
欢迎大家板砖伺候!
标签:使用 ar sp 问题 代码 c 时间 line ad
原文地址:http://www.cnblogs.com/Wangyong-Wen/p/3976805.html