当前位置: 首页 > news >正文

基础组件-流量回放(全链路流量回放预研)

一、调研
  日常测试工作中,遇到问题如下:
1、服务架构升级或者重构,需要对原有的接口做全量回归
2、对于业务逻辑复杂的场景,每个迭代版本都需要大量的时间进行回归测试
3、编写自动化用例时复杂场景造数麻烦,日常自动化维护成本高
4、构造压测模拟数据麻烦
5、线上问题,无法再测试环境中重现
6、无法对线上核心接口采样之后做一些业务校验并实时监控业务正确性
二、流量复制
  用户访问系统造成的数据传输定义为流量,那么在用户访问系统的过程中,可以把进入和流出的数据复制下来,进行保存,待后续使用
三、流量回放
  获取到复制下来的流量后,按照接收的时间顺序,将他们一条一条的传输到待测试的服务中,让测试服务产生相应的响应
四、流量回放测试场景
1、复制下来什么内容就回放什么内容,即流量回放
2、复制下来的内容进行一些预设规则的过滤,或者特殊的处理后,再进行回放,即选择性回放
3、复制下来的内容,对其进行处理从中获取必要的数据项,比如搜索词,即关键词回放
五、技术选型

技术框架语言社区协议优点缺点
Jvm-sandbox-repeaterjava 活跃,github 2.0K start,博客较多,大公司有实践http,二进制 1、开源项目,功能丰富 2、单体,依赖少,无需配置,环境配置简单 3、功能丰富,支持流量过滤功能,按倍速回放功能,回放时改写接口参数等 4、资源消耗少,且不侵入目标应用的JVM运行环境,影响小 5、提供插件机制,插件不限制语言,方便拓展
GoReplaygolang活跃 github 15k star社区版:http 商业版本:http,二进制1、开源项目,代码简单,方便定制 2、3、4、5 点同sandbox-repeater 1、需要自研配置,监控、分析平台 2、社区版只支持HTTP协议,不支持二进制协议,且核心逻辑与HTTP协议耦合了,拓展麻烦 3、只支持命令行启动,没有内置服务,不好进行集成 4、官方提供插件较少 5、不支持mock 6、生产库会产生测试数据
RDebugphp,golang、C++ 一般,github 1.4k starhttp 1、开源项目,代码简单,方便定制 2、单体,依赖少,无需配置,环境配置简单 1、只支持命令行启动,没有内置服务,集成麻烦 2、功能简单 3、配置,监控,分析平台的支持机制,需要自研 4、不支持mock 5、生产环境产生测试数据
tcpreplayC一般,github 829 starrhttp,二进制同Redebug同Redebug
tcpcopyC一般,github 4k starhttp,二进制同Redebug同Redebug
ngx_http_mirror_moduleC活跃http,二进制同Redebug 1,2,3,4,5同Redebug 6、必须依赖nginx

相关文章:

  • k8s-集群升级 2
  • 【OpenCV实现图像:OpenCV进行OCR字符分割】
  • C语言 原码、反码、补码
  • MySQL 定时计划任务 事件的使用
  • 蓝桥杯第三周算法竞赛D题E题
  • 导航守卫有哪三种?
  • jenkins+centos7上传发布net6+gitlab
  • C++单调向量算法:132 模式解法三枚举1
  • 【每日一题】—— C. Yarik and Array(Codeforces Round 909 (Div. 3))(贪心)
  • 【具身智能评估1】具身视觉语言规划(EVLP)仿真环境汇总
  • Vulkan渲染引擎开发教程 一、开发环境搭建
  • python基础练习题库实验3
  • Canal+Kafka实现MySQL与Redis数据同步(一)
  • 贪吃蛇小游戏
  • typora使用PicGo自动上传图片到chevereto图床
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Django 博客开发教程 8 - 博客文章详情页
  • Java到底能干嘛?
  • Linux中的硬链接与软链接
  • nfs客户端进程变D,延伸linux的lock
  • SAP云平台里Global Account和Sub Account的关系
  • storm drpc实例
  • 阿里研究院入选中国企业智库系统影响力榜
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 给初学者:JavaScript 中数组操作注意点
  • 关于Flux,Vuex,Redux的思考
  • 关于springcloud Gateway中的限流
  • 基于axios的vue插件,让http请求更简单
  • 技术胖1-4季视频复习— (看视频笔记)
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 软件开发学习的5大技巧,你知道吗?
  • 少走弯路,给Java 1~5 年程序员的建议
  • 实战|智能家居行业移动应用性能分析
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 探索 JS 中的模块化
  • 新书推荐|Windows黑客编程技术详解
  • 怎么把视频里的音乐提取出来
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​TypeScript都不会用,也敢说会前端?
  • ​人工智能书单(数学基础篇)
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #1015 : KMP算法
  • #pragma pack(1)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $(function(){})与(function($){....})(jQuery)的区别
  • ()、[]、{}、(())、[[]]命令替换
  • (0)Nginx 功能特性
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)STL算法之比较
  • (Note)C++中的继承方式
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (论文阅读30/100)Convolutional Pose Machines
  • (转)人的集合论——移山之道
  • (转)总结使用Unity 3D优化游戏运行性能的经验