介绍
在本教程中,我们将教你如何设置和使用Apache JMeter HTTP(S)测试脚本记录器来记录HTTP请求。
本教程假定您对Apache JMeter有基本知识. 如果您对JMeter是新手,这里有另一个可以让你开始的教程: 如何在Web服务器上使用Apache JMeter进行负载测试
前提条件
以下是本教程需要的软件列表:
- Apache JMeter: 下载二进制文件在这里
- Java 6 或更高版本: Oracle Java 可用在这里
- Mozilla Firefox: 下载这里
作为参考,在撰写本教程时,我们使用了以下软件版本:
- 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:
- 右键单击 Test Plan 2 点击 Add > 3 点击 Threads (用户) > 4 点击 Thread Group
用以下值设置 Thread Group 属性:
- ** 线程数(用户)**:将此设置为 50
- Ramp-Up 周期(秒):将此设置为 10.
- Loop Count:将此设置留给 1。
添加 HTTP 请求默认值
现在让我们将 HTTP Request Defaults 添加到 Thread Group:
- 选择 Thread Group,然后右键单击它 2 鼠标上 Add > 3 鼠标上 Config 元素 > 4 点击 HTTP 请求默认
在 HTTP 请求默认值中,在 Web 服务器部分中,填写您要测试的 Web 服务器的名称或 IP 地址的 Server Name 或 IP 字段。
添加 HTTP Cookie 管理器
如果您的 Web 服务器使用 Cookie,您可以通过将 HTTP Cookie Manager 添加到 Thread Group 来增加对 Cookie 的支持:
- 选择 Thread Group,然后右键单击它 2 鼠标上 Add > 3 鼠标上 Config 元素 > 4 点击 HTTP Cookie Manager
添加录音控制器
现在让我们在 Thread Group 中添加一个 _Recording Controller:
- 选择 Thread Group,然后右键单击它 2 鼠标上 Add > 3 鼠标上 Logic Controller > 4 点击 Recording Controller
录制控制器是创建录制的 HTTP 请求样本的地方,下一步是设置 HTTP(S) 测试脚本录制器。
添加 HTTP(S)测试脚本记录器
现在让我们将一个 _HTTP(S)测试脚本记录器添加到 WorkBench:
- 选择 WorkBench,然后右键单击它
- 鼠标上 Add >
- 鼠标上 Non-Test Elements >
- 点击 _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 模式的屏幕截图:
将项目添加到脚本录制器(可选)
将 JMeter 项添加到 HTTP(S) 测试脚本录制器中会使录制请求继承添加的项,例如,如果我们将一个 Timer 项添加到脚本录制器中,该计时器将被添加到每一个被录制的 HTTP 请求中。
让我们将 Constant Timer 添加到 _HTTP(S) 测试脚本录制器中,作为一个例子:
- 选择 HTTP(S) 测试脚本录制器,然后右键单击它
- 鼠标上 Add >
- 鼠标上 Timers >
- 点击 Constant Timer
你可以将延迟的线程配置为你想要的任何东西。
假设你想模拟用户每2秒点击一个不同的页面,将线程延迟设置为2000ms将通过添加每一个记录的HTTP请求的2秒延迟来实现这一点。
这是您如何将项目添加到脚本录制器中,以帮助创建执行您想要的测试的测试计划的一个例子。
开始录制
点击开始
按钮,在脚本录音器窗口的底部,将启动JMeter代理服务器,将被用来拦截和记录浏览器请求。
第一次尝试运行录音机时,它会显示一个错误,表示它无法启动,因为证书不存在. 点击OK,然后点击第二次启动. 您应该看到一个消息,表示名为 _ApacheJMeterTemporaryRootCA.crt_的临时证书已在JMeter Bin目录中创建。
** 注意:** 如果您的浏览器已经使用代理,那么您需要在启动 JMeter 之前配置 JMeter 以使用该代理,使用命令行选项 -H 和 -P。
设置 Firefox 以使用 JMeter 代理
在使用 JMeter HTTP(S) 测试脚本记录器时,我们将使用 Firefox 作为我们的浏览器,因为与 Chrome 和其他一些浏览器不同,它允许您对其代理设置的整个系统配置进行升级。
通过以下步骤将 Firefox 配置为在端口 8080 上使用 localhost (127.0.0.1) 作为其所有流量的代理:
- 打开 Firefox
- 进入
偏好选项
菜单 - 点击
高级选项
选项卡 - 然后网络选项卡
- 在
连接
部分中,点击设置...
- 选择
手动代理配置
无线电按钮 - 将 HTTP 代理设置为
localhost
和端口为8080
- 点击
使用此代理服务器用于所有协议
- 点击
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模式设置):
您可以通过简单地删除不需要的条目来完善 HTTP 请求列表。
如果您在录制控制器中没有看到任何条目,则您需要在 HTTP(S) 测试脚本录制器中查看您的 URL 模式(提示:删除所有包括和排除记录所有内容)。
完成录制后,请点击 HTTP(S) Test Script Recorder 窗口底部的停止
按钮,请注意,如果您想要正常工作,Firefox 将无法访问任何页面(因为它已配置为使用端口 8080 作为代理) - 将其配置为使用没有代理程序
。
运行你的测试计划
一旦你对你记录的测试计划感到满意,保存它,然后运行它,它将像手动创建的测试一样运行,因此你可以配置,删除和添加项目,使其更密切地匹配你想要的测试案例。
结论
现在你可以使用 HTTP(S) 测试脚本记录器来帮助创建 JMeter 测试计划,你应该有更容易的时间来创建模仿现实情况的测试计划。
好运!