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本身的开发过程,在本文中跟大 ...
随机推荐
- 《IT蓝豹》挑战独立开发项目能力
做了5年的android开发,今天没事写写刚入行不久的时候第一次独立开发项目的心得体会, 当时我刚工作8个月,由于公司运营不善倒闭了,在2011年3月份我开始准备跳槽, 看了一周andro ...
- 数字信号处理--Z变换,傅里叶变换,拉普拉斯变换
傅立叶变换.拉普拉斯变换.Z变换最全攻略 作者:时间:2015-07-19来源:网络 傅立叶变换.拉普拉斯变换.Z变换的联系?他们的本质和区别是什么?为什么要进行这些变换.研究的都是什么? ...
- 深入理解js——自由变量和作用域链
自由变量:在A作用域中使用变量X,却没有在A作用域中声明(在其他作用域中声明),对于A作用域来说X就是一个自由变量. var x=10; function fn(){ var b=20; consol ...
- MVC 基础和增删改、登录
一.什么是MVC?1.了解MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心 ...
- SQL Server 导入数据失败:无法在只读列“Id”中插入数据
解决方案: 在数据库导入"选择源表和源视图"->点击对应表后的“编辑映射”按钮->勾选“启用标识列插入”->导入即可.
- 【Python全栈笔记】07 [模块二] 20 Oct 冒泡排序
给出一个列表,进行冒泡排序 原理算法: li = [52, 37, 23, 11, 3, 1, ] print(li) # 每次循环,进行一次排序,列表内数字两两比较,最大的数字排到最末尾 # 一共循 ...
- 基于sentinel 的redis集群环境搭建
环境信息,三台机器,一台master,两台slave,每台机器上启动一个sentinel master 192.168.1.106 slave1 192.168.1.102 slave2 192.16 ...
- JavaScript内置对象之数组
一.JavaScript对象之数组 1.创建数组的方式 (1)使用Array构造函数 语法:new Array() 小括号()说明: -预先知道数组要保存的项目数量 -向Array构造函数中传递数组应 ...
- linux RPM、YUM
Linux 界的两大主流: RPM 与 DPKG distribution 代表 软件管理机制 使用指令 在线升级机制(指令) Red Hat/Fedora RPM rpm, rpmbuild YUM ...
- MSSQL附加数据库5120错误(拒绝访问)处理方法
一. 右键需要附加的数据库文件,弹出属性对话框,选择安全标签页. 找到Authenticated Users用户名. 如未找到,进行Authenticated Users用户名的添加. 二. 添加Au ...