《3-得物流量录制回放实践-周官宝-0605.pdf》由会员分享,可在线阅读,更多相关《3-得物流量录制回放实践-周官宝-0605.pdf(41页珍藏版)》请在三个皮匠报告上搜索。
1、得物流量录制回放实践周官宝演讲嘉宾介绍周官宝 资深后端开发工程师l 拥有多年的后端开发经验;曾任职美团、喜马拉雅、现任为得物。目前负责流量录制回放平台,从0到搭建线上巡检平台、对服务端自动化测试和资损防控有一定理解和思考等。CONTENT目录背景-为什么要落地流量录制回放01演进-落地过程的演进及遇到问题效果-拿到怎样效果020304规划-未来展望Part 01背景l 测试场景l 传统自动化劣势l 流量录制回放优势我有个代码重构代码重构,改动涉及一批接口,需要对原有的接口及场景做回归,你帮我测试一下。这个接口RT这么高我可不敢动,干脆新写一个接口实现原来的功能吧!我重新写了一个接口重新写了一个
2、接口b,逻辑保持跟a接口一致,你帮我测试一下。哇,这个接口前置数据造数怎么这么复杂,每次都要重新构造一笔场景数据,并且针对查询接口返回做大量的断言,稍有断言不充分断言不充分就有可能遗漏问题到线上,这后面脚本维护成本可怎么办。研发这次需求改动了十几个核心接口,我虽然完成了用例评审内的所有场景测试,但是生产场景、数据复杂,上线有点慌上线有点慌,干脆去烧个香?01 编写成本高本高要深入理解业务,同时需要额外的造数据和清数据02 维护成本高代码变更导致用例失效,线下环境不稳定导致无效排查03 覆盖率不足成本平衡到聚焦P0P1业务场景,带来覆盖率不足的问题04 断言不充分断言数量巨大,尤其一些查询接口,
3、只能断言一些核心字段,非核心字段问题无法发现传统自动化真实流量无需编写断言回放成功率稳定用例创建成本低01OPTION03OPTION02OPTION04OPTIONPart 02演进l JAVA写接口演进l JAVA读接口演进l GO/Python/C+读接口回放及场景探索l 赋能其他平台主要里程碑模式变化、自动化、测试左移、智能化自动化、新模式探索压测平台、混动工程迁移回放、go回放、日志录制回放、算法域回放JAVA读接口演进GO/Python/C+读接口回放及场景探索JAVA写接口演进赋能其他平台JAVA写接口回放2021202220232024线下mock回放读写分离读接口在预发回放写
4、接口在测试回放写接口回放自动化写接口回放新模式探索JAVA线下mock回放常见四种失败常见四种失败子调用未匹配-多子调用子调用参数不一致响应DIFF不一致子调用未匹配-少子调用JAVA线下mock回放时间差异时间还原时间还原系统噪音)忽略字段忽略字段数组乱序数组排序数组排序降噪手段降噪手段JAVA写接口线下回放自动化 同版本:是指将回放环境的代码分支(CommitID)与生产代码分支部署一致,目的补充用例,提高覆盖率,降低噪音 新(待发)版本:是指回放环境的代码分支是提测前的合并的分支,目的是检查新代码是否符合预期JAVA写接口回放新模式探索三个三个方向方向一个原则:能mock尽量mock,不
5、能mock,发生真实调用一个关系:回放子调用与录制子调用关系总体对比:子调用和响应全面对比20212021线下mock回放20222022读写分离20222022预发读单回放20232023【基础版】预发读双回放20232023【进阶版】预发读双回放(全链路拦截/自动化)至今至今【探索版】预发读双回放(智能化)20242024测试读双回放(测试左移)JAVA读接口演进1 1线上线下配置不一致2 2中间件支持不完善3 3排查成本较大4 4发现问题能力差存在问题存在问题生产线下配置不一致导致录制、回放天然调用链路不一致,增加噪音1 12 23 34 4部分中间件不支持,导致无法录制节点数据,并且异
6、步线程等问题无法较好解决回放失败排查成本较高,需要测试具备一定代码基础并远程debug调试业务代码绝大部分失败排错均为正常代码变更,较小概率发现代码bug。部分重构和迁移不支持JAVA线下mock回放线上线下配置不一致中间件支持不完善排查成本较大发现问题能力差读接口读接口在预发回放写接口写接口在线下回放读写JAVA读写分离预发生产共库预发生产共库优势优势回放只读接口回放只读接口不需不需MOCK中间数据中间数据仅仅DIFF响应结果响应结果JAVA预发读单回放1 1只读接口定义太严格2 2识别只读接口成本太高3 3可能污染生产数据4 4时效要求较高接口噪音较大存在问题存在问题部分读接口因仅涉及日志