如何使用 JMeter 记录测试场景

介绍

在本教程中,我们将教你如何设置和使用Apache JMeter HTTP(S)测试脚本记录器来记录HTTP请求。

本教程假定您对Apache JMeter有基本知识. 如果您对JMeter是新手,这里有另一个可以让你开始的教程: 如何在Web服务器上使用Apache JMeter进行负载测试

前提条件

以下是本教程需要的软件列表:

作为参考,在撰写本教程时,我们使用了以下软件版本:

  • Oracle Java 7 更新 60、64 位
  • JMeter 2.11
  • Firefox 30.0

开始构建测试计划

首先,开始 JMeter. 然后,让我们开始构建一个测试计划. 如果你已经有一个测试计划,你想开始,跳过这个部分,然后继续添加一个 Recording Controller 到你的线程组(下一个部分)。

至少,我们要添加一个 Thread Group 和 HTTP Request Defaults. 让我们从添加一个 Thread Group 开始。

添加一个 Thread 组

将一个 Thread Group 添加到 Test Plan:

  1. 右键单击 Test Plan 2 点击 Add > 3 点击 Threads (用户) > 4 点击 Thread Group

用以下值设置 Thread Group 属性:

  • ** 线程数(用户)**:将此设置为 50
  • Ramp-Up 周期(秒):将此设置为 10.
  • Loop Count:将此设置留给 1

Thread Group Properties

添加 HTTP 请求默认值

现在让我们将 HTTP Request Defaults 添加到 Thread Group:

  1. 选择 Thread Group,然后右键单击它 2 鼠标上 Add > 3 鼠标上 Config 元素 > 4 点击 HTTP 请求默认

在 HTTP 请求默认值中,在 Web 服务器部分中,填写您要测试的 Web 服务器的名称或 IP 地址的 Server Name 或 IP 字段。

HTTP Request Defaults

如果您的 Web 服务器使用 Cookie,您可以通过将 HTTP Cookie Manager 添加到 Thread Group 来增加对 Cookie 的支持:

  1. 选择 Thread Group,然后右键单击它 2 鼠标上 Add > 3 鼠标上 Config 元素 > 4 点击 HTTP Cookie Manager

添加录音控制器

现在让我们在 Thread Group 中添加一个 _Recording Controller:

  1. 选择 Thread Group,然后右键单击它 2 鼠标上 Add > 3 鼠标上 Logic Controller > 4 点击 Recording Controller

录制控制器是创建录制的 HTTP 请求样本的地方,下一步是设置 HTTP(S) 测试脚本录制器。

添加 HTTP(S)测试脚本记录器

现在让我们将一个 _HTTP(S)测试脚本记录器添加到 WorkBench:

  1. 选择 WorkBench,然后右键单击它
  2. 鼠标上 Add >
  3. 鼠标上 Non-Test Elements >
  4. 点击 _HTTP(S) 测试脚本记录

** 注意:** 添加到 WorkBench 的项目不会与其他测试计划一起保存. 如果您想要保存 WorkBench,请右键单击 WorkBench,然后单击 Save Selection As...,然后将其保存到您想要的位置。

港口设置

HTTP(S) Test Script Recorder 接口将运行的默认端口为 8080. 您可以通过在 Global Settings 中的 Port 设置进行更改。

包括或排除 URL 模式(可选)

在 HTTP(S) 脚本录制器中,您可以添加以常规表达式编写的 URL 模式,以便在录制时包括或排除。

若要添加 URL 模式,请单击添加按钮,在包含 URL 模式排除 URL 模式部分下,然后单击该部分中的白色区域的顶部。

例:网页的 URL 模式

1.*\.html
2.*\.php
3.*\.htm

示例: 图像的 URL 模式

1.*\.png
2.*\.jpg
3.*\.gif

以下是排除图片的 URL 模式的屏幕截图:

URL Patterns to Exclude Images

将项目添加到脚本录制器(可选)

将 JMeter 项添加到 HTTP(S) 测试脚本录制器中会使录制请求继承添加的项,例如,如果我们将一个 Timer 项添加到脚本录制器中,该计时器将被添加到每一个被录制的 HTTP 请求中。

