钮博彦 研发度量

1. 软件研发度量体系 钮博彦 2018 – 10 – 20
3. 自我介绍 • 钮博彦,美团高级技术经理,负责美团点评研发工具栈建设。 • 研发协同管理平台 • 研发过程数据分析平台 • 持续集成平台 • 服务端自动化测试平台 • 静态代码扫描平台 • 从2007年开始曾就职于微软中国、雅虎北研、唱吧等公司,从事系统开发、 DevOps和质量保障等相关工作。一直专注于提升研发整体质量与效率,及 其流程和平台建设。
4. Takeaways If you can't measure it, you can't improve it. ——Peter Drucker Many of these arguments are impossible to resolve because the software industry lacks the ability to measure some of the basic elements of the effectiveness of software development. In particular we have no way of reasonably measuring productivity. ——Martin Fowler
5. Takeaways • 软件研发度量中的实践 • 为什么需要度量? • 如何度量? • 如何建设度量平台?
6. • 度量的意义 • 度量体系 • 度量平台建设
7. 度量的意义 • 我们做的产品与用户的期望为什么总存在差异? • 市场需求日新月异,提高团队市场反应速度? • 现在的产品质量到底怎样?为什么Bug总是修不完?
8. 度量的意义 • 意义: • 让目标更明确 • 让现状更清晰 • 让改进更精准
9. • 度量的意义 • 度量体系 • 价值 • 效率 • 质量 • 度量平台建设
10. 指标体系——价值 • 我们的产品,跟去年比怎么样?跟竞品比怎么样? 老板 • 我们的产品,为用户创造了哪些价值? • 解决了哪些用户痛点?反馈如何? • 这需求到底有啥用? • 哇塞!这么多功能,用户用的着么? 研发 • 写了这么多代码,用户到底用的咋样? 产品经理
11. 指标体系——价值 • 商业价值 • 可度量价值:钱、订单量、DAU、转化率、停留时长等 • 不可度量价值:影响力、美誉度等 • 技术价值 • 可度量价值:QPS、可用性、响应时间、故障恢复时间等 • 不可度量价值:技术竞争力等
12. 指标体系——价值 功能X 项目立项 评估与设计 开发与测试 发布上线 反馈与复盘 项目结项 项目目标: • DAU • 订单量 • 技术目标 • …… 需求目标: • DAU • 订单量 • 技术目标 • …… 实际结果: • DAU • 订单量 • 技术目标 • …… 实际结果: • DAU • 订单量 • 技术目标 • ……
13. 指标体系——价值 目标 业务方向(Investment Theme) 面向研发过程及质量的 帮助业务通过度量,提高效率与质量 一站式数据分析平台 建立完整的度量指标体系 建设完整的研发过程及质量的数据仓库 专业且易用的数据分析能力 业务指标 •指标数量及其周访问量 •周活跃图表占比 •月活跃图表占比 •管理层访问量 需求描述 业务方向 度量指标 作为一个项目经理, 在项目进行中和结项时我可以通过查看已完成需 求的价值度量指标, 来了解项目的整体进展情况。 建立完整的度量指标 体系 •指标数量增加:20 •带来周访问量:100k •周活跃图表占比:提升5% •管理层访问量:每周增加10次
14. 指标体系——价值 事前计划 定期追踪 事后复盘 • 建设“价值度量”的团队流程: • 从价值出发,团队目标明确,提升成就感 • 拆解高价值,更早交付,提升ROI • 把控需求质量,减少“三拍”需求,降低部门浪费
15. • 度量的意义 • 度量体系 • 价值 • 效率 • 质量 • 度量平台建设
16. 指标体系——效率 • 我们团队能否应对快速变化的市场环境? • 哪个团队更有战斗力? 老板 • 我的需求多久能上线? 产品经理 • 需求评审、技术评审、用例评审、技术调研、编译打包、调 试环境、自测、联调…… • 咦?代码还没开始写,怎么就六点了? 研发
17. 指标体系——效率 需求评估 需求设计 待开发 开发 联调 待测试 测试 发布上线 交付周期 • 吞吐率 = 产出/单位时间 • 产出:价值、需求个数、故事点数等 • 举例:每月交付需求个数 • 交付周期 • 版本交付周期 • 需求交付周期 • 故障修复周期 吞吐率
18. 指标体系——效率 • 交付周期 • 累计流量图:发现瓶颈位置 • 价值流程图:发现瓶颈影响
19. 指标体系——效率 需求评估 需求设计 待开发 开发 联调 待测试 测试 发布上线 • 常见问题: 交付周期 • 需求: • 需求评估设计,时间过长 • 需求质量差 • 测试: • 测试数据、环境准备成本高 • 自动化测试率低 • 开发 • 手工重复工作很多 • 联调时间长 • 代码质量差 • 整体 • 人员瓶颈 吞吐率
20. 指标体系——效率 • 建设“效率度量”的团队流程: • 识别团队瓶颈,优化木桶短板,减少资源浪费 • 缩短交付周期,提高吞吐率,提升市场反应速度 • 预估更准确,提高团队工作幸福度
21. • 度量的意义 • 度量体系 • 价值 • 效率 • 质量 • 度量平台建设
22. 指标体系——质量 • 当前的产品质量如何? 老板 • Bug修的怎么样了,我的需求多久能上线? • 需求怎么又变了? • 这一坨代码我可不敢动…… 研发 • 完了,bug怎么越改越多? 产品经理
23. 指标体系——质量 • 重点: • 以结果为导向 关注线上质量 • 质量问题,越早发现,越易修复 关注过程质量
24. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量
25. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标分类 整体 线上故障 稳定性 性能 指标 线上质量评分 线上故障数 线上故障恢复时长 线上缺陷数 服务可用性 错误类型分布 错误率 报警数 错误数量 接口响应时间 慢消息 接口慢响应率 慢SQL 慢缓存
26. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标分类 基本信息 稳定性 性能 指标 质量评分 Crash率 页面错误率 安装包大小 页面加载时间 启动时间 FPS 卡顿 流量 CPU/MEM
27. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标分类 需求整体质量 需求自身质量 指标 需求质量评分 需求Bug数 需求千行代码Bug数 需求打回次数 需求变更次数 需求质量Bug数
28. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标分类 基础信息 可靠性指标 可维护性指标 指标 代码质量评分 文件数 类的数量 方法数量 代码重复率 代码圈复杂度 千行代码严重缺陷数 千行代码安全缺陷数 过大方法/类数量 高复杂度函数数量 迷惑方法名数量 技术债务比
29. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标分类 整体质量 Bug统计 单元测试 自动化测试 指标 千行代码Bug率 测试覆盖率 提测打回率 缺陷新增趋势 缺陷解决趋势 单测通过率 单测覆盖率 自动化测试通过率 自动化测试覆盖率 自动化测试稳定性 整体漏测率 小流量灰度漏测率 缺陷生命周期分布 有效缺陷率
30. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标分类 发布整体 构建相关 回滚相关 指标 发布失败率及次数 发布和需求关联覆盖率 高峰发布数量及占比 非窗口发布数量及占比 构建成功率 构建次数/频率/时长 构建失败平均恢复时长 回滚率及次数 预发回滚率 小流量回滚率 全量回滚率
31. 指标体系——质量 • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标分类 基本信息 性能 安全性 指标 服务数量 最长链路 最大QPS 系统响应时间 CPU/MEM 客户端专项测试数据 安全漏洞严重问题数
32. • 线上质量 • 服务端 • 客户端 • 过程质量 • 需求质量 • 代码质量 • 测试质量 • 发布质量 • 系统质量 指标体系——质量 全流程 质量度量 • 需求质量评估 • 代码质量评估 • 风险预警 指标分类 基本信息 代码质量 测试质量 发布质量 线上质量 指标 需求名称 需求变更次数 核心服务数量 核心代码块数量 代码行数 圈复杂度 构建成功率 代码扫描问题数 提测打回次数 单测通过率/ 覆盖率 测试通过率/ 覆盖率 发布成功率 缺陷数量 性能测试数据 回滚次数 错误率 QPS 慢请求
33. 指标体系——质量 • 建设“质量度量”的团队流程: • 产品整体质量,实时可评估 • 质量风险可提早暴露,提早修正 • 质量保障流程有的放矢,效果明显
34. • 度量的意义 • 度量体系 • 度量平台建设
35. 平台建设——云图 • 架构图(实时、离线) (高清)
36. 平台建设 • 难点: • 技术选型(ES+Hive) • 指标体系建设 • 业务流程差别大 • 指标消费方多 • 数仓建设: • 数据立方体的建立 • 异构数据 • 数据快照
37. 结束语 • 特点: • 度量数据的生产者,要成为度量数据的消费者 • 度量是一个系统工程 • 业务特点:不同团队有不同流程 • 团队发展阶段:不同阶段有不同重点 • 使用者:不同角色有不同视角 • 不是绩效考核的工具
38. 结束语 • 度量体系,帮助团队: • 建设关注价值、效率、质量的文化理念 • 目标更明确,提升团队战斗力与成就感 • 现状更清晰,减少资源浪费 • 改进更精准,有的放矢的技术革新,流程优化