测试动态 / 测试知识 / Gatling Recorder在HTTP/HTTPS请求捕获和脚本生成方面的专业技术详解
Gatling Recorder在HTTP/HTTPS请求捕获和脚本生成方面的专业技术详解
2026-01-04 作者:cwb 浏览次数:10

Gatling Recorder 是一款专为性能测试脚本快速开发设计的本地HTTP/HTTPS代理服务器。重要作用是,将传统繁琐的手动编写脚本过程,转化为自动化捕获用户操作并生成高性能、可读性强的Gatling Scala脚本,极大提升脚本创建效率。


一、 架构和工作原理

Gatling Recorder 本质上是一个中间人代理:


流程详解:

流量导向:你将浏览器或被测应用的网络代理设置为Recorder(默认 localhost:8000)。

请求拦截:Recorder启动一个代理服务器,监听指定端口,捕获所有流经的HTTP/HTTPS请求和响应。

解码和重组:对于HTTPS请求,Recorder会使用其自签名的CA证书(需手动信任)进行SSL/TLS解密,从而能读取明文内容。随后将原始的请求头、请求体、URL、响应等数据重组为结构化数据。

脚本生成:Recorder内部有一套模板引擎,将这些结构化数据映射为 Gatling的领域特定语言 代码。并不是简单记录,而是智能地生成包含exec、pause、check等语义化结构的脚本。


二、 配置和操作

1. 启动和方式选择

启动Gatling Recorder一般有两种方式:

通过Gatling Bundle:执行 bin/gatling-recorder.sh (Linux/Mac) 或 bin/gatling-recorder.bat (Windows)。

通过IDEA插件:在IntelliJ IDEA中安装Gatling插件后,有图形化入口。


方式:

HTTP代理方式:最常用。Recorder作为系统/浏览器代理。

HAR转换方式:不直接录制,而是导入浏览器开发者工具导出的 .har 文件,将其转换为Gatling脚本。适用于复杂或难以直接录制的情形。


2. 配置面板分析

在Recorder的GUI界面中,以下配置非常重要:


代理配置:端口默认8000。保证不和本地其他服务冲突。

HTTP/HTTPS方式:必须和被测协议一致。录制HTTPS网站必须启用HTTPS方式。

证书配置:生成CA证书,首次使用HTTPS必须操作:点击生成,会创建 gatlingCACert.pem。必须手动将其导入到操作系统或浏览器的“受信任的根证书颁发机构”,否则浏览器会报安全错误。

过滤器方法:黑名单:默认。录制“除了”列表外的所有请求。白名单:仅录制列表中的请求。精炼脚本第一选择,可过滤掉大量静态资源(如图片、CSS、JS)和分析器请求。

一致方式:支持Java正则表达式。如,白名单方式可设为:.*https://yourapp.zmtests.com/api/.* 仅录制API。

输出配置:包名 & 类名,定义生成脚本的Scala包结构和主类名,关系到项目结构。

格式:选择生成脚本的语言,一般为默认的 Scala 3。

Simulation文件夹:指定脚本输出目录,需指向Gatling项目的 user-files/simulations/ 对应包途径下。

请求体缓存:启用,建议启用。对于POST/PUT等含请求体的操作,能保证录制的脚本在回放时发送完全相同的负载数据。


3. HTTPS录制专项配置

HTTPS录制失败是最常见问题,请严格按流程操作:

在Recorder中点击 “生成CA证书”,保存到已知位置。


信任证书:

Windows:双击.pem文件,选择“安装证书”->“本地计算机”->“将所有证书放入下列存储”->“浏览”->“受信任的根证书颁发机构”。

macOS:双击.pem文件,打开“钥匙串访问”,将证书拖入“系统”钥匙串,然后双击该证书,在“信任”部分设置为“始终信任”。

浏览器:有些浏览器(如Firefox)使用独立证书库,需在其设置中手动导入并信任。

在Recorder中勾选“启用HTTPS代理”。

配置浏览器系统代理为localhost:8000 (或使用SwitchyOmega等插件)。


三、 脚本分析优化

Recorder生成的是可直接运行的脚本,但一般需要优化以提高性能和可维护性。

原始录制脚本示例:


