Lessons Learned 1(敏捷项目中的变更影响分析)
问题/现象:
业务信息流转的某些环节,会向相关人员发送通知邮件,邮件中附带有链接,供相关人员进入察看或处理业务。客户要求邮件中的链接,需要进行限制,只有特定人员才能进入处理或察看。总管想了想,应道没问题,不一会儿就改好了,在业务信息的查询方法中添加了限制——非处理人不得进入。测试这边,忙得脚不沾地,一人扛了两个项目的测试,但还是按照预先设计的测试用例,对该修改进行了测试,测试结果ok,非处理人通过邮件链接进入后,确实提示了“你没有权限,翻滚着离去吧”。
当晚发布生产后,客户一封邮件甩过来:管理员和法律部的为何看不到业务数据了!?没法工作了!
以为我们很辛苦才找出问题所在?No,一干人等晃眼一看,不,连代码都没有看,把总管一审问,就清楚原因了。总管修改的查询方法是公用的,管理员和法律部查看、维护业务信息,都得从这过;他这一修改,相当于加了个栅栏,全给拦住了,而他自己根本就没有想到会影响其它功能。项目经理郁闷,这么简单个原因,就得发紧急版本,咋个跟领导解释嘛,你好歹也整个高难深的问题撒。测试也后悔,当时真不应该把这个场景的回归优先级放那么低。
原因:
流入:1、开发人员对哪些是公用方法只有一个模糊的意识,不清楚具体有哪些故事涉及到了这个方法,也没有与相关负责人沟通修改方案,也没有将此信息在站会或其它形式上分享出来。
流出:1、测试没有对相应的回归场景进行测试,其原因在于当时测试人力存在瓶颈,故对回归用例排定了优先级,该场景的优先级较低,最后由于需按时封版,就舍去了这部分用例。优先级的排定,是测试根据经验和与各故事负责人讨论的结果,平衡质量风险和进度后确定的。
预防措施:
1、建立影响评估机制。
添加检查项,开发人员在将故事、故障、技术任务转换为开发完成状态时,须检查是否修改了特定类中间的方法,只要有修改,就须在卡片中标出,并在站会上分享出来。
所有人员在站会上获取信息后,评估自己的故事是否有受到影响。
测试人员根据大家提供的信息,排定回归测试用例及其优先级。
这个特定类,将根据项目的运行,每个迭代进行回顾和更新(如有必要)。
2、建立最小测试集。
业务代表和测试人员,根据业务特点,制定最小测试集,覆盖所有必需的故事。每次迭代,不管有无影响,均须完整执行这个测试集。
经验:
放过没有系统的权限设计不谈,此次问题说明了变更影响分析的重要性。
最重要的两点是信息的收集和影响点的识别。具体方法可以视项目特点而定。可以是重量级的追踪矩阵,也可以是轻量级的检查单加头脑风暴,成本和收益对等即可。关键是保证影响所带来的质量风险被压缩在可控和可接受的范围内。
同时,对于会给业务造成致命和重大影响的故事,是无论如何都需要测试通过的。如果没有时间进行全回归(对于很多项目,测试人力估计都是瓶颈所在),这一块测试所需的资源,是必需保证的。
所以,启动会上,迭代范围和故事点的评估,并不只是开发关注的事情,测试也需要给出信息,以便让项目组给出更为符合自身节奏的迭代计划。
Lessons Learned 1(敏捷项目中的变更影响分析)的更多相关文章
- 对某项目中Vuex用法的分析
上周五刚发布一个线上版本,趁着新的需求和bug还没到来,决定分析一下正在维护的一个使用Vue 2.0 开发的后台管理系统中Vuex部分代码.这部分代码不是我写的,加上我一直在“使用”现成的而不是“搭建 ...
- hello1 web项目中web.xml作用分析
该web.xml文件包含Facelets应用程序所需的几个元素.使用NetBeans IDE创建应用程序时,将自动创建以下所有内容. 指定项目阶段的上下文参数: <context-param&g ...
- 如何对项目中的问题进行分析——FPGA失败案例小结
本人最近在做一个小项目,自己取名叫做<基于zedboard的千兆以太网底层设计>,一般我都是写好各模块的verilog代码,确定模块没bug后再做整个系统级联,之后直接先进行综合看看有没有 ...
- 敏捷团队中的QA由来
QA,全称为Quality Analyst,即质量分析师(有些称为Quality Assurance,即质量保证师).为什么它总跟质量扯在一块?感觉这个角色明明做的都是测试的事情,为什么不直接叫做te ...
- PHP项目中composer和Git的组合使用
highlight: 在国内由于众所周知的原因,composer的package可能无法访问,解决办法是使用中国的全镜像: composer config -g repositories.packag ...
- Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码
Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性.以至于我们只需要编写很少量的代码便能够分析我们的项目文件. 作为 Roslyn 入门篇文章,你将可以通过本文学习如何开始编写一个 R ...
- 《AndroidStudio每日一贴》2.高速查看项目中近期的变更
<AndroidStudio每日一贴>2.高速查看项目中近期的变更 高速查看项目中近期的变更,使用快捷键: option + shift +c 很多其它有用技巧请查看<Android ...
- 敏捷组织中PMO应遵循的准则
敏捷改变了人们的工作方式,不仅仅是开发部门,而且还包括其它的部门,例如HR.财务以及PMO等.在大多数组织中,PMO是一个控制体.它指导项目团队的规范.模板以及流程.目前,大多数的IT组织都敏捷化了. ...
- 如何使用Worktile进行敏捷项目开发管理
Worktile在任务管理上采用了看板视图,非常适合进行敏捷项目开发管理.事实上,在开发Worktile的过程中,我们也是自产自销,使用Worktile管理Worktile本身的开发过程,在本文中跟大 ...
随机推荐
- sniffer底层网络配置记录
公司需要一款可以检查网络的软件,之后任务分配到我们组 经过讨论最终方案是以wireshark为版本,进行二次开发,主要目的在于简化上层操作复杂性(软件使用人群为非专业性的) 软件分为三部分,其一底层网 ...
- 8.15 CSS知识点6
自定义动画 1.animation-name(动画名称) 元素所应用的动画名称,必须与规则@keyframes配合使用,因为动画名称由@keyframes定义. 语法: animation-name ...
- linux 学习 软件工具
_____secureCRT 远程通信工具 第二行第二个快速连接,输入主机名,即ip地址,和用户名,root .其它默认:端口22,协议ssh2,防火墙 none. 保存会话,连接.需要输入用户密码. ...
- bat批处理重命名问题
因为要重命名的字符串中有文字,导致重命名出来的文件名都变为乱码了,查理一下需要加两句话 1. @Echo Off Chcp 65001>nul SetLocal EnableDelayedExp ...
- lua代码设置unity对象的基础属性
设置对象的父节点: wall.transform:SetParent(GameObject.Find("Walls").transform) 设置颜色: wall:GetCompo ...
- DOM元素querySelectorAll可能让你意外的特性表现
一.时间紧急,废话少说 本文所在的页面藏匿了下面这些代码: <img id="outside"> <div id="my-id"> &l ...
- 运行WPS遇到的问题及解决办法
http://www2.mmm.ucar.edu/wrf/OnLineTutorial/Class/cases/find_the_bugs.php# For this case we are goin ...
- [MEMO]: 机器学习教父级别的任务Jordan推荐的书籍
- 关于apache httpd.conf脚本的理解
新人一枚,这两天一直在研究lamp的搭建,感觉自己对apache理解的不够深彻,决定写这一篇(翻译)httpd.conf文件 未完待续 cat /usr/local/apache/conf/httpd ...
- 事务BEGIN TRANSACTION
事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转账工作:从一个账号扣款并使另一个账号增款,这 ...