打造高效能质量保障的三板斧
如果无法正常显示,请先停止浏览器的去广告插件。
1. 「奔逸绝尘」
打造高效能质量保障的三板斧
吴骏龙
阿里巴巴本地生活 高级测试经理
2. • 中国科学技术大学 硕士学位
• 曾任职于eBay,专攻测试领域各项自动化技术,推行先进测试理
念,崇尚和热爱技术,擅长通过技术手段保障产品质量
• 现任职于阿里巴巴本地生活,负责质量基础设施建设,工作重心投
吴骏龙
阿里巴巴本地生活 · 高级测试经理
入全局容量保障、稳定性、质量效能等工作,担任多项大促活动和
重点项目PTM
3. 质量保障的「血泪史」
项目节奏太快,没有时间写自动化测试用例
4. 质量保障的「血泪史」
跑一整套自动化回归测试用例,需要12个小时
5. 质量保障的「血泪史」
跑1000个自动化回归测试用例,失败100个,
其中90个是环境问题
6. 质量保障的「血泪史」
我负责的模块质量好不好,我自己也说不准
7. 质量困境
项目倒排期
QA没时间
全局业务识别度差
环境治理不佳
工具不足
自动化程度低
回归测试时间长
环境不稳定
质量效能低下
造数困难
联调效率低
漏测率高
用例可复用性差
质量可信度不足
缺乏架构梳理
问题无法及时暴露
8. 为什么要重视质量效能
以尽可能小的成本,尽可能高的效率,保证产品质量。
质量效能低下,最终会影响质量。
质量效能低下,是不可持续的。
9. 质量提效切入点
PRD
预评审
MRD
自动化、流量回放、造数引擎
CR
QA测试用例
PRD
评审
技术方案
排期
接口定义
Dev功能代码
自助回归测试
自验证
问题
• 获得质量反馈太慢,成本太高
• Dev/QA相互依赖太多,造成block
• 与外部团队依赖太多,造成block
提测
环境隔离
精准测试
回归测试左移
研发修复
缺陷上报
手工测试
联调
可选
QA验证
发布
线上问题定位
线上验证
可复用
测试组件
10. 质量提效三板斧之「快速」
质量提效三板斧之「精准」
质量提效三板斧之「可信」
11. 质量提效三板斧之「快速」
可重复的,快速提供可靠的质量反馈,包括结果和过程
「一天」构建出一整套回归测试用例集
「一小时」完成中等规模功能模块的自动化测试用例编写工作
「15分钟」跑完整个回归测试(Full Regression)
If it hurts, do it more often. — Martin Fowler
12. 流量回放
调用链快照
调用链
上游应用
Redis
Redis
待验证服务(回放)
线上服务(录制)
MySQL
A1 Service
MQ
A2 Service
B Service
服务治理系统
真实调用
流量回放
Client
流量回放
Client
MQ
上下文
流量回放服务端
数据比对
任务控制
MySQL
A1 Service
A2 Service
Mock调用
MQ
B Service
13. 流量回放
录制流程 回放流程
1.A Service被调用,AOP记录A Service的请求,写入A上下文 1. 从外部消息队列获取调用链上下文,对A Service发起请求
2.调用Redis,AOP记录Redis的入口请求和出口响应,写入A上下文 2. 调用Redis,判断是回放流量,记录调用Redis的入口请求,写入B上下文,
3.SOA方式调用B Service,AOP记录B Service的请求和响应,写入A上下文
4.调用DAO操作DB,AOP记录DAO的入口请求和出口响应,写入A上下文
5.通过数据库中间件时,记录执行SQL,写入A上下文
并从A上下文中获得出口响应,进行mock返回
3. SOA方式调用B Service,判断是回放流量,记录调用B Service的请求,写入
B上下文,并从A上下文中获得响应,进行mock返回
6.发送消息,AOP记录消息内容,写入A上下文 4. 其他流程类似,略过……
7.A Service调用结束,AOP记录响应,写入A上下文 5. 将上下文A和上下文B输出至流量回放服务器
8.将整条调用链上下文(A Context)输出至外部消息队列
比对流程
1. 将上下文A和上下文B逐字段比对,若不一致则输出
2. 支持通过脚本对比对逻辑进行加强
14. 用例模块化
用例
模块
用户、商户
用户、商户
创建即时单
创建预约单
订单实体
测试用户 测试商户
测试用户
(带满10 - 3红包) 测试商户
(带满减活动)
订单实体
预约单
用户、红包类型
添加红包
成功与否
后续操作
商户
设置活动
成功与否
Check points
测试结果
AOP AOP AOP
通用模块 + 定制模块(来源日常用例)
组装成测试用例 + 检查点
15. 质量提效三板斧之「精准」
恰到好处的,按“需”提供质量反馈
• 执行的测试用例究竟能多大程度上保障系统质量?
• 是否每次迭代验证都需要执行全量回归测试?
16. 精准测试
静态分析
用例推荐
项目代码
AST
A
数据库
类vs方法vs行
通过A得到
变更方法集
Commit
Code Diff
B
映射关系
应用服务 with Jacoco
执行
精准用例
用例
执行
输出
代码轨迹
方法vs用例 映射关系
自动化测试系统
17. E2E测试的精准性
让用户来“帮”我们度量
E2E测试的覆盖率靠什么度量?
线上链路收集
归纳同类项
权重分析
产品定义User Story 测试编写用例 研发定义关键路径
测试进行分析 覆盖所有代码 测试进行覆盖
排序
输出关键链路
构建
靠谱吗?精准吗?
测试用例
18. 质量提效三板斧之「可信」
提供高置信度的质量反馈,缺陷即为「BUG」
• 执行失败的自动化测试用例中,大半是环境问题
• 由于测试数据污染,造成测试结果的不准确
• 质量反馈不稳定,导致结果需要人工甄别
19. 测试环境稳定性治理
B1 C1 A2 B2 C2 D2 主干环境
A0 B0 C0 D0 基础环境
服务探活
项目环境
链路巡检
20. 造数的可靠性
造数需求
造数服务
设置权限、过期时间等
造数策略
批量造数
用户
商户
实时造数
数据仓库
生产数据(重试机制)
使用方
消费数据
根据消费量
调整生产量
数据仓库
定期
订单
Golden
Data Set
数据校验
21. 总结
质量反馈
快速 精准 可信
提供质量反馈的周期更短 获得质量反馈的成本更低 质量反馈的置信度更高
22. 谢谢观看