让我们将 Constant Timer 添加到 _HTTP(S) 测试脚本录制器中,作为一个例子:

  1. 选择 HTTP(S) 测试脚本录制器,然后右键单击它
  2. 鼠标上 Add >
  3. 鼠标上 Timers >
  4. 点击 Constant Timer

你可以将延迟的线程配置为你想要的任何东西。

Constant Timer

假设你想模拟用户每2秒点击一个不同的页面,将线程延迟设置为2000ms将通过添加每一个记录的HTTP请求的2秒延迟来实现这一点。

这是您如何将项目添加到脚本录制器中,以帮助创建执行您想要的测试的测试计划的一个例子。

开始录制

点击开始按钮,在脚本录音器窗口的底部,将启动JMeter代理服务器,将被用来拦截和记录浏览器请求。

第一次尝试运行录音机时,它会显示一个错误,表示它无法启动,因为证书不存在. 点击OK,然后点击第二次启动. 您应该看到一个消息,表示名为 _ApacheJMeterTemporaryRootCA.crt_的临时证书已在JMeter Bin目录中创建。

Temporary Certificate Created

** 注意:** 如果您的浏览器已经使用代理,那么您需要在启动 JMeter 之前配置 JMeter 以使用该代理,使用命令行选项 -H 和 -P。

设置 Firefox 以使用 JMeter 代理

在使用 JMeter HTTP(S) 测试脚本记录器时,我们将使用 Firefox 作为我们的浏览器,因为与 Chrome 和其他一些浏览器不同,它允许您对其代理设置的整个系统配置进行升级。

通过以下步骤将 Firefox 配置为在端口 8080 上使用 localhost (127.0.0.1) 作为其所有流量的代理:

  1. 打开 Firefox
  2. 进入偏好选项菜单
  3. 点击高级选项选项卡
  4. 然后网络选项卡
  5. 连接部分中,点击设置...
  6. 选择手动代理配置无线电按钮
  7. 将 HTTP 代理设置为localhost和端口为8080
  8. 点击使用此代理服务器用于所有协议
  9. 点击OK并离开偏好选项菜单

注意:当 Firefox 配置为使用 JMeter 的 Script Recorder 作为代理程序时,如果 Script Recorder 正在运行时,它只会正常工作。

记录 HTTP 请求

现在我们测试计划的 HTTP(S)测试脚本录制器正在运行,Firefox 已配置为将其用作代理,Firefox 发送的 HTTP 请求将被录制。

在 Firefox 中,前往您的服务器的主页(您在您的 JMeter HTTP 请求默认设置中配置的相同服务器):

1http://your_domain.com/

现在应该在您的 Recording Controller 旁边有一个小三角形。 点击它来扩展并显示所记录的请求。 您应该看到所记录的 HTTP 请求,取决于您所包含和排除的 URL 模式。 请自由浏览您的网站以记录更多请求。

以下是访问WordPress网站主页时记录的例子(没有URL模式设置):

Recorded HTTP Requests

您可以通过简单地删除不需要的条目来完善 HTTP 请求列表。

如果您在录制控制器中没有看到任何条目,则您需要在 HTTP(S) 测试脚本录制器中查看您的 URL 模式(提示:删除所有包括和排除记录所有内容)。

完成录制后,请点击 HTTP(S) Test Script Recorder 窗口底部的停止按钮,请注意,如果您想要正常工作,Firefox 将无法访问任何页面(因为它已配置为使用端口 8080 作为代理) - 将其配置为使用没有代理程序

运行你的测试计划

一旦你对你记录的测试计划感到满意,保存它,然后运行它,它将像手动创建的测试一样运行,因此你可以配置,删除和添加项目,使其更密切地匹配你想要的测试案例。

结论

现在你可以使用 HTTP(S) 测试脚本记录器来帮助创建 JMeter 测试计划,你应该有更容易的时间来创建模仿现实情况的测试计划。

好运!

Published At
Categories with 技术
comments powered by Disqus