scala

.exec(

    http("请求首页")

    .get("/")

    .headers(headers_0)

    .check(status.is(200))

)

.pause(1) // 录制时操作间隔

.exec(

    http("登录API")

    .post("/api/login")

    .headers(headers_1)

    .formParam("username", "testUser") // 硬编码数据

    .formParam("password", "testPass")

    .check(jsonPath("$.token").saveAs("authToken")) // 提取令牌

)


专业优化:

数据剥离和参数化:

移除硬编码:将testUser等数据移至Feeder (CSV、JSON) 或使用Session变量,实现多用户迭代。

动态参数处理:对于CSRF令牌、时间戳等,使用正则表达式或JSON Path提取器 (check) 从响应中捕获,并作为参数传递到后续请求。


请求清理:

删除静态资源请求:通过白名单过滤后,手动清理剩余的无关请求(如.png, .css)。

合并重点API序列:将思路上连续的一组API调用(如:添加商品->修改库存)保留在一个脚本中,保证业务流完整。


检查点和断言:

增加业务断言:在重点请求后,不仅检查HTTP状态码,更应使用 jsonPath、css、substring 等检查响应体内容,证实业务正确性(如:check(jsonPath("$.success").is("true")))。

暂停时间合理化:

将录制的固定pause时间,替换为 pace(控制迭代节奏)或更符合真实用户思考时间的随机停顿(如:pause(2 seconds, 5 seconds))。


四、 配置故障排除

HTTPS连接错误:浏览器提示“不安全连接”或“证书无效”。

1. 保证证书已正确生成并导入到系统根信任库。

2. 重启浏览器。

3. 尝试在Recorder中删除旧证书并重新生成。

捕获不到请求:Recorder无任何请求流入。

1. 确定代理配置正确(IP: 127.0.0.1, Port: 8000)。

2. 关闭浏览器所有插件或其他代理工具。

3. 检查系统防火墙是不是阻止了Recorder。

脚本回放失败:录制成功,但回放时报错(如404、参数错误)。

1. 检查动态参数是不是成功提取并传递。

2. 检查请求头是不是完整(如 Content-Type、Referer)。

3. 启用requestbodies文件夹,对比录制和回发的请求体差别。

性能考虑:录制大量请求时Recorder卡顿。

1. 必须使用白名单,精确过滤。

2. 关闭不必要的浏览器标签。

3. 对于超长流程,考虑分段录制,再用代码整合。



白名单:录制开始前,优先规划并设置白名单规则,从源头保证脚本精简。

一次流程,一个脚本:针对一个完整的业务情形(如“用户从登录到下单”)进行录制,保持脚本的业务独立性。

录制后必优化:录制生成的脚本是毛坯,必须进行数据参数化、检查点强化、无关请求清理才能成为生产可用的精装性能脚本。

版本控制:将优化后的脚本纳入Git等版本控制系统,和测试数据分离管理。


