去哪儿网接口自动化测试探索实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 去哪儿网接口自动化测试平台 灭霸的探索实践 李晓悦 去哪儿网基础研发技术总监
2.
3. • 灭霸诞生背景 • Case智选 • 测试环境治理 • 录制回放模式落地 • 其他探索 • 总结
4. 旅游业务复杂度 • 业务复杂 • 版图大/品类多 • 出行/住宿 • 景点 • 业务发展 • 服务/包装/套餐 • 定向服务/推荐 • 新玩法/业务融合
5. 举例:机票业务演进 • 基础信息 • 舱位/航程/航司 • 起降时间 • 航站楼/经停 • 价格
6. 举例:机票业务演进 • 商旅套餐 • 附加服务 • 退改套餐 • 灵活退改策略 • 低价退改费用 • 极速出票 • 临时起意 • 机酒套餐 • 一站式服务
7. 举例:机票系统复杂度升高
8. 机票业务数据复杂
9. • 敏捷开发 • 小步快跑 • OKR • MVP/milestone • 交付速度 • 改动影响范围 • 是否要回归 • 回归多少 • 时间成本/漏测 回归成本高
10. 依赖熵——上下游依赖 • 依赖熵 • 下游不稳定/无数据 • 下游消耗资金 • 灰度/仿真测试下游 有写操作 • 构造数据更加复杂 • 接口/db/redis
11. 依赖熵——流程依赖 • 复杂流程测试 • 流程间依赖 • 搜索->booking- >生单->支付-> 售后 • 单独流程难剥离 • 测生单依赖搜索 和booking
12. 故障数据分析
13. 测试痛点分类
14. 灭霸:随机消灭一半bug
15. • 灭霸诞生背景 • Case智选 • 测试环境治理 • 录制回放模式落地 • 其他探索 • 总结
16. 测试维度固化/笛卡尔积生成checklist
17. Case生成数据来源 • checklist->case • 数据来源: • ELK业务日志 • 与排查问题共享数据 • checklist漏斗 • 覆盖问题:量vs质 • agent标准化记录请 求入参打印日志 • 时效性
18. 测试维度自动更新 • 太少?新增业务分支 • 生成用例的同时,发现新的业 务分支的取值 • 自动 vs 手动补充 • 太多?叉乘出不合理的业务分支 • 某取值消失 • 有效精简:统计测试维度覆盖 率,⻓期无覆盖的进行精
19. Case生成策略 • 用户触发测试时生成的case • 实效高 vs 速度慢/有遗漏 • 定时补充的case(定向) • 固化case,提高稀有case覆盖 • 早中晚生成case • 合理利用机器资源,削峰填谷
20. Case校验 • 巡检校验case的新鲜度/有效性 • 主要针对固化的 • 用户配置的断言规则 • 某些节点不能为空 • 无效case处理 • 剔除 • 挽救:数据偏移
21. 入参单一问题 • 条件:订单号 • checklist?业务语义? • 内容:订单详情 • 隐性条件:订单的部分属性 • 维度在过程中 • 维度在结果中
22. • 灭霸诞生背景 • 灭霸Case智选 • 测试环境治理 • 录制回放模式落地 • 其他探索 • 总结
23. 测试流程 • 流水线 • 需求->开发->测试... • CICD流水线触发自动化 测试 • 单一环境抢占 • 多项目(PMO)竞争 • 非代码变更竞争
24. 环境池 • 按需(热度)分配 • 好处 • 提高并行度 • 降低测试竞争和阻塞 • 坏处 • 不好量化评估 • 难以动态调整 • 多应用大环境资源损耗
25. 软路由
26. 配置文件变更
27. • 灭霸诞生背景 • 灭霸Case智选 • 测试环境治理 • 录制回放模式落地 • 其他探索 • 总结
28. 自动化测试的两个维度 • Level I:接口diff • Level II:录制回放 • 下游不稳定 • 下游无数据 • 下游消耗资金 • 下游有写操作
29. 录制回放组件选型
30. jvm-sandbox-repeater结构 • 控制面 • 下发 • 录制/回放 • 数据面 • 沙箱核心实现 • 录制回放插件 • 数据中心 • 数据上报 • 存储/读取
31. • 控制面 • 灭霸中控 • case录制/回放/筛选 • 数据面 • 新插件 • ES管理索引 • case筛选 • Hbase原始数据 • case执行 二次封装
32. 出现预期差异时排查难度大 • 数据不同 • 结果diff • 入参diff • 流程不同 • 方法调用链路不同 • 排查难度增加
33. 最后一公里的问题 • 日志 • debug • arthas
34. • 流程不同 最后一公里的问题 • 宏观:系统间链路不同 • 靠链路trace • 微观:方法调用链路不同 • 因为代码改动,原来A->B->C ,现在A->B->D • 如何感知? • 参考异常栈(开发经常查异常 的时候依靠异常栈信息)
35. JVM链路梳理
36. • 灭霸诞生背景 • 灭霸Case智选 • 测试环境治理 • 录制回放模式落地 • 其他探索 • 总结
37. 测试生态构建
38. 测试生态构建——全链路压测
39. 测试生态构建——全链路压测
40. 结合混沌工程
41. 结合混沌工程
42. 强弱依赖标记——混沌工程
43. 结合混沌工程
44. 公共组件/jar包升级/dubbo升级 • dubbo升级社区版 • tcdev x.x升级 • 痛点 • 意愿低 • 回归成本 • bug/故障
45. 底层基础设施重大变更 • kvm迁移容器 • 容器镜像升级 • 基建修改 tomcat/jdk升级 • noah环境业务检查
46. • 灭霸诞生背景 • 灭霸Case智选 • 测试环境升级 • 录制回放模式落地 • 其他探索 • 总结
47. 数据分析 • 业务测试数据 • 项目维度(PMO):53055次 • 应用维度(微服务):59094次 • 接口维度:218538次 • 测试不通过次数:53498 • 测试通过次数:165040次 • 24.48%的代码问题通过测试平台发现,规避了潜在的线上故障
48. 数据分析 • 业务测试数据 • 节省PD数:162*0.5pd(单应用所有接口测试case数50) • 年化收益:2000*250*162*0.5=40500000元
49. 数据分析 • 配合演练数据 • 1200次强弱依赖演练 • 接口依赖3000+个 • 五一演练发现问题136个
50.
51.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-15 09:55
浙ICP备14020137号-1 $Carte des visiteurs$