如何使用JMeter记录测试场景

来源:互联网 发布:sql having 编辑:程序博客网 时间:2024/06/03 15:33

提供:ZStack云计算

系列教程

本教程为利用Apache JMeter进行负载测试系列两篇中的第二篇。

内容介绍

在本教程中,我们将了解如何设置并利用Apache JMeter HTTP(S)Test Script Recorder记录HTTP请求。根据HTTP请求构建测试规划是一种非常科学的实践方式,能够模仿普通用户的日常操作以帮助我们理解应用上线后的负载处理情况。

本篇教程要求大家具备一定的Apache JMeter基础知识。如果大家刚刚接触JMeter,请参阅如何利用Apache JMeter在Web服务器上执行负载测试一文。

先决条件

下面来看本教程需要的软件清单:

  • Apache JMeter: 此处下载
  • Java 6或更新版本: 此处下载
  • Mozilla火狐: 此处下载

作为参考,我们将使用以下软件版本:

  • 甲骨文Java 7 update 60, 64位
  • JMeter 2.11
  • Firefox 30.0

首先建立测试规划

先启动JMeter,而后构建一套测试规划。如果大家已经制定出了规划,那么可以直接跳过这一步,直接阅读Recording Controller部分。

至少,我们需要添加一个Thread Group以及HTTP Request Defaults。下面从添加Thread Group开始。

添加Thread Group

向Test Plan中添加Thread Group:

  1. 右键点击Test Plan
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Threads (Users) >
  4. 点击Thread Group

使用以下值设置Thread Group属性:

  • Number of Threads (users): 设定为50
  • Ramp-Up Period (单位为秒): 设定为10
  • Loop Count: 保留为1

添加HTTP Request Defaults

下面向Thread Group中添加HTTP Request Defaults:

  1. 选定Thread Group并右击
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Config Element >
  4. 点击HTTP Request Defaults

在HTTP Request Defaults中的Web Server部分内,将Server Name or IP字段替换为大家需要测试的Web服务器名称或IP地址。

如果大家的Web服务器使用cookies,则可向Thread Group添加HTTP Cookie Manager以实现cookies支持:

  1. 选定Thread Group并右击
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Config Element >
  4. 点击HTTP Cookie Manager

添加Recording Controller

现在向Thread Group中添加Recording Controller:

  1. 选定Thread Group并右击
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Logic Controller >
  4. 点击Recording Controller

Recording Controller为所记录HTTP Request样本的创建位置。在下一步中,我们将设置HTTP(S)Test Script Recorder。

添加HTTP(S) Test Script Recorder

现在向WorkBench中添加HTTP(S) Test Script Recorder:

  1. 选定WorkBench并右击
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Non-Test Elements >
  4. 点击HTTP(S) Test Script Recorder

注意:被添加至WorkBench中的条目并不会被保存至test plan的其余部分。如果大家希望保存WorkBench,请右键点击WorkBench而后点击Save Selection As…,最后将其保存在理想的位置。保存后,我们可以利用“Merge”菜单条目将其添加至任意已经打开的test plan中。

端口设置

HTTP(S) Test Script Recorder 代理的默认端口为8080。大家可以在Global Settings下变更Port设置对此进行调整。

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

在HTTP(S) Script Recorder中,我们可以添加URL模式(URL Patterns),这些模式以正规表达式编写,从而实现包含或排除。大家可以利用这种方式确保只包含希望请求的内容类型(例如.html,.php等等)或者排除不需要的内容类型(例如.jpg,.png等等)。

要添加一条URL Pattern,点击URL Patterns to Include或者URL Patterns to Exclude部分中的“Add”按钮,而后点击这一区段顶部的白色区域。现在大家应该可以输入一种模式了。重复此过程以添加更多模式。

示例:网页URL Patterns:

.*\.html.*\.php.*\.htm

示例:图片URL Patterns:

.*\.png.*\.jpg.*\.gif

大家可以利用以下URL Patterns to Exclude屏幕将图像排除在外:

向Script Recorder中添加条目(可选)

向HTTP(S) Test Script Recorder中添加JMeter条目能够使已记录请求继承这些新增条目。例如,如果我们向Script Recorder中添加了一个Timer条目,该Timer将被添加至每条被记录的HTTP Reques当中。当测试运行时,该Timer会要求各测试线程等待此HTTP Request执行完成后再开始运行。

下面向HTTP(S) Test Script Recorder中添加一条Constant Timer:

  1. 选定HTTP(S) Test Script Recorder并右击
  2. 鼠标悬停于Add >
  3. 鼠标悬停于Timers >
  4. 点击Constant Timer

大家可能需要每两秒点击不同页面以模拟用户操作。将线程延后设计为2000 ms即可实现这一效果。

这还只是一种使用示例,大家可以充分发挥利用Script Recorder完成自己需要的测试。

开始记录

点击Script Recorder窗口底部的“Start”按钮以启动JMeter代理服务器,其可用于截取并记录浏览器请求。

在初次尝试时,其会显示错误称无法启动,这是因为证书尚不存在。点击OK,而后再次点击Start按钮。这时提示消息会显示ApacheJMeterTemporaryRootCA.crt证书已经被创建在JMeter bin目录当中。点击OK并继续。

注意:如果大家的浏览器已经具备代理,则需要配置JMeter以使用该代理,具体方法为使用命令行选项-H与-P。

配置火狐浏览器以使用JMeter代理

我们将利用火狐作为示例浏览器,这是因为它允许我们选择其它配置来取代默认代理选项。

配置火狐在端口8080上使用localhost(127.0.0.1)作为全部流量代理:

  1. 打开火狐
  2. 前往偏好菜单
  3. 点击“高级”标签
  4. 点击“网络”标签
  5. 在“连接”部分中选定“设置……”
  6. 点击“手动代理配置”按钮
  7. 将HTTP代理设置为”localhost”,端口为”8080”
  8. 点击“为全部协议使用此代理服务器”
  9. 点击OK并退出

注意:当火狐利用JMeter的Script Recorder作为代理时,其只能在后者运行时方能正常起效。

记录HTTP请求

现在我们的test plan已经准备就绪,火狐浏览器也设置完成,全部HTTP请求都将得到记录。下面开始测试。

在火狐中访问服务器主页:

http://your_domain.com/

现在Recording Controller旁应有一个小三角,点击并展开,显示其已经记录的请求。

以下为我在访问WordPress站点主页时的记录内容示例:

可以看到,这里创建了大量请求。大家可以删除掉不必要的条目以定义HTTP请求列表。

如果大家在Recording Controller下看不到任何条目,则应审查HTTP(S) Test Script Recorder下的URL Patterns(提示:移除全部包含与排除条件即可记录全部请求)。

记录完成后,点击HTTP(S) Test Script Recorder窗口底部的“Stop”按钮。注意,这时浏览器将无法访问任何页面(因为其被配置为使用端口8080作为代理)——要恢复功能,请将其配置为“不使用代理”。

运行自己的Test Plan

到这里整个设置流程就结束了,大家可以根据自己的实际情况与需要进行随意测试。

总结

现在我们已经能够利用HTTP(S) Test Script Recorder协助JMeter test plan的创建,并应对各类实际场景了。请随意探索Recording Controller中的已记录请求,并借此掌握用户在浏览Web服务器时的操作轨迹。

本文来源自DigitalOcean Community。英文原文:How To Use JMeter To Record Test Scenarios By Mitchell Anicas

翻译:diradw

0 0
原创粉丝点击