干货 | 携程是如何在测试时做精准流量筛选的

基于流量回放的自动化回归测试平台 AREX Agent 技术实现细节分享 在面对多线程和各种异步框架时,对数据的串联带来很大的挑战。很多业务系统的场景是对时间敏感的,不同的时间访问往往会返回不同的结果,如果录制和回放时间不一致就会导致接口回放失败,另外由于回放请求是并发的,修改测试机器的机器时间是不合适的,而且很多服务器也不能修改当前时间,因此我们需要在代码层面上实现当前时间的 Mock。现阶段 AREX Agent 采用的解决方案是每次只录制当前请求链路上用到的缓存数据,通过让应用配置动态类的方式去识别录制,测试环境回放时自动替换,保证录制和回放内存数据的一致性。 阅读详情

作者简介

 

文杰,携程高级测试经理,主要从事测试框架和平台的研发,现负责自动化与工具平台,热衷于研究技术提升测试工作效率。

一、前言

2019年携程酒店团队开发了比对自动化平台,极大地提高了测试效率,但在使用过程中慢慢也发现了以下一些问题:

1)为了能够覆盖更多的场景,每次拉取很多流量运行,运行数据量比较大;

2)运行数据量大导致运行时间长,等待运行的场景积压多,运行不稳定;

3)每次运行的流量都是随机性拉取,导致流量场景覆盖不稳定;

4)每次拉取的流量没有一个具体数据度量,代码覆盖率是多少;

5)不能自动发现流量覆盖新的场景,而是通过人工偶然发现,手动标识;

根据以上问题,我们设计开发了精准流量筛选。在使用过程中提高了测试精准性和测试效率,并在此基础上根据业务人员需求相继开发了手动流量筛选,自动流量筛选,用例智能推荐等。

本文将从比对平台如何和流量筛选结合以及手动流量筛选,自动流量筛选,用例智能推荐的方面,分享精准流量筛选,希望能给遇到同样问题的小伙伴带来一些启发和借鉴。


二、整体介绍

2.1 手动流量筛选流程图

2.2 自动流量筛选流程图

 

2.3 用例智能推荐流程图

2.4 相关技术

流量筛选我们主要采用和公司内部的代码覆盖率平台(采用开源代码覆盖Jacoco开发的内部系统)结合获取流量的代码覆盖率数据,以及分布式多线程运行,筛选流量使用杰卡德相似度算法。

通过该方式可以解决:

1)获取流量的代码覆盖率数据问题;

2)流量筛选速度比较慢的问题;

3)流量筛选不精确的问题;

 

关于杰卡德相似度算法:两个集合A和B交集元素的个数在A、B并集中所占的比例,称为这两个集合的杰卡德系数,流量相似度越高杰卡德系数近于1。

相关公式: 

2.5 模块关系图

精准流量筛选由三个模块组成:手动流量筛选模块,自动流量筛选模块,用例智能推荐模块。

手动流量筛选模块,自动流量筛选模块是两个相对独立的模块。手动筛选可以指定具体哪些流量进行筛选,更具有针对性;自动化流量筛选是在机器空闲的时候(通常是晚上),根据用户配置随机获取流量数据,然后对流量进行筛选,更具随机性,用户可以根据业务需求选择筛选方式。

用例智能推荐模块,推荐的用例是手动流量筛选模块和自动流量筛选模块筛选的流量用例,在筛选的过程中标识出新发现的场景流量用例,把这些新发现的流量用例推荐给用户,方便用户精确地写接口自动化用例。


三、模块介绍

3.1 手动流量筛选

筛选原理:比对自动化平台和公司的代码覆盖率平台打通,通过回放场景流量用例,获取流量用例的代码覆盖率信息,对流量用例的代码覆盖率数据进行相似度计算,剔除覆盖率数据相似的流量用例,留下代码覆盖率数据不同的流量用例。

回放的流量来源:

• 手动配置

• ES保留

• ES手动拉取

• Clog手动拉取

• CK手动拉取

流量筛选详情页配置

• 流量请求地址

• 请求的header信息

• 流量筛选块数量

运行方式

• 手动执行

执行方式

• 分布式

• 多线程

运行结果查看页

• 查看去除的相似的流量用例

• 查看流量用例的行覆盖率信息

• 查看流量用例的方法覆盖率信息

• 查看整体流量用例的覆盖率趋势图

• 查看实时流量筛选运行步骤信息

3.2 自动流量筛选

筛选原理:每天凌晨开始,自动到配置的数据源拉取配置数量的流量,对流量进行回放,获取流量用例的代码覆盖率信息,对流量用例的代码覆盖率数据进行相似度计算,剔除覆盖率数据相似的流量用例,留下代码覆盖率数据不同的流量用例。

回放的流量来源:

• 手动配置

• ES保留

• ES实时拉取

• Clog实时拉取

• CK实时拉取

流量筛选详情页配置

• 流量请求地址

• 请求的header信息

• 流量筛选块数量

运行方式

• 晚上自动执行

执行方式

• 分布式

• 多线程

运行结果查看页

• 查看去除的相似的流量用例

• 查看流量用例的行覆盖率信息

• 查看流量用例的方法覆盖率信息

• 查看整体流量用例的覆盖率趋势图

• 查看实时流量筛选运行步骤信息

3.3 用例智能推荐

推荐原理:手动流量筛选和自动流量筛选在筛选用例的时候,标识出新发现的场景流量用例(覆盖了新的方法或者新的代码行),把这些新发现的流量用例推荐给用户,方便用户精确地写用例。

推荐用例数据来源:

• 手动流量筛选的用例

• 自动流量筛选的用例

运行结果查看页

• 根据时间查询推荐的用例

• 根据方法查询推荐的用例

四、使用效果

以某一使用流量筛选的场景为例:

• 从目前4万多的流量中挑选出1000个新场景,后续还在自动流量筛选中;

• 代码覆盖率从23%提升到41%(流量筛选发现新场景该覆盖率还会继续提升);

五、总结

目前流量筛选已稳定运行半年,相比之前有以下变化:

• 比对场景用例覆盖率稳步提升

• 比对场景运行效率更高

• 比对场景运行稳定性增加

• 流量筛选过程中发现很多新的场景流量

• 智能推荐了很多有效的新场景流量用例

为了更好的满足用户需求,对于流量筛选,后续我们将持续迭代。

【推荐阅读】

“携程技术”公众号后台回复“新书”,

可免费获得两本书的试读样章~

《携程架构实践》

京东

当当

《携程人工智能实践》

京东

当当

 “携程技术”公众号

  分享,交流,成长

流量录制与回放工具--GoReplay 文章目录1 简介2 原理3 使用场景4 安装4.1 使用root用户安装(开发和测试环境)4.2 使用root用户安装(生产环境)4.3 安装其他说明5 使用5.1 抓取流量,实时终端显示5.2 抓取流量到日志文件5.2.1 录制5.3.2 回放6 其他参考资料 1 简介 简单来说就是goreplay抓取线上真实的流量,并将捕捉到的流量转发到测试服务器上。《github源码》 : https:/... 阅读详情

相关推荐

mysql流量回放_携程 QA-流量回放系统揭秘

作者简介:康猛,携程网站运营中心资深技术支持工程师。在互联网系统架构设计、后端开发、性能测试领域有多年实战经验。喜欢钻研新技术,善于转化研究成果,提升工作效率。背景众所周知,在产品迭代过程中,功能测试与性能测试是必不可少的两个环节。在产品上线的过程中,做容量预估离不开性能测试,在产品迭代过程中,测试 Case 覆盖率是功能测试必须要关注重要指标,甚至是一行代码的修改,没有经历过严格的功能与性能测试...

weixin_36219012的博客 480

干货 | 单个场景秒级返回,携程机票持续集成之线上场景回放优化

作者简介姜传伟,携程机票高级软件工程师。机票前台服务端搬砖工,负责机票前台服务端基础框架。一、背景随着业务和技术的推进,在早期野蛮生长后,公司逐渐开始注重质量发展。测试方...

携程技术 471

携程内部的测试用例是如何设计的?

在跟大家讲解测试用例之前,首先想要问大家对一个“好的”的测试用例中的“好”是怎么定义的?可能对一些才接触的同学来说,那个“好”可能只是需要它运行起来就可以了,其实不然,接下来跟大家讲解一下“好的”测试用例是什么?如何去做一个“好的”测试用例? 一、什么是“好的”测试用例 “好的”测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关。 举个例子: 如果把被测试软件看作一个池塘,软件缺陷是池塘中的鱼,建立测试用例集的过程就像是在编织一张捕渔网。“好的”测试用例集就是一张能够覆

Chaqian的博客 810

揭秘百度智能测试在测试自动执行领域实践

本章节重点介绍测试执行环节的智能化实践。测试执行是指将测试生成的用例集、数据集利用手动和自动化的方式对这些集合运行,测试执行本质上不能提升揭错水平,但如何高效稳定的执行完测试集合也是影响测试效果的关键。...

lihui49的博客 703

携程旅游网2015年测试笔试题

你还在愁没有全面的准备好笔试嘛 那就下载吧

仿携程主页菜单栏滚动置顶&条件筛选之多个单选弹出

仿携程主页菜单栏滚动置顶以及条件筛选功能,当点击时,点击控件以下弹出选项卡并且选项卡以下部分灰色半透明模板。点击控件以上颜色不变。

携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX

官网文档这篇文章稍稍水一下,主要讲下部署过程里踩的坑,因为部署的过程主要是运维同学去处理了,我只说下踩到的坑,官方的教程是可行的。目前该项目对zuul项目的录制回放会有点问题(录制的样例会出现路由匹配符/order/**,而不是URI,批量回放会出问题),已联系携程AREX开源团队,正在处理,有进度会更新该博客。

HumorChen的博客 1902

基于Open Cluster Management构建企业级多Kubernetes集群管理平台OpenClaw

在云原生架构中,Kubernetes已成为容器编排的事实标准。随着业务规模扩大,企业往往需要管理分布在多个云环境或数据中心的Kubernetes集群,这带来了集群管理、应用分发、策略统一和监控运维等复杂挑战。多集群管理技术通过提供统一控制平面,实现了对分布式资源的集中管控,其核心价值在于提升运维效率、保障安全合规并降低管理成本。Open Cluster Management(OCM)作为CNCF沙箱项目,采用Kubernetes原生架构,通过自定义资源定义(CRD)和控制器模式,为构建多集群管理平台提供了标

weixin_33747129的博客 368

开源 | 流量回放平台 AREX 在携程的大规模落地实践

作者简介携程AREX团队,机票质量工程组,主要负责开发自动化测试工具和技术,以提升质量和能效。导语AREX 是一款由携程开源的流量回放平台,孵化于机票BU内部。聚焦录制回放核心链路的建设,从基础方案建设到核心事业线的深入落地验证,在集团复杂业务场景下不断迭代和优化下,积累了大量经验,取得了可见的成果。在携程落地至今已有 4000+ 应用接入,交付率和缺陷数均有所改善。本篇文章主要介绍AREX在携程...

携程技术 851

从零到一:手把手教你用YonBuilder for NCC搭建NC Cloud 2021.11开发环境(含避坑指南)

本文详细指导如何使用YonBuilder for NCC搭建NC Cloud 2021.11开发环境,涵盖硬件要求、软件安装、YonBuilder配置及常见故障排除。特别提供避坑指南,帮助开发者快速上手NCC开发,确保环境配置的原子化分解和开发思维的体系化建立。

weixin_42523326的博客 345

qt使用qxlsx实现xlsx、xls表格文件快速写入和读取

新年第二篇文章,收尾一个去年计划中发表文章和实现功能。

kbq的博客 1万+

浅谈“流量回放”

流量回放”通常指的是将之前记录的网络请求和响应数据重新发送到系统中,以模拟真实用户的操作。这种技术主要用于测试和调试目的,帮助开发人员和测试人员更好地理解系统在特定条件下的行为。

Arthur Guo 的专栏 5692

解决 TensorFlow 和 Keras 的 Python 版本兼容问题:详细技术指南

本文提供了TensorFlow和Keras与Python版本不兼容问题的完整解决方案。通过版本对照表指出不同TensorFlow版本对应的Python支持范围,强调2.13.x仅支持Python 3.9-3.11,且不兼容Python 3.12+。给出最佳实践建议:使用虚拟环境管理项目依赖,推荐venv或conda创建独立环境;指导正确安装TensorFlow和Keras版本,建议优先使用tf.keras避免冲突;针对常见报错如DLL加载失败、模块导入错误等提供具体解决方法。最后给出一个在兼容环境中运行的M

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1664

干货 | CrateDb在携程机票BI的实践

作者简介Loredp,携程数据分析经理,关注大数据存储、大数据处理以及linux等领域。一、前言随着整个互联网流量红利进入末期,各大厂在着力吸引新客的同时,在既有客户群体的运营上也是煞...

携程技术 684

Python 爬虫实战:爬取豆瓣读书评论并分析

摘要:本文以豆瓣读书《活着》评论数据为例,详细讲解Python爬虫开发与文本分析全流程。首先通过requests库爬取评论数据,解决分页、反爬等问题;然后利用BeautifulSoup解析页面提取评论内容、评分等核心信息;最后结合jieba进行关键词提取、snownlp完成情感分析,并通过可视化展示结果。分析显示该书评分以5星为主(占比70%),正面评论达82%,核心关键词为"活着""余华""生命"。全文包含完整代码与详细解析,帮助读者掌握非结构化

2503_91057718的博客 1497

[系统安全] 十七.Windows PE病毒概念、分类及感染方式详解

作者前文介绍了PE文件格式,熟悉各种PE编辑查看工具,针对目标EXE程序新增对话框等;这篇文章将介绍Windows PE病毒, 包括PE病毒原理、分类及感染方式详解,并通过案例进行介绍。这些基础性知识不仅和系统安全相关,同样与我们身边的APP、常用软件及操作系统紧密联系,希望这些知识对您有所帮助,更希望大家提高安全意识,安全保障任重道远。本文参考了《软件安全》视频、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

杨秀璋的专栏 1万+

Apollo- 配置注释与标签:规范化管理配置项的实操技巧

Apollo配置管理:注释与标签规范化实践指南 摘要 本文深入探讨了在Apollo配置中心中利用注释和标签实现规范化管理的实践方法。针对微服务架构下配置项激增带来的管理挑战,文章提出: 注释规范化:详细说明配置项的用途、取值范围、变更影响和关联信息,避免模糊描述 标签分类法:通过团队(team)、环境(env)、状态(status)等维度建立配置分类体系 技术实现: 演示Apollo Portal界面操作 提供Java客户端读取注释的API扩展方案 展示基于标签的自动化配置检查代码 最佳实践: 注释应包含"

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

YOLO26科研升级:OREPA在线重参数化,让模型精度在训练中持续跃升

在目录下,新建AddModules文件夹,将orepa.py放入其中。

LXY_LOVE36的博客 98

9.携程架构实践 --- 网站高可用

第9 章 网站高可用 网站可用性的提升,要同时从多方面入手,如软件架构设计实现,监控告警,紧急事件的响应,运维管理,容量管理,信息安全,灾备数据中心,故障演练等,这就是一个 "反脆弱"的过程。 9.1 可用性指标与度量 "没有测量,就没有管理;没有测量,就没有改善"。 度量网站可用性的指标有很多,如下: 1.系统指标:以系统或硬件层面的监控数据来测量网站的可用性; 2.应用指标:如应用访问量,错误数,响应时长; 3.业务指标:如业务订单数,用户登录数,支付成功率等。 .

enlyhua的专栏 1068

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【信贷风控30分钟精通23】风控模型体系搭建1

但是,欺诈的复杂性高,我们在很多时候无法明确地从单个维度认定欺诈,此时,我们可通过反欺诈模型,并综合多维度信息进行识别。其他欺诈相关的外部数据源等。贷中阶段会通过贷中行为模型预测客户的风险情况,制订账户管理等策略,同时,利用交易风险模型对客户贷中的提现、消费等交易行为进行风险判断。信用风险模型关注客户的信用资质,相比反欺诈模型,它应采用更长表现期下的逾期水平来定义客户的“好坏”,如将在6个月表现期下逾期超过60天的客户定义为不良客户。营销响应模型的标签是营销后客户是否响应,通常,1表示响应,0表示未响应。

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 1908

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

开源 | AREX-携程无代码侵入的流量回放实践

作者简介Mo.,携程研发总监,专注系统性能、开发效能、业务架构等领域。一、背景对于一个初上线的简单服务,只需通过常规的自动化测试加上人工即可解决,但我们线上核心的业务系统往往比较复杂,通常也会频繁的需求迭代,如何保证被修改后的系统原有业务的正确性就比较重要。常规的自动化测试需要投入大量的人力资源,准备测试数据、脚本等,并且覆盖率通常也不高,难以满足要求。为了保证一个线上...

携程技术 3192

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

流量录制和回放工具AREX

AREX是一款由携程开源的流量录制和回放工具,主要用于自动化回归测试。它通过在生产环境中录制接近全量的业务场景请求和数据,然后在测试环境中回放这些真实的请求和数据,对新版本的应用进行全面、快速的测试[1]。AREX的核心组件是AREX Agent,它通过对入口调用和各个依赖调用的代码进行字节码增强,拦截调用过程,实现服务的录制和回放[2]。AREX的设计初衷是为了降低测试用例编写和测试环境搭建的成本,同时提供了一套详细的官网文档和活跃的社区支持,使得即使是新手也能快速上手[4]。

zachary的博客 2639

网站流量日志数据分析系统

1. 点击流数据模型1.1. 点击流概念点击流(Click Stream)是指用户在网站上持续访问的轨迹。这个概念更注重用户浏览网站的整个流程。用户对网站的每次访问包含了一系列的点击动作行为,这些点击行为数据就构成了点击流数据(Click Stream Data),它代表了用户浏览网站的整个流程。点击流和网站日志是两个不同的概念,点击流是从用户的角度出发,注重用户浏览网站的整个流程;而网站日志是面...

weixin_33726318的博客 1767

携程线上测评测试题目,答案解析

携程入职测评历年真题,题型攻略 社招校招携程在线测评会挂人吗 携程行测资料考点分析 携程新员工入职 会在面试通过后发放一份线上测评(有些岗位会有另一份英语测试),线上测评通过后才会往下走,所以要引起重视; 携程入职测评包含四部分(部分岗位三部分),四部分综合能力测试:言语理解、资料分析、图形推理、空间推理(部分岗位可能有一部分性格测试) 社招校招携程测评题型几乎一致; 1、携程笔试第一部分为言语理解,每道题大概是60到90秒,对于题干比较长的,讲究快读、略读,可以先看问题,有针对的再看题

guang221315221的博客 2万+

干货 | 质量保障新手段,携程回归测试平台实践

作者简介Sedro,携程资深测试工程师,专注于测试技术探索及测试工具研发。一、系统回归问题回归测试是软件生命周期一个十分重要的环节,但项目在随着版本的逐步迭代,功能日益增多,系统愈加复...

携程技术 575
上一篇: 干货 | 携程数据库发布系统演进之路
下一篇: 干货 | 日均TB级数据,携程支付统一日志框架
携程技术
博客等级 码龄10年 3716粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值