如何使用JMeter记录测试场景
介绍
在本教程中,我们将教您如何设置和使用 Apache JMeter HTTP(S) 测试脚本记录器来记录 HTTP 请求。 记录 HTTP 请求是构建测试计划的好方法,并且可以用于创建与正常用户行为非常相似的测试。
本教程假设您具备 Apache JMeter 的基本知识。 如果您是 JMeter 新手,这里有另一个可以帮助您入门的教程:如何使用 Apache JMeter 在 Web 服务器上执行负载测试
先决条件
以下是本教程所需的软件列表:
- Apache JMeter:在此处下载二进制文件
- Java 6 或更高版本:此处提供 Oracle Java
- Mozilla Firefox:在此处下载
作为参考,在编写本教程时,我们使用了以下软件版本:
- Oracle Java 7 更新 60、64 位
- JMeter 2.11
- 火狐30.0
开始制定测试计划
首先,启动 JMeter。 然后让我们开始构建一个测试计划。 如果您已经有一个想要开始的测试计划,请跳过本节并继续将 Recording Controller 添加到您的线程组(下一节)。
至少,我们需要添加一个线程组和 HTTP 请求默认值。 让我们从添加一个线程组开始。
添加线程组
将 线程组 添加到 测试计划 :
- 右键单击测试计划
- 将鼠标悬停在 添加 >
- 将鼠标悬停在 线程(用户)>
- 点击线程组
使用以下值设置线程组属性:
- 线程数(用户):设置为50
- Ramp-Up Period(以秒为单位):将此设置为 10。
- Loop Count:将此设置保留为 1。
添加 HTTP 请求默认值
现在让我们将 HTTP Request Defaults 添加到 Thread Group:
- 选择线程组,然后右键单击它
- 将鼠标悬停在 添加 >
- 将鼠标悬停在 配置元素 >
- 单击 HTTP 请求默认值
在 HTTP 请求默认值中,在 Web 服务器部分下,使用您要测试的 Web 服务器的名称或 IP 地址填写 服务器名称或 IP 字段。
添加 HTTP Cookie 管理器
如果您的 Web 服务器使用 cookie,您可以通过将 HTTP Cookie 管理器添加到线程组来添加对 cookie 的支持:
- 选择线程组,然后右键单击它
- 将鼠标悬停在 添加 >
- 将鼠标悬停在 配置元素 >
- 点击 HTTP Cookie 管理器
添加录音控制器
现在让我们添加一个 Recording Controller 到 Thread Group:
- 选择线程组,然后右键单击它
- 将鼠标悬停在 添加 >
- 将鼠标悬停在 Logic Controller >
- 点击录音控制器
记录控制器是创建记录的 HTTP 请求采样器的地方。 下一步是设置 HTTP(S) 测试脚本记录器。
添加 HTTP(S) 测试脚本记录器
现在让我们添加一个 HTTP(S) 测试脚本记录器 到 WorkBench:
- 选择WorkBench,然后右键单击它
- 将鼠标悬停在 添加 >
- 将鼠标悬停在 非测试元素 >
- 点击 HTTP(S) 测试脚本记录器
注意: 添加到工作台的项目不会与测试计划的其余部分一起保存。 如果要保存 WorkBench,请右键单击 WorkBench,然后单击 Save Selection As...,然后将其保存到所需位置。 保存后,您可以通过使用“合并”菜单项并选择已保存的 WorkBench 将其添加到您打开的任何测试计划中。
端口设置
HTTP(S) 测试脚本记录器代理将运行的默认端口是 8080
。 这可以通过更改 全局设置 下的 Port
设置来更改。
包括或排除 URL 模式(可选)
在 HTTP(S) 脚本记录器中,您可以添加以正则表达式编写的 URL 模式,以便在记录时包含或排除。 这对于仅包含您想要请求的内容类型(例如 *.html、*.php 等)或排除您不想请求的内容类型(例如 *.jpg、*.png、*.js 等)。
要添加 URL 模式,请单击 URL 模式以包含 或 URL 模式以排除 部分下的“添加”按钮,然后单击该部分中白色区域的顶部。 您现在应该能够输入模式。 重复该过程以添加更多图案。
示例:网页的 URL 模式
.*\.html .*\.php .*\.htm
示例:图像的 URL 模式
.*\.png .*\.jpg .*\.gif
这是排除图像的 URL 模式的屏幕截图:
向脚本记录器添加项目(可选)
将 JMeter 项目添加到 HTTP(S) 测试脚本记录器将使记录的请求继承添加的项目。 例如,如果我们向 Script Recorder 添加一个 Timer 项,则 Timer 将添加到每个记录的 HTTP 请求中。 运行测试时,计时器将导致每个测试线程在执行 HTTP 请求之前等待。
让我们添加一个 Constant Timer 到 HTTP(S) Test Script Recorder,例如:
- 选择 HTTP(S) 测试脚本记录器,然后右键单击它
- 将鼠标悬停在 添加 >
- 将鼠标悬停在 计时器 >
- 点击恒时定时器
您可以根据需要配置线程延迟。
假设您想模拟用户每 2 秒点击不同的页面。 将线程延迟设置为 2000 毫秒将通过为记录的每个 HTTP 请求添加 2 秒延迟来实现此目的。
这只是您可以如何将项目添加到脚本记录器以帮助创建执行所需测试的测试计划的一个示例。
开始录制
单击脚本记录器窗口底部的“开始”按钮,将启动 JMeter 代理服务器,该服务器将用于拦截和记录浏览器请求。 现在单击(记录器的)开始按钮。
第一次尝试运行记录器时,它会显示一个错误,指出它无法启动,因为证书不存在。 单击确定,然后再次单击开始。 您应该会看到一条消息,指出已在 JMeter bin 目录中创建了名为 ApacheJMeterTemporaryRootCA.crt 的临时证书。 单击确定并继续。
注意: 如果您的浏览器已经使用代理,那么您需要在启动 JMeter 之前配置 JMeter 以使用该代理,使用命令行选项 -H 和 -P。
配置 Firefox 以使用 JMeter 代理
在使用 JMeter HTTP(S) 测试脚本记录器时,我们将使用 Firefox 作为我们的浏览器,因为与 Chrome 和其他一些浏览器不同,它允许您覆盖系统范围的代理设置配置。
按照以下步骤将 Firefox 配置为使用端口 8080 上的 localhost (127.0.0.1) 作为所有流量的代理:
- 打开火狐
- 转到首选项菜单
- 单击高级选项卡
- 然后网络选项卡
- 在“连接”部分,单击“设置...”
- 选择“手动代理配置”单选按钮
- 将 HTTP 代理设置为“localhost”,端口设置为“8080”
- 勾选“将此代理服务器用于所有协议”
- 单击确定并退出首选项菜单
注意: Firefox 配置为使用 JMeter 的 Script Recorder 作为代理时,只有在 Script Recorder 运行时才能正常工作。
记录 HTTP 请求
既然我们的测试计划的 HTTP(S) 测试脚本记录器正在运行,并且 Firefox 已配置为将其用作代理,那么将记录 Firefox 发送的 HTTP 请求。 让我们测试一下。
在 Firefox 中,转到服务器的主页(与您在 JMeter HTTP 请求默认值中配置的服务器相同):
http://your_domain.com/
现在你的 Recording Controller 旁边应该有一个小三角形。 单击它以展开并显示它记录的请求。 您应该会看到记录的 HTTP 请求,具体取决于您包含和排除的 URL 模式。 随意浏览您的网站以记录更多请求。
以下是访问 WordPress 网站主页时记录的示例(未设置 URL 模式):
如您所见,创建了很多请求。 您可以通过在此处删除不需要的条目来优化 HTTP 请求列表。
如果您在录制控制器下看不到任何条目,您将需要在 HTTP(S) 测试脚本录制器中查看您的 URL 模式(提示:删除所有包含和排除以记录所有内容)。
完成记录后,单击 HTTP(S) 测试脚本记录器窗口底部的“停止”按钮。 请注意,Firefox 将不再能够访问任何页面(因为它被配置为使用端口 8080 作为代理)——如果您想正常运行,请将其配置为使用“无代理”。
运行您的测试计划
一旦您对记录的测试计划感到满意,保存它,然后运行它。 它的功能与手动创建的测试完全相同,因此您可以对其进行配置、删除和添加项目,以使其更符合您所需的测试用例。
结论
现在您可以使用 HTTP(S) 测试脚本记录器来帮助创建 JMeter 测试计划,您应该可以更轻松地创建模拟真实场景的测试计划。 随意探索记录控制器中记录的请求,以了解有关用户浏览 Web 服务器时发出的请求类型的更多信息。
祝你好运!