1、基于流量回放的自动化回归测试平台AREX探索实践携程 王海兵目录CONTENTS背景01 自动化测试探索02 AREX 体系与技术实现03 AREX 效果与展望04 01背景资源有限,质量无限回归测试工作量大业务越来越复杂,验证点的超级多变更影响范围未知,全量回归测试或抽样验证快速迭代难以应对测试用例维护成本高测试工具和用例越多维护越难(维护成本)测试数据维护量大(环境数据稳定性)自动化用例执行与管理(测试管理成本)背景-研发测试团队的效能困境研发测试团队面临的问题02自动化测试的探索实践探索:自动化测试的探索与实践录制回放场景数据场景环境与监控接口流量回放工具,全链路压测工具,前端流量回放工
2、具,用户行为监控调试回放测试数据构造工具,接口MOCK平台,数据库导入和脱敏工具,业务数据镜像工具等基准测试环境治理,无线设备和虚拟机环境治理,生产业务监控,日志监控,性能监控236携程自动化测试的探索测试度量场景代码层场景功能测试覆盖率,自动化测试覆盖率,覆盖前后端的增量代码行覆盖率,精准测试,用例分级分类单元测试代码生成,基于SonarQube的自定义规则库,重复代码和无效代码跟踪,基于SonarQube API的二次分析等54测试用例场景1可视化接口测试平台,接入CICD,打通中间件和各中台,定制化的通用测试平台。自动化测试,提升了测试覆盖率和执行效率测试覆盖率和执行效率,配合了DevO
3、PS快速迭代快速迭代,保证了产品发布的品质。我们一定要去解放测试工程师我们一定要去解放测试工程师1.测试范围 越来越大2.回归测试用例和数据维护 与日俱增3.快速迭代快速发布 要求越来越高4.人力资源得不到更好的补充自动化测试下测试团队压力的提升自动化测试下测试团队压力的提升探索:自动化测试的探索与实践自动化测试与能力提升软件项目随着规模增大,产生滚雪球效应滚雪球效应自动化已经成为主流,是必需品,也是奢侈品奢侈品自动化测试投入成本增幅远高于开发成本增幅探索:自动化测试的探索与实践滚雪球效应用生产真实请求与数据,进行全量的自动化回归测试回归测试用例和数据不维护,全自动执行 新功能测试用例在测试环
4、境固化,补充新的回归测试用例降低滚雪球效应的影响,固定回归测试的人力和时间成本探索:自动化测试的探索与实践AREX 测试平台的产生与愿景03AREX 体系与技术实现AREX=生产环境流量数据录制测试环境流量数据回放新旧版本差异比对+AREX 体系与技术实现AREX 的体系结构普通请求AREX 录制AREX 回放AREX 体系与技术实现AREX 录制回放的基础原理AREX AGENT 技术栈1AREX 技术实现与优化 技术挑战ForkJoinPool对ForkJoinPool 的任务单元ForkJoinTask 进行了修饰,采用 WeakCache 做数据缓冲,可以保证任务生成和执行线程之间的
5、Trace 传递。Java Executors修饰 Runnable,Callable,代码修饰各种线程池,把 Runnable、Callable 替换掉。Wrapper 内部通过TraceTransmitter 保证 Trace 的正确传递。因多线程和异步实现,导致调用链丢失。Asynchronous以 Apache Async Client 为例,是以固定运行的线程监听响应,并发起 Callback,AREX 实现调用、监听、回调整个流程中多个跨线程的 Trace 传递。调用链丢失2AREX 技术实现与优化 技术挑战解决方案流行的组件往往存在多个版本同时在不同的系统中使用,不同的版本实现方
6、式差别可能很大,甚至不兼容版本管理3AREX 技术实现与优化 技术挑战AREX 提供多个版本的支持(如 Jedis),在这些类加载前识别出应用依赖的组件版本,从而在类加载时进行版本匹配,保证正确注入代码。解决方案为了系统的稳定性,AREX Agent 的框架代码是在一个独立 Class loader 中加载,和应用代码并不互通。为了保证注入的代码可以在运行时被访问,对 Class Loader 进行了简单的修饰,保证运行时的代码会被正确的 Class Loader加载。代码隔离4全文:http:/ 技术实现与优化 技术挑战很多业务系统是时间敏感的,不同时间访问会得到不同的结果。时间问题5ARE