一、前言
本文按照方法、流程、工具、度量、扩展的方式进行展开,着力讲述在字节的时候,涉及到产品、开发、测试、运维、运营角色在内的 DevOps流程。
二、背景
最近以私人名义,再次回到字节,友情分享,讲述自己当初在字节的一些研发流程实践。刚到腾讯的时候,主要描述多的是在TW的 一些最佳实践,而这次借着这次机会,算是从整体维度总结了一下在字节的那段光阴里的快照,权当一个小总结了吧。
三、方法
1. DevOps成熟度模型
2. 精益测试
2.1 测试四象限
2.2 测试分层
四、流程
1. 软件开发过程
双周迭代图如下(黄色代表会议,蓝色代表开发,绿色代表测试):
上图里面只描述了开发过程前后一点的事情,不涉及到的:
- 开发前 产品内部评审 -> 需求评审 -> 技术评审 -> 录单估算
- 进入开发 进入迭代 -> 开发 -> 测试 -> showcase -> 提测 -> pre -> 验收 -> prd
- 上线后 报警监控 -> 反馈 -> 阻塞性问题及时修复
2. 上线流程
- 上线前
- 上线Checklist(Owner、前期准备、上线前影响通知、上线审批)
- 上线窗口、周期
- 上线后
- 工单运营(数据的清理、修复)
- 生产验收
- 事项
- 事故处理&复盘
- 违规操作
五、工具
1. 软件开发管理
项目管理工具:Jira、Rocket、Meego
- 工作流
- 配置字段
- 工作模式
- 度量,基于Jira仪表盘和Jira数据库的数据
2. 持续交付
- 代码仓库:Gitlab
- 依赖包:Maven私服
- 版本控制:
- Git
- 分支策略
- GitFlow
- Trunk Base
- CICD工具
- Jenkins
- TCE&BOE、Devops平台
- 内部自建平台封装
- 代码扫描
- CheckStyle
- Sonar代码质量
- 测试覆盖率
- 安全检查(依赖包检查)
- 测试
- 代码层面:单元测试、小规模集成测试
- 接口测试:postman、Tesla
- 系统测试:测试环境治理与搭建
- 自动化UI测试:无
- 手工测试:测试用例+人工验证
3. 技术运营
- 自动化运维
- 自建平台工单申请
- 配置管理
- 监控
- 硬件监控:IT机房管理(磁盘、温度、风扇、电压)
- 系统监控:TCE管理(CPU、磁盘、内存、网络、进程)
- 应用监控:Prometheus、Grafana
- 业务监控:自研系统、BI仪表盘
- 日志监控:ELK
- 调用链路监控:SkyWalking
- 报警
- 等级:群通知、短信、电话、上级电话
- 阈值设置:1min、5min、30min
- 值班关注:运维值班、应用研发Owner值班
- 运营
- 用户反馈
- 话术统一(公告)
六、度量
1. 产品侧
- PV、UV
- 竞品 根据产品类型的不同,此处差异较大
2. 研发侧
- 任务创建与完成对比(横向、纵向)
- 缺陷创建与完成对比(横向、纵向)
- Code Review统计分析
- 分支情况分析
- 代码质量对比
3. 测试侧
- 单测覆盖率
- 自动化测试覆盖率
- 问题解决时间
- 问题原因分类(是否在测试阶段没测到)
- 每周线上问题解决率
4. SRE侧
- SLA相关
- 资源使用
- 性能延迟
- 请求大小
- 请求响应时间等
- 稳定性等
- 每日报警汇总
5. 运营侧
- 线上反馈
- 满意度调查
七、扩展
1. 原则
- Fast Fail
- 能量守恒
- 测试左移(Testing Shift Left)
- 需求评审、设计评审、ATDD/BDD
- 测试右移(Testing Shift Right)
- 性能、安全、易用性、可靠性
- 可视化原则
2. Google测试发展历史
- 质量内建
- Tester -> QA-> Software Engineer for Test(SET) -> Software Engineer on Tooling and Infrastructure(SETI)
- LeadTime = WIP / Throughtput(Little Law)
3. 测试未来趋势
- 敏捷化
- 高度自动化
- 云化:基础设施
- 服务化:中台与API
- 模型化:MBT
- 智能化:大数据与AI
八、其他维度的历史
上面的维度,比较系统的呈现了所涉及到的流程。现在回头看,当时觉得很有条理的、按照双月所做的事情,虽然比较散,但是成果 却不错。
- ~2月,行政房产项目、财务项目
- 3~4月,持续集成,搭建Jenkins流水线
- 5~6月,敏捷管理,Jira工作流标准化、归一化、落地到所有项目
- 7~8月,代码质量,Sonar扫描修改,阈值设置
- 9~10月,持续交付,Build Once, Deploy anywhere。迁移到TCE、BOE、DevOps。
- 11~12月,应用元数据,GAIA需求调研、设计开发、上线。
- 1月~2月,运维自动化,GAIA支持其他平台,灌入数据。
- 3月~5月,采购供应链
九、参考
- 《Google的软件测试之道》
- 《测试人员在DevOps转型过程中的发展路径》
- 《”六化”——软件测试发展趋势》