介绍
在本教程中,我们将教您如何设置和使用Apache JMeter HTTP(S)测试脚本记录器来记录HTTP请求。 记录HTTP请求是构建测试计划的一个很好的方法,可以用于创建接近模仿正常用户行为的测试。
本教程假设您具有Apache JMeter的基本知识。 如果你是新来的JMeter,这里是另一个教程,可以让你开始: 如何使用Apache JMeter的要在Web服务器上执行负载测试
先决条件
以下是本教程需要的软件列表:
- Apache的JMeter的: 这里下载的二进制文件
- Java 6中或更高版本: 甲骨文的Java可以在这里找到
- Mozilla Firefox浏览器: 点击此处下载
作为参考,在编写本教程时,我们使用以下软件版本:
- Oracle Java 7更新60,64位
- JMeter 2.11
- Firefox 30.0
开始构建测试计划
首先,启动JMeter。 然后让我们开始构建一个测试计划。 如果你已经有了一个测试计划,你想下手,跳过这一部分并移动到增加一个记录控制器到你的线程组(下一节)。
最低限度,我们将添加一个线程组和HTTP请求默认值。 让我们通过添加一个线程组开始。
添加线程组
一个线程组添加到测试计划 :
- 在测试计划右键点击
- 将鼠标移到添加>
- 将鼠标移到线程(用户)>
- 点击线程组
使用以下值设置线程组属性:
- 线程(用户)数量 :将此值设置为50
- 等候周期(以秒为单位):此设置为10。
- 循环计数 :将此设置为1。
添加HTTP请求默认值
现在让我们添加HTTP请求默认 主题组 :
- 选择线程组 ,然后右键单击它
- 将鼠标移到添加>
- 将鼠标移到配置元件>
- 点击HTTP请求默认值
在HTTP请求默认值,下的Web服务器部分,填补了服务器名称或IP字段与要测试Web服务器的名称或IP地址。
添加HTTP Cookie管理器
如果您的网络服务器使用Cookie,您可以通过向线程组添加HTTP Cookie管理器来添加对Cookie的支持:
- 选择线程组 ,然后右键单击它
- 将鼠标移到添加>
- 将鼠标移到配置元件>
- 点击HTTP Cookie管理器
添加录制控制器
现在,让我们添加一个记录控制器 主题组 :
- 选择线程组 ,然后右键单击它
- 将鼠标移到添加>
- 将鼠标移到逻辑控制器>
- 点击记录控制器
记录控制器将创建记录的HTTP请求采样器。 下一步是设置HTTP(S)测试脚本记录器。
添加HTTP(S)测试脚本记录器
现在,让我们添加一个HTTP(S)测试脚本记录到工作台 :
- 选择工作台 ,然后右键单击它
- 将鼠标移到添加>
- 将鼠标移到非测试元素>
- 点击HTTP(S)测试脚本记录
注意:添加到工作台项目没有得到保存的测试计划的其余部分。 如果您想保存您的工作台, 工作台上单击鼠标右键,然后单击选择另存为...,然后将其保存到所需的位置。 保存后,您可以使用“合并”菜单项将其添加到任何已打开的测试计划中,并选择已保存的工作台。
端口设置
该HTTP(S)测试脚本记录代理将运行的默认端口是8080
。 这可以通过改变来改变Port
全局设置下的设置。
包含或排除网址格式(可选)
在HTTP(S)脚本记录器中,您可以添加作为正则表达式编写的网址格式,以便在记录时包括或排除。 这可能有助于仅包含您要请求的内容类型(例如* .html,* .php等),或者排除您不想请求的内容类型(例如* .jpg,* .png ,* .js等)。
要添加一个URL模式下,单击该URL模式的“添加”按钮,包含 或者URL样板排除部分,然后点击白色区域的部分的顶部。 您现在应该能够键入模式。 重复此过程以添加更多模式。
示例:网页的网址格式
.*\.html
.*\.php
.*\.htm
示例:图像的URL模式
.*\.png
.*\.jpg
.*\.gif
以下是要排除图片的“排除的网址格式”的屏幕截图:
将项目添加到脚本记录器(可选)
将JMeter项目添加到HTTP(S)测试脚本记录器将使记录的请求继承添加的项目。 例如,如果我们增加一个计时器项脚本记录器,定时器将被添加到正在记录每个HTTP请求。 当测试运行时,定时器将使每个测试线程在执行HTTP请求之前等待。
让我们添加一个常数计时器 HTTP(S)测试脚本记录 ,作为一个例子:
- 选择HTTP(S)测试脚本记录 ,然后右键单击它,
- 将鼠标移到添加>
- 将鼠标移到计时器>
- 点击恒计时器
你可以配置线程延迟到任何你想要的。
假设您想要模拟用户每2秒钟点击一个不同的页面。 将线程延迟设置为2000 ms将通过向记录的每个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)作为其代理的所有流量,请执行以下步骤:
- 打开Firefox
- 转到首选项菜单
- 单击高级选项卡
- 然后选择网络选项卡
- 在“连接”部分,点击“设置...”
- 选择“手动代理配置”单选按钮
- 将HTTP代理设置为“localhost”,将端口设置为“8080”
- 选中“将此代理服务器用于所有协议”
- 单击确定并退出首选项菜单
注意:当Firefox配置为使用JMeter的脚本记录作为代理,它只会工作,如果正常的脚本记录器正在运行。
记录HTTP请求
现在我们的测试计划的HTTP(S)测试脚本记录器正在运行,并且Firefox配置为使用它作为代理,Firefox发送的HTTP请求将被记录。 让我们测试一下。
在Firefox中,转到服务器的主页(与您在JMeter HTTP请求默认值中配置的服务器相同):
http://your_domain.com/
现在应该有旁边的记录控制器一个小三角。 点击它展开并显示它记录的请求。 您应该会看到记录的HTTP请求,具体取决于您包括和排除的网址格式。 随意浏览您的网站以记录更多的请求。
以下是访问WordPress网站首页(未设置网址格式)时记录的示例:
正如你所看到的,创建了很多请求。 您可以通过在此处删除不需要的条目来细化HTTP请求的列表。
如果在记录控制器下没有看到任何条目,您将需要在HTTP(S)测试脚本记录器中检查您的URL模式(提示:删除所有包含和排除以记录所有内容)。
完成录制后,单击HTTP(S)测试脚本录制器窗口底部的“停止”按钮。 请注意,Firefox将无法再访问任何页面(因为它配置为使用端口8080作为代理) - 如果要正常工作,请将其配置为使用“无代理”。
运行测试计划
一旦你对你记录的测试计划感到满意,保存它,然后运行它。 它将像手动创建的测试一样工作,因此您可以配置,删除和添加项目,以使其更接近您所需的测试用例。
结论
现在您可以使用HTTP(S)测试脚本记录器来帮助创建JMeter测试计划,您应该更容易创建模拟现实场景的测试计划。 随时浏览记录控制器中记录的请求,以了解用户浏览您的Web服务器时发出的请求类型。
祝你好运!