HTTP 代理服务器 JMeter:录制示例脚本

什么是 JMeter HTTP代理服务器?
此 JMeter HTTP代理服务器是一个内置的记录器,它位于浏览器和被测网站之间。它会在用户正常浏览应用程序时监视并记录用户活动,并将捕获到的每个请求转换为测试计划中的HTTP请求采样器。 JMeter 3.0 该元素已被命名为 HTTP(S) 测试脚本录制器这两个名称描述的是同一个组件。
Record 测试 它帮助测试人员记录和回放针对测试目标的活动。这是一种自动化测试,但可以同时针对多个用户进行测试。
为什么选择录制而不是手动编写脚本?
现代网站上真实的用户访问路径会产生数十个请求,每个请求都有自己的请求头、Cookie 和表单参数。ping 手动将所有这些数据输入采样器既慢又容易出错。录制可以精确捕捉浏览器发送的流量,这带来了三个优点:
- 精度: 标头顺序、cookie 和隐藏表单字段将按服务器接收到的原样捕获。
- 速度: 一段十页的旅程记录只需几分钟就能用文字记录下来,而手动撰写则需要几个小时。
- 覆盖范围: 界面中不可见的后台 AJAX 调用仍然会出现在录制过程中。
这段录音只是一个起点,而非最终的测试结果。它还需要进行清理、关联和参数化处理才能用于后续测试。 负载测试以下各节涵盖了从一个空开始的完整路径。 JMeter 一个可以可靠重放的脚本窗口。
这里是 路线图 这个实例
如何录制脚本 JMeter 5.x
当前版本是 Apache JMeter 5.6.3 版本于 2024 年 1 月 9 日发布,它要求 Java 8 或更高版本, Java 建议使用 17 版本。如果您按照本页下方的图文教程操作,将不会找到 WorkBench 节点,因为它已在 5.0 版本中移除。该功能并未消失,只是位置发生了变化。现在,录制器直接添加到测试计划中,并称为 HTTP(S) 测试脚本录制器。
最快的方法是使用捆绑模板。选择 文件 > 模板 > 录音 和 JMeter 生成一个完整的计划,其中包含线程组、HTTP 请求默认值、录制控制器和录制器本身,所有这些组件都已连接在一起。手动构建相同的结构需要以下步骤。
- 构建计划框架。 添加一个线程组,然后在该线程组下添加一个录制控制器。录制的采样器将放置在这里。
- 将录音机添加到测试计划中。 右键单击“测试计划”节点并选择 添加 > 非测试元素 > HTTP(S) 测试脚本录制器它是 Thread Group 的兄弟群组,而不是子群组。
- 设置端口。 默认端口为 8888。任何空闲端口均可使用,前提是浏览器配置与之匹配。
- 选择 Target 控制器。 选择第一步中创建的录制控制器,这样请求就会按照预期分组,而不是分散在计划根目录。
- 添加 URL 排除模式。 在“请求筛选”选项卡上,排除具有如下模式的静态资源: .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)这样就省去了后面将要描述的大部分手动清理工作。
- 启动录音机。 点击 开始 在录像机面板的顶部。 JMeter Apache 写道JMeter此时,TemporaryRootCA.crt 已放入其 bin 文件夹中,这使得 HTTPS 录制成为可能。
- 将浏览器指向代理服务器。 使用 localhost 和选定的端口,然后正常浏览应用程序。
- 停下来整理一下。 按下停止键,删除所有剩余的第三方通话记录,并保存套餐。
- 规模化之前先进行验证。 右键单击线程组并选择 验证这会使用单线程运行一次计划,因此故障会在施加任何负载之前显现出来。
另一个习惯区分了可运行的脚本和可靠的脚本。仅使用图形界面进行构建和调试,然后从命令行运行真正的测试。 jmeter -n -t plan.jmx -l results.jtl -e -o report它还会生成一个 HTML 仪表板。同样的命令也是以下功能的基础: 分布式测试 跨越多个负载发电机。安装说明包含在内。 JMeter 安装指南完整的流程记录在案。 Apache JMeter 录音机页面.
⚠️ 版本说明: 以下演示中的屏幕截图是在一台较旧的设备上截取的。 JMeter 该版本仍然保留了 WorkBench 节点。WorkBench 已在后续版本中移除。 JMeter 5.0. 所有概念仍然适用;只是记录器的位置发生了变化,目前的程序就是上面给出的程序。
步骤 1)设置 HTTP 代理服务器
这是设置代理的分步指南
- 开始 JMeter
- 选择 测试计划 在树上
- 添加 线程组右键单击 测试计划 并添加一个新的线程组: 添加 > 主题(用户) > 线程组
- 添加 HTTP请求选择线程组;右键单击 添加 > 配置元素 > HTTP 请求默认值
在新的 HTTP 请求默认值元素中:在服务器名称或 IP 中输入“google.com”。其他字段应保持空白
- 添加 录音控制器右键单击“线程组”,然后添加录制控制器: 添加 > 逻辑控制器 > 录音控制器
- 添加 代理服务器 在 Workbench 中,右键单击 Workbench 并添加 HTTP 代理: 添加 > 非测试元素 > HTTP 代理服务器。 上 JMeter 5.x,右键单击 测试计划 改为节点并选择 HTTP(S) 测试脚本录制器.
- 米 Target 控制器 录制的脚本将被添加到哪里
- 开始 代理服务器。返回 HTTP 代理服务器,然后单击 开始 按钮。现在您的 JMeter 代理服务器启动
- 启动浏览器(我使用 Firefox),选择 工具 > 附加选项 > 先进的 > 网络 > 设置 > 输入如下图所示的 HTTP 代理。在当前状态下。 Firefox 通过发布相同的对话即可达成一致 个人设置 > General (将军) > 网络设置.
第 2 步)记录你的活动
- 立即推出 http://www.google.com 在您的网络浏览器中(JMeter 还开着)
- 活动是否搜索关键字“guru99“。
- 返回 JMeter在 HTTP 代理服务器中,单击 Stop 停止 等结束了
- 录制完成后你会看到 JMeter 自动创建一个新的HTTP请求如下图
JMeter 已经记录了用户请求 主页 of Google 网站。 http://www.google.com/
上图显示了其他 HTTP 请求,您应该删除它们。因为有时 JMeter 当您搜索关键词时,它还会记录一些广告链接。 Google我们应该在测试计划中忽略它们。
- 点击“文件”>“将测试计划另存为”。
- 弹出对话框 > 在“文件名”字段中输入测试计划的名称 > 单击“保存”。现在,您的测试计划已保存为 RecordingTestPlan.jmx。
步骤 3)运行测试计划
- 选择 线程组 > 添加 > 监听器 > 摘要报告
- 摘要报告将显示一些基本统计信息
- 选择Thread Group,输入如下图信息
您可以参考这篇文章。 JMeter 性能测试 了解线程组配置的详细信息。
- 开始测试前,请选择“摘要报告”。准备运行测试时,请选择“运行”>“开始”(Ctrl+R)。 JMeter 将会将您的活动回放 100 次。测试进行期间,统计数据会不断变化,直到测试结束。
步骤 4)保存测试结果
- 点击 保存表数据 将测试结果保存到文件
- 输入测试结果的名称,然后单击保存。测试结果在 JMeter 默认保存为*.csv格式
记录HTTPS流量和证书
现在几乎所有网站都提供 HTTPS 服务,而最初的教程发布时 HTTPS 尚未普及。代理服务器只有在浏览器信任它的情况下才能读取加密流量,因此需要额外一步操作。
当录音机启动时, JMeter 生成一个名为“临时根证书”的证书 Apache (阿帕奇)JMeter临时根证书.crt 在其 bin 目录中。将该文件导入浏览器作为受信任的证书颁发机构,然后重启浏览器。 JMeter 现在它可以为每个站点提供自己的证书,并解密会话以进行录制。
以下三点值得注意:
- 该证书有效期为七天。 这是故意的。删除它,然后…… JMeter 与其延长有效期,不如重新生成一个新的。
- 用完后取下。 在运行中的机器上保留受信任的根证书是一种真正的安全风险,而不是理论上的风险。
- 有些应用程序会拒绝。 使用证书固定或相互 TLS 的网站根本无法通过代理进行记录,必须使用浏览器开发者工具手动构建脚本。
相关性:使录制的脚本可重放
录制的脚本会精确地重现第一次发生的情况,但这与第二次发生的情况截然不同。录制过程中捕获的会话标识符、令牌和生成的密钥在脚本重放时已失效,运行失败的方式看起来像是应用程序错误。
相关性是解决之道。 后处理器 例如正则表达式 ExtracTor 或 JSON Extractor 从登录响应中获取最新值,将其存储在一个变量中,稍后请求引用该变量而不是记录的字面值。
工作流程很简短:
- 使用“查看结果树”监听器重新播放脚本一次,并找到第一个失败的请求。
- 将失败的请求与记录进行比较。两次运行中任何不同的值都需要进行关联分析。
- 添加一个前任trac找到产生该值的响应,然后将硬编码的字面值替换为变量引用。
- 添加一个 断言 因此,即使页面返回 HTTP 200 错误信息,测试仍然失败。
只有在相关性测试之后,脚本才能安全地扩展规模。在一百个用户规模下运行不相关的录制测试,主要是为了评估错误处理能力,而不是其他方面。 性能其他要素将在下文中介绍。 JMeter 教程.
故障排除
如果在运行上述场景时遇到问题,请执行以下操作:
- 检查您是否通过代理连接到互联网。如果是,请删除代理。
- 打开一个新实例 JMeter.
- 打开 RecordingTestPlan.jmx 文件 JMeter.
- 右键单击工作台 > 合并 > 选择 HTTP 代理服务器.jmx。 JMeter 5.x 版本,合并到测试计划节点中,因为 WorkBench 已不存在。
- 点击主题组 > 汇总报告。
- 运行测试。
还有两种症状可以解释剩余的大部分故障。如果浏览器报告无法连接,则表示录制程序从未启动,或者浏览器中设置的端口与录制程序中设置的端口不匹配。 JMeter如果页面加载正常,但树状结构中没有任何显示,则说明流量是 HTTPS,但证书尚未导入。



















