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本身的开发过程,在本文中跟大 ...
随机推荐
- ulimit
.修改ulimit vim /etc/security/limits.conf * soft nproc * hard nproc * soft nofile * hard nofile vim /e ...
- Xamarin Android自学和实践步骤
一.入门(已完成) 1.学习Xamarin Android项目的基本结构 2.学习界面布局的基本方式 3.学习基本编码规则 4.学习页面跳转和传值 5.学习对话框和提示信息显示方法 6.学习使用系统剪 ...
- block的初识
block的介绍: Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”. SDK4.0新增的API大量使用了Block. Block是一个匿名的函数代码块,此代码 ...
- 一年成为emacs高手
http://blog.csdn.net/redguardtoo/article/details/7222501
- jquery写插件
http://www.cnblogs.com/ajianbeyourself/p/5815689.html
- vim安装不上
前阵子,刚安装Ubuntu时,安装vim的问题,现在些出来分享一下.apt-get install vim正在读取软件包列表... 完成正在分析软件包的依赖关系树正在读取状态信息... 完成有一些软件 ...
- Scala包
#引入包的全部成员的办法 import scala.collection._ #引入同一个包中的几个成员 import scala.collection.{A,B} #重名 要 重命名 import ...
- 初学c# -- 学习笔记(二)
接着前面的学习,对话建立了,下面就写对话框气泡,和微信的差不多那种.尖角对话气泡网上一堆,圆尖角的修改了一个.IE8以下不能用,其他都可以用,直接上html代码,将<style>内容用到你 ...
- socket网络通信
1.socket通常也称作"套接字",用于描述IP地址和端口.在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上 ...
- js Function.call
提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments ...