Python自动化测试之线上流量回放:录制、打标、压测与平台选择

news2024/11/28 2:50:42

在自动化测试中,线上流量回放是一项关键技术,可以模拟真实用户的请求并重现线上场景,验证系统的性能和稳定性。本文将介绍Python自动化测试中的线上流量回放技术,并提供实战代码,帮助你了解流量的录制、打标、压测发起以及压测平台的选择。

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

2023年B站最牛软件测试面试突击教程,字节大佬亲授,99%的人都能拿到offer

一、录制流量

要进行线上流量回放,首先需要录制真实线上用户的请求。可以使用Python的代理工具,如Mitmproxy或Fiddler等,在代理环境中拦截并记录用户的请求数据。以下是一个示例代码:

import mitmproxy
import json
class FlowRecorder:
    def __init__(self):
        self.traffic = []
    def request(self, flow):
        request_info = {
            "url": flow.request.url,
            "method": flow.request.method,
            "headers": dict(flow.request.headers),
            "body": flow.request.text,
        }
        self.traffic.append(request_info)
    def response(self, flow):
        pass
    def done(self):
        with open("traffic.log", "w") as file:
            file.write(json.dumps(self.traffic))
addons = [
    FlowRecorder()
]
if __name__ == "__main__":
    mitmproxy.options.Options(addons=addons).run()

通过运行以上代码,使用Mitmproxy录制线上流量,并将请求信息保存到traffic.log文件中。

二、流量打标

为了在流量回放中能够区分不同类型的请求,可以为每个请求打上相应的标记。可以使用Python代码对录制的流量进行处理,给每个请求添加一个标记字段。以下是一个示例代码:

import json
traffic_file = "traffic.log"
with open(traffic_file, "r") as file:
    content = file.read()
    traffic_data = json.loads(content)
for request in traffic_data:
    # 添加标记字段
    request["tag"] = "user_request"
with open(traffic_file, "w") as file:
    file.write(json.dumps(traffic_data))

以上代码将录制的流量文件traffic.log读取后,给每个请求添加了一个名为"tag"的字段,并将处理后的数据重新保存到文件中。

三、压测流量

在流量回放前,需要对录制的流量进行压测处理,以模拟高并发场景。可以使用Python的压测工具,如Locust、Gatling等,对流量进行并发发送。以下是一个示例代码:


from locust import HttpUser, task, between
import json
traffic_file = "traffic.log"
class TrafficUser(HttpUser):
    wait_time = between(1, 2)
    @task
    def replay_traffic(self):
        with open(traffic_file, "r") as file:
            content = file.read()
            traffic_data = json.loads(content)
        for request in traffic_data:
            self.client.request(
                method=request["method"],
                url=request["url"],
                headers=request["headers"],
                data=request["body"],
            )

以上代码使用Locust库,定义了一个TrafficUser类,并在其中使用task装饰器定义了一个replay_traffic任务。在任务中,通过读取流量文件,将每个请求发送到目标系统。

四、压测发起与压测平台选择书单

压测可以通过多种方式进行,可以选择自建压测环境或使用云压测平台。自建压测环境可以使用Python的多线程或多进程技术,并结合压测工具进行并发请求。云压测平台则提供了可扩展的压测资源和报告分析功能,如LoadRunner、BlazeMeter等。根据实际需求和预算,选择合适的压测方式和平台。

总结

通过录制流量、打标、压测流量和选择合适的压测平台,我们可以进行Python自动化测试中的线上流量回放,验证系统的性能和稳定性。提供的实战代码和方法将帮助你快速上手流量回放,并根据需要进行定制化处理。

最后在这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助,有需要的朋友你可以【点击文末小卡片免费领取】

除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近600个G,包括基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源。

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu安装JDK8(直接下载jdk压缩包方式)

1.官网下载JDK 地址: https://www.oracle.com/java/technologies/downloads/ 选择相应的 .gz包下载 2.解压缩,放到指定目录 创建目录: sudo mkdir /usr/lib/jvm 解压缩到该目录: sudo tar -zxvf jdk-8u381-linux-x64.tar.gz -C /usr/lib/jvm 3.配置环境变量 sudo vim ~/.ba…

跨专业申请成功|金融公司经理赴美国密苏里大学访学交流

J经理所学专业与从事工作不符,尽管如此,我们还是为其成功申请到美国密苏里大学经济学专业的访问学者职位,全家顺利过签出国。 J经理背景: 申请类型: 自费访问学者 工作背景: 某金融公司经理 教育背景&am…

YUV数据图形化理解

以下为音视频基础数据的图像化展示,方便大家理解 RGB24 RGB交替排列,RGBRGBRGB 占用空间Width*Height*3 YUV420P YU12(I420) 每4个Y分量,共一个UV分量 Y是连续的,U也是连续的,V也是连续的 占用空间 Width*Height …

北京筑龙受邀出席中物联“采购供应链中国行—走进雄安”活动

日前,“采购供应链中国行—走进雄安”活动在河北雄安新区成功举办,来自30家相关单位的50余名领导和代表参加了本次活动。活动由中国物流与采购联合会公共采购分会主办,中国物流与采购联合会采购委、中国雄安集团有限公司、河北雄安新区招标投…

【Apollo】阿波罗自动驾驶系统:驶向未来的智能出行(含源码安装)

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

VMware 助力企业轻松驾驭生成式 AI 的力量

在 8 月 23 日的 VMware Explore 2023 大会上,VMware(NYSE:VMW)推出全新 Private AI 产品,助力企业采用生成式 AI 并挖掘可信数据的价值。Private AI 是一种架构方案,可解锁 AI 商业效益并满足企业实际隐私…

【实用黑科技】息声后的元宇宙踪迹——“创世界社区“,普通人构建游戏世界将会越来越容易

在这里插入图片描述 👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于…

基于Java swing和mysql实现学生信息管理系统(源码+数据库+运行指导视频)

一、项目简介 本项目是一套基于Java swing和mysql实现学生信息管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过…

Nginx+Tomcat的动静分离与负载均衡

目录 前言 一、案例 二、Nginx的高级用法 三、tomcat部署 四、Nginx部署 五、测试 总结 前言 通常情况下,一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等情况,不能单独应用于生产环境下,所以我们需要一套更…

展会动态 | 迪捷软件邀您参加【AUTOSEMO“恒以致远,共创共赢”主题研讨会】

大会简介 2023年,中国汽车工业迎来70年华诞,仅用70年,中国就已建成全球规模最大、品类最齐全、配套最完整的汽车工业体系。 中国汽车工业协会软件分会中国汽车基础软件生态标准专委会(China Automotive Basic Software Ecosyste…

FusionAD:用于自动驾驶预测和规划任务的多模态融合

论文背景 自动驾驶(AD)任务通常分为感知、预测和规划。在传统范式中,AD中的每个学习模块分别使用自己的主干,独立地学习任务。 以前,基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹…

19- 富文本tinymce 和 二进制模型BLOB(表情存储)

富文本tinymce 中文文档: TinyMCE中文文档中文手册 (1). 下载(5.2.2版本) -> 解压放到 static 文件下 (2). static / js / tiny.js 设置富文本 二进制模型BLOB(表情存储) (1). 定义模型类型 # 两种方式: # 1. 定义模型类为Text,直接修改数据库类型为BLOBcontent db.Colum…

KalmanFilter卡尔曼滤波

预测(prediction) 状态变量 x k A x k − 1 B u k − 1 w k − 1 x_k Ax_{k-1} Bu_{k-1} w_{k-1} xk​Axk−1​Buk−1​wk−1​ 其中n维向量 x k x_k xk​为k时刻的系统状态变量,n维向量 x k − 1 x_{k−1} xk−1​是k-1时刻的系统状…

Docker容器学习:搭建私有镜像仓库Harbor操作

目录 系统环境: 安装Docker-Compose 下载并安装Harber 启动Harbor 使用Harbor 上传下载镜像到harbor仓库 系统环境: Centos7.9Docker-ce:24 安装Docker-Compose curl -L "https://github.com/docker/compose/releases/download/v2.20.3/do…

【JUC系列-03】熟练掌握Atomic原子系列基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

Gossip协议

Gossip协议 一、Gossip协议1.1 工作原理1.2 Gossip优点1.3 Gossip传播方式1.3.1 Anti-Entropy(反熵)1.3.2 Rumor-Mongering(谣言传播)1.3.3 结合 1.4 Gossip协议的通信方式1.4.1 Push1.4.2 Pull1.4.3 Push&Pull 二、手撸简易版…

媒介盒子:医疗软文怎么写才能实现营销效果?

随着互联网的快速发展,医疗行业也逐渐意识到了网络营销的重要性。而作为网络营销的一种形式,医疗软文在传播医疗知识、宣传医疗品牌方面具有独特的优势。本文将从选题、内容、形式等多个方面进行探讨,如何写一篇有效的医疗营销软文? 1、选题非常关键 首…

Python“牵手”天猫商品列表数据,关键词搜索天猫API接口数据,天猫API接口申请指南

天猫平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范,天猫API接口是指通过编程的方式,让开发者能够通过HTTP协议直接访问天猫平台的数据,包括商品信息、店铺信息、物流信息等,从而实现天猫平台…

MySql014——分组的GROUP BY子句排序ORDER BYSELECT子句顺序

前提:使用《MySql006——检索数据:基础select语句(使用products表、查询单列、多列、所有列、DISTINCT去除重复行、LIMIT限制返回结果的行数、了解完全限定)》中创建的products表 一、GROUP BY子句基础用法 SELECT vend_id, COU…