文章标签: 软件测试 测试工具
热门标签 换一换
CNAS软件测评报告 CMA软件测评报告 首版次软件认定 软件结题验收 软件测试报告书 软件质量检测 数据库测试 H5应用测试 软件质检机构 第三方质检机构 第三方权威质检机构 信创测评机构 信息技术应用创新测评机构 信创测试 软件信创测试 软件系统第三方测试 软件系统测试 软件测试标准 工业软件测试 软件应用性能测试 应用性能测试 可用性测试 软件可用性测试 软件可靠性测试 可靠性测试 系统应用测试 软件系统应用测试 软件应用测试 软件负载测试 API自动化测试 软件结题测试 软件结题测试报告 软件登记测试 软件登记测试报告 软件测试中心 第三方软件测试中心 应用测试 第三方应用测试 软件测试需求 软件检测报告定制 软件测试外包公司 第三方软件检测报告厂家 CMA资质 软件产品登记测试 软件产品登记 软件登记 CNAS资质 cma检测范围 cma检测报告 软件评审 软件项目评审 软件项目测试报告书 软件项目验收 软件质量测试报告书 软件项目验收测试 软件验收测试 软件测试机构 软件检验 软件检验检测 WEB应用测试 API接口测试 接口性能测试 第三方系统测试 第三方网站系统测试 数据库系统检测 第三方数据库检测 第三方数据库系统检测 第三方软件评估 课题认证 第三方课题认证 小程序测试 app测试 区块链业务逻辑 智能合约代码安全 区块链 区块链智能合约 软件数据库测试 第三方数据库测试 第三方软件数据库测试 软件第三方测试 软件第三方测试方案 软件测试报告内容 网站测试报告 网站测试总结报告 信息系统测试报告 信息系统评估报告 信息系统测评 语言模型安全 语言模型测试 软件报告书 软件测评报告书 第三方软件测评报告 检测报告厂家 软件检测报告厂家 第三方网站检测 第三方网站测评 第三方网站测试 检测报告 软件检测流程 软件检测报告 第三方软件检测 第三方软件检测机构 第三方检测机构 软件产品确认测试 软件功能性测试 功能性测试 软件崩溃 稳定性测试 API测试 API安全测试 网站测试测评 敏感数据泄露测试 敏感数据泄露 敏感数据泄露测试防护 课题软件交付 科研经费申请 软件网站系统竞赛 竞赛CMA资质补办通道 中学生软件网站系统CMA资质 大学生软件网站系统CMA资质 科研软件课题cma检测报告 科研软件课题cma检测 国家级科研软件CMA检测 科研软件课题 国家级科研软件 web测评 网站测试 网站测评 第三方软件验收公司 第三方软件验收 软件测试选题 软件测试课题是什么 软件测试课题研究报告 软件科研项目测评报告 软件科研项目测评内容 软件科研项目测评 长沙第三方软件测评中心 长沙第三方软件测评公司 长沙第三方软件测评机构 软件科研结项强制清单 软件课题验收 软件申报课题 数据脱敏 数据脱敏传输规范 远程测试实操指南 远程测试 易用性专业测试 软件易用性 政府企业软件采购验收 OA系统CMA软件测评 ERP系统CMA软件测评 CMA检测报告的法律价值 代码原创性 软件著作登记 软件著作权登记 教育APP备案 教育APP 信息化软件项目测评 信息化软件项目 校园软件项目验收标准 智慧软件项目 智慧校园软件项目 CSRF漏洞自动化测试 漏洞自动化测试 CSRF漏洞 反序列化漏洞测试 反序列化漏洞原理 反序列化漏洞 命令执行 命令注入 漏洞检测 文件上传漏洞 身份验证 出具CMA测试报告 cma资质认证 软件验收流程 软件招标文件 软件开发招标 卓码软件测评 WEB安全测试 漏洞挖掘 身份验证漏洞 测评网站并发压力 测评门户网站 Web软件测评 XSS跨站脚本 XSS跨站 C/S软件测评 B/S软件测评 渗透测试 网站安全 网络安全 WEB安全 并发压力测试 常见系统验收单 CRM系统验收 ERP系统验收 OA系统验收 软件项目招投 软件项目 软件投标 软件招标 软件验收 App兼容性测试 CNAS软件检测 CNAS软件检测资质 软件检测 软件检测排名 软件检测机构排名 Web安全测试 Web安全 Web兼容性测试 兼容性测试 web测试 黑盒测试 白盒测试 负载测试 软件易用性测试 软件测试用例 软件性能测试 科技项目验收测试 首版次软件 软件鉴定测试 软件渗透测试 软件安全测试 第三方软件测试报告 软件第三方测试报告 第三方软件测评机构 湖南软件测评公司 软件测评中心 软件第三方测试机构 软件安全测试报告 第三方软件测试公司 第三方软件测试机构 CMA软件测试 CNAS软件测试 第三方软件测试 移动app测试 软件确认测试 软件测评 第三方软件测评 软件测试公司 软件测试报告 跨浏览器测试 软件更新 行业资讯 软件测评机构 大数据测试 测试环境 网站优化 功能测试 APP测试 软件兼容测试 安全测评 第三方测试 测试工具 软件测试 验收测试 系统测试 测试外包 压力测试 测试平台 bug管理 性能测试 测试报告 测试框架 CNAS认可 CMA认证 自动化测试
专业测试,找专业团队,请联系我们!
咨询软件测试 400-607-0568