【质量实践】 完成的定义DoD

什么是DoD?DoD 全称 Definition of Done, 是我们敏捷中常说的“完成的定义”

比如一个迭代做完后,要进行验收来年本个迭代是否完成。但团队对是否完成无法达成统一,有人认为编码完成,就表示任务完成了;有的认为还需要简单自测一下,确保功能可以正常使用;还有的认为需要把自动化用例写完并测试通过才算完成。有人认为完成是需要包含完成编码,提交到代码库,完成单元测试,完成集成测试,完成功能测试,等等一系列的测试。而有的小伙伴可能认为完成只包含代码,以及在自己的电脑上测试,没有问题就算是完成了。

为了避免这个问题,团队需要约定各阶段什么是真正的完成

以下各阶段DoD仅供参考,实际使用DoD应团队共同讨论,找到大家愿意共同遵守的原则。

以下各阶段DoD仅供参考,实际使用DoD应团队共同讨论,找到大家愿意共同遵守的原则。

规划会议(Planning Meeting)

是否结束上个迭代并将未完成任务纳入本迭代
是否修复上个迭代的所有BUG并将未修复BUG纳入本迭代
是否和所有人确认待改进项列表
是否和所有人确认DoD新增项
是否确认本迭代的开始时间和结束时间
是否确认本迭代的团队成员
是否在预估容量之前确认排除了法定假日、成员计划的休假和成员其他事务占用的时间
是否计算本迭代的预估容量
是否确定PBR会议时间和地点
是否确定演示会议时间、地点、负责人
是否确定回顾会议时间和地点
是否分组讨论需求并做完时间评估
是否确认所有需求都已澄清清楚
是否确认需要预研的任务都已创建评审任务
是否存在不同组别成员任务交叉但并未参与澄清和评估的情况
是否确认实际评估容量未超过预估容量
是否划分任务的优先级
是否按照优先级分配任务
是否合理调配任务确保各开发人员时间相对均衡

每日站会(Daily Scrum)

是否上报前一个工作日的详细进度
是否上报当前工作日的详细计划
是否上报进度和计划完成的百分比
是否从其他成员获取到关联任务的计划和进度
是否和其他成员确认关联任务的计划和进度
是否上报了风险
是否在工作群同步了进度、计划和风险
是否在会后对上报的风险进行评估和应对

需求细化会议(Product Backlog Refinement)

是否了解清楚后续迭代任务的内容
是否对后续迭代的任务在价值、意义、可行性、技术细节、难点、参考等方面做有限的讨论
是否对需求不明确的任务提出质疑
是否对需求的原型或参考的应用有疑问
是否确认所有疑问已澄清或给出澄清计划
是否对可能需要预研的任务提出预研申请
是否找到自己有兴趣的任务并计划主动了解/预研该任务的细节

演示会议(Review Meeting)

是否演示完本迭代所有的需求
是否记录演示过程中的所有疑问、BUG和需求
是否对演示过程中的问题作出回答
是否展示迭代健康度报告并讨论
是否将演示过程中的问题记录为需求或BUG跟踪

回顾会议(Retrospective Meeting)

是否回顾上个迭代的改进项
是否询问改进项负责人改进结果
是否根据改进结果调整改进项结果或改进目标
是否收集所有人对本迭代的优点和改进项评价
是否整理、解释、合并改进项并投票选出3个待改进项
是否针对待改进项讨论解决方案
是否针对解决方案指定负责人
是否将所有改进项整理和并到新迭代的改进项列表

测试DoD

迭代前:
1、原型图是否经过检查,并提交修改
测试前
1、是否主动跟需求开发沟通透彻理解需求、验收标准
2 、是否迭代用户故事、任务都有对应正常、异常测试用例
3 、是否所有用例都通过前后端开发人员评审
4 、是否所有原型图和 strory 中的描述、注释都在测试用例中体现
5、是否添加了测试计划并分配测试人员
6、当前是否存在风险
测试中
1、冒烟测试是否通过,如不通过,拒绝测试
2、是否所有测试用例都执行了
3、是否对所有接口进行了接口测试
4、是否对增加和修改接口进行了容错和边界测试
5、是否跟踪bug修复状态并最终关闭或丢弃
6 、是否进行了渗透测试
7、当前是否存在风险
8、是否关闭当前浏览器,再使用无痕浏览器进行测试(以排除缓存问题)
9、是否所有bug都提交到的KDOP
10、是否在完成测试、关闭故事的所有bug后,确认所有用例都通过后,将故事关闭
11、是否新建用户,在应用工作空间新建角色, 只给该角色分配待测功能权限、按钮和页面进行测试
12 、是否检查转测试的故事、关闭的任务上传图片附件,如没有就退回 (类型、内容规范度)
发布前
1 、检查 sonar 结果是否有遗留 bug 、异味
2 、检查上迭代安全问题是否修复,并进行了复测并关闭
3、当前是否存在风险
发布后
1、是否进行了上迭代组件安全扫描、评可证扫描
2、是否进行了上迭代代码安全扫描
3、是否对官网发布进行下载并安装测试
4、官网说明书是否已更新
5、检查tag文件是否打包
6、是否写了迭代测试报告并提交,迭代测试报告是否有关键要素?
每日DoD
1、检查当天是否有提测,进行测试
2、如环境有问题,当天解决
3、完成测试用例,当天或第二天与开发完成用例评审
4、 修改的bug当天复测关闭

前端DoD

1、考虑需要后端提供什么接口,前端提供哪些接口
2、前端提供的接口,是否完成接口设计
3、是否与后端一起评审接口
4、是否修改KDOP任务状态为-正在处理
5、mock接口是否定义
6、页面、菜单路由是否配置
7、页面是否还原ui图设计、原型图设计
8、页面是否符合设计规范
9、页面交互是否完成
10、含有表单校验是否完成校验
11、是否给功能按钮设置权限
12、接口联调是否通过
13、功能是否按照测试用例自测通过
14、代码是否merge到dev
15、开发环境是否通过测试
16、是否和后端确认可提交测试
17、代码是否merge到test
18、是否更新KDOP任务状态为-已完成
19、 将【故事】转测试 , 并在附件中添加自测结果截图
20、是否通知测试执行测试任务
21、 codereview 时是否询问相关开发人员自测结果

后端DoD

开发前
是否完成整体需求整理、规划
是否完成数据库表结构设计
是否完成全量/增量SQL以及菜单权限SQL整理
是否完成数据库设计评审
是否与前端人员沟通接口实现
是否完成接口设计
是否完成接口评审(尽量迭代第二天之内)
是否更新kdop状态【正在做】
是否check DoD本阶段内容已完成
开发中
是否完成模型设计
是否按照契约提供接口
是否按照设计需求完成入参校验/动态参数校验
是否完成逻辑开发
是否按照测试用例自测
是否在本地环境通过初始化安装/升级的方式测试 SQL 脚本
是否通过"创建应用"及脚本涉及范围的相关功能测试本次SQL脚本正确性
是否提交全量/增量 SQL 脚本
是否清除代码异味
是否将本地分支代码merge到dev
是否通知前端已备好接口,可以开始联调
是否完成联调
是否check DoD本阶段内容已完成
开发后
是否与前端确认可提测
是否将代码从dev merge到test
是否通知测试人员本次提交涉及数据库升级
是否提示测试人员进行测试
是否修改kdop任务状态为【已完成】
是否确认当前任务是【故事】下最后一个子任务,如果是,则将【故事】转测试,并提交自测图片; 如果当前任务是【故事】,直接提交自测图片并转测试
是否完成单元测试编写
是否完成所有缺陷修复
是否check DoD本阶段内容已完成
其它
是否在测试用例评审时与测试人员仔细沟通测试点
是否及时暴露风险
是否在更新新迭代相关文件/文件夹后通知其他组员
codereview 时是否询问相关开发人员自测结果