关于Scrum 的一些絮叨
Scrum 的推行的基础在于全员参与,全员协做,包含Dev, QA(quality assurance) ,BA(Business analyst)以及Supporter team等等。git
初衷
这篇文章的写做前提是由于咱们团队在推新的release cycle的时候,有产品的同窗不能理解这样作的目的,或者说很难接受咱们去延长需求发布时间(实际并无延迟上线时间,第一感官错误……)数据库
现状后端
1,线上问题层出不穷
2,预计上线时间和实际上线时间不符
3,上线计划混乱,周期混乱(虽然以前定的有,可是基本没有遵循,有需求就会时不时上线)
4,开发转敏捷开发后,Sprint中任务计划频繁被打乱
5,在release以后,不能及时验证所有需求,一旦有问题,版本回归会有问题
6,……工具
目标性能
1,为了更加规范产品发布流程
2,保证线上产品的质量
3,提高整个团队的效能。测试
流程
关于Scrum的流程,我简单描述下以前咱们的主要环节。ui
BA
需求收集
需求整理,过滤,筛选(很重要)
需求分类(任务,可用性问题(bug),性能问题,概念想法(暂时不能实现也须要收集))
评估优先级
详细设计
验收条件
验收方式:(Sprint demo全员参与,在sprint结束以后,又各责任人演示当前sprint实现了哪些需求,是否达到验收标准。Mini demo当开发人员的Story完成以后,拉上相关QA&BA,进行小范围功能验收,此流程可贯穿在Sprint中。)spa
Dev
1,Planning meeting得到Story
2,理解需求,代码实现
3,Unit Test编写(第一轮质量验证)(已有计划)
4,提交git(进入Code Review work flow)(正在推动)
5,Code review done/Reject.(正在推动)
6,进入dev环境,由开发来联调各自功能是否ok(第二轮质量验证)
7,没有问题,merge code from Dev branch to QA branch设计
QA
1,后面会添加Automation Testing(第三轮质量保证,保证基本流程或者主要流程每次都不会有问题)
2,Functional testing 验证QA branch(第四轮质量验证)
3,Integration testing (第五轮质量验证)code
测试为了保证系统基础功能的稳定性,必须编写一套UAT cases(User acceptance testing), UAT case必须在每次release甚至于每次build都须要自动验证(须要添加到automation testing 流程中),UAT case须要根据系统功能的变化进行持续升级。
由于咱们目前在现有系统中存在太多的技术债(所谓技术债,指的是在项目前期一味的追求进度而忽视质量形成的欠债),若是总体去修改工做量会过大,咱们的经验是在每一个Sprint中预留20%-30%的buffer去作修复工做。
这个时候咱们的系统中会有三套环境:
Dev & QA & Live(production)
若是预算充足,咱们是须要一套stage 环境。stage环境从配置和硬件设备基本和Live环境一致,从而使一小部分用户进行新功能试用,以达到咱们最终的全面上线的目的。
Of course,Dev & QA彻底分离,对于目前咱们来讲暂时够用,前提是绝对的物理分离,从数据库到业务代码!(很抱歉,目前咱们没有此环节,我正在努力推动!)
通过上述五轮的质量保证,咱们就能基本排除线上因开发或者测试的覆盖率不足形成的问题,环境问题不能绝对避免。
看起来上述的内容似乎和咱们的重点:release cycle没有关系?
其实否则,周期为一周的时候,不少需求咱们是在一个sprint中测试不彻底,仓促上线,会形成线上问题。
1,所谓每个Sprint,基本要求就是Sprint中全部需求能够彻底开发+测试结束而且能够达到上线要求。(目前不知足)
2,当前一周的任务能够release出去吗?从看到的结果,并非这样,后期这部分会整理出数据来支撑此结论(目前不知足)
按照咱们目前的需求以及上线频率来看,修改release周期为2周一次,Sprint 周期也定为2周一次,能够彻底cover咱们的现状。而且能更好的提高工做质量以及的 deliver 更多的工做量。
为何敢这么说?使用了Scrum以后,后端团队的提高体现
1,我的工做目标更加明确
2,在交付环节比过去按时而且质量大幅提高
3,规范的方式,你们的积极性更高,产出更高
4,不会被临时穿插的需求打乱本身的工做计划,效率更高,产出更高
5,每一个人目前都感受到节奏感强,工做更充实,更有动力,产出更高
6,慢便是快(对于产品,需求更加明确,清晰,在code的时候节省了大量时间而且避免踩坑)
因此但愿每一个同事能去拥抱scrum,它是一个工具,一个让咱们更加高效的工具,一个加强咱们团队合做的工做,一个能够提高你们的积极性,主观能动性,一个伟大的工具!!