JMeter 详解

参考:https://learning.oreilly.com/library/view/jmeter-cookbook/9781783988280/ch02.html#ch02lvl1sec20

第 1 章 JMeter 基础知识

在本章中,我们将介绍以下:

  • 执行测试脚本
  • 通过 HTTP(S) 测试脚本记录器记录脚本
  • 通过 Chrome 浏览器扩展记录脚本
  • 将 HTTP Web 存档 (HAR) 转换为 JMeter 测试计划
  • 查看和分析测试结果
  • 将数据输入脚本
  • 使用定时器
  • 管理 HTTP 用户会话
  • 测试单页应用程序 (SPA)
  • 测试以 AJAX 为中心的应用程序

介绍
在本章中,您将学习有助于您更好地使用 JMeter 的基础知识和中级技能。诸如执行或记录脚本之类的任务是例行公事,您几乎可以肯定您需要执行它们,有时是每天执行一次。此外,我们将学习如何查看和分析测试执行的结果,将数据输入测试脚本,并借助计时器使测试脚本模仿用户行为。在后面的秘籍中,我们将深入探讨如何使用 JMeter 处理身份验证、授权和测试当今的新型应用程序。

1.1 执行测试脚本

测试脚本是一个系列针对应用程序发出的预先录制的请求。它们是捕获的用户操作与应用程序的交互。其中包括访问 URL、浏览多个页面、登录等等。与大多数测试工具一样,JMeter 具有记录和回放测试脚本的能力。JMeter 测试脚本以带有扩展名的 XML(可扩展标记语言)格式存储.jmx
用户可以在他们选择的文本编辑器(例如 Sublime Text、Notepad 等)中打开测试脚本并准确查看它在做什么,但在 JMeter 的 GUI 中可以更清楚地了解脚本的作用。
脚本也可以在 JMeter 所说的非 GUI 模式下执行,完全在命令行上,无需启动 JMeter GUI。

On Unix/Mac OS, type in the following command:
./jmeter -n -t [path to test script] -l [path to results files]
On Windows, type in the following command:
jmeter.bat -n -t [path to test script] -l [path to results files]

有几个原因为什么您可能想在非 GUI 模式下执行测试。其中一些原因包括:

  • 在没有 GUI 层的 Unix 机器上运行(也就是说,JMeter GUI 甚至没有打开)
  • 运行分布式测试
  • JMeter GUI 的性能原因,有时会占用大量资源;在非 GUI 模式下运行可缓解此问题```

1.2 执行通过 HTTP(S) 测试脚本记录器记录脚本

通过 JMeter 的 HTTP(S) 测试脚本记录器记录脚本是您在构建测试计划时可用的选项之一。
如何使用 HTTP(S) 测试脚本记录器记录测试脚本,执行以下步骤:
1.打开命令行提示符
2.切换到 JMeter 安装目录 ( JMETER_HOME)
3.切换到bin目录
4.执行以下命令:
对于 Windows,键入jmeter.bat
对于 Mac OS/Unix,键入./jmeter
5.打开 GUI 后,单击工具栏上的Templates...按钮(立即出现在新测试计划图标右侧的图标)。
6.在选择模板框的下拉菜单中,选择录制并单击创建按钮。
7.单击HTTP(S) Test Script Recorder元素(在WorkBench下)并将Port(在Global Settings下)从8888更改为7000。如果您愿意,可以使用不同的端口。重要的是选择机器上现有进程当前未使用的端口。默认值为8888.
将其余组件保留为默认设置值。
8.点击HTTP(S) 测试脚本记录器组件底部的开始按钮。
用这些设置,测试脚本记录器服务器将在端口上启动7000,监视通过该端口的所有请求,并使用默认记录控制器将它们记录到测试计划中。

1.2.1 HTTP(S) 测试脚本记录器配置

这些步骤指示 JMeter 充当HTTP 代理并侦听从您的浏览器到分配的端口上的 Internet 的传入和传出请求,在我们的例子7000中。
我们现在需要配置浏览器以使用我们刚刚配置的代理服务器并将请求重定向到分配的端口。有几种方法可以做到这一点,但我们将在这里重点介绍两种最常见的方法。

方法一,安装插件FoxyProxy

现代浏览器拥有一个充满活力且活跃的插件生态系统,允许您通过添加插件来扩展浏览器的功能。FoxyProxy就是这样一种插件(http://getfoxyproxy.org/)。它是一个简洁的浏览器插件,允许您设置各种代理设置并在它们之间动态切换,而不必弄乱机器上的系统设置。它确实使工作变得无忧无虑。值得庆幸的是,FoxyProxy 有一个适用于所有主要浏览器的插件,包括 Google Chrome、Firefox 和 Internet Explorer。如果您使用其中任何一个,那么您很幸运;头过去抓住它!

方法2, 更改机器系统设置

在 Windows 操作系统上,执行以下步骤来配置代理:

导航到开始| 控制面板| 网络与互联网| 互联网选项。
在Internet 选项对话框中,单击连接选项卡。
单击LAN 设置按钮。
要启用代理服务器,请选中为您的 LAN 使用代理服务器(这些设置将不适用于拨号或 VPN 连接)框,如下面的屏幕截图所示。
在代理地址框中,输入localhostIP 地址。
在端口号文本框中,输入7000(以匹配您之前为 JMeter 代理设置的端口)。
如果要绕过本地 IP 地址的代理服务器,请选中绕过本地地址的代理服务器复选框。
单击确定以完成代理配置过程。

在 Mac OS 上,执行配置代理的步骤如下:

导航到系统偏好| 网络| 进阶……
转到代理选项卡。
检查Web 代理 (HTTP)。
在Web 代理服务器下,输入localhost。
对于端口,输入7000(以匹配您之前为 JMeter HTTP 代理设置的端口)。
对安全 Web 代理 (HTTPS)执行相同操作。
点击OK

对于所有其他系统,请查阅相关的操作系统文档。

1.2.2记录测试

将 JMeter 的 HTTP(S) 测试脚本记录器和浏览器都配置为使用它后,我们现在可以记录测试了。执行以下步骤:

  • 将您的浏览器指向您选择的网站。
  • 导航到几个链接。
  • 请注意,所有用户操作都在 JMeter GUI 中的线程组组件下捕获。
  • 通过停止 HTTP(S) 测试脚本记录器来停止记录。
  • HTTP(S) 测试脚本记录器服务器设置为侦听特定端口上的请求,然后将浏览器或系统设置为将所有请求重定向到分配的端口。这使我们能够在用户与 Web 应用程序交互时捕获他们的操作,允许我们像在执行测试脚本配方中那样重放他们的操作。

1.2 通过 Chrome 浏览器扩展记录脚本

记录测试脚本是你将成为的一个经常做。我们在 JMeter 中记录测试脚本的方式有很多选择。使用安装在 Google Chrome 浏览器上的浏览器插件来记录测试脚本。执行以下步骤:

  1. 如果您的计算机上尚未安装 Google Chrome 浏览器,请安装它。
  2. 打开 Chrome 网上应用店。
  3. blazemeter在网上商店搜索。
  4. 单击“免费”按钮安装 BlazeMeter 浏览器扩展。
  5. 单击浏览器工具栏右上角新添加的 BlazeMeter 扩展按钮。
  6. 录制按钮。
  7. 将您的浏览器指向您选择的网站。
  8. 导航通过网站,就像您通常作为用户所做的那样。
  9. 在上一步之后,停止录制并单击导出到 jmx 按钮 ( .jmx )。这会将您的脚本副本下载到您的本地计算机。
  10. 打开在 JMeter 中导出测试脚本。
  11. 将Tree Listener中的 View Results添加到测试计划(Test plan | Add | Listener | View Results in Tree Listener)。
  12. 使用 JMeter 运行导出的测试脚本。
  13. 查看结果。

这只要记录器打开,浏览器扩展程序就会以 JSON 格式捕获用户与网站的交互。录制停止,没有进一步的用户操作被捕获。单击导出按钮后,JSON 格式将转换为 XML 格式,JMeter 可以理解并使用该格式。然后可以像任何其他脚本一样在 JMeter 中编辑和运行下载的录制脚本。
该扩展允许您通过为您提供在用户交互之间暂停记录的能力来选择性地捕获请求。它还允许您通过包含过滤模式文本区域过滤掉您可能不想在测试脚本中捕获的不需要的流量。
最后,由于 BlazeMeter(在云中提供分布式测试的众多提供商之一)提供了此扩展,它还提供了其他功能,包括以下内容:

  • 允许您直接在云中运行脚本(参见第 5 章深入分布式测试
  • 允许您轻松模拟成千上万的用户(参见第 5 章深入分布式测试

1.3 将 HTTP Web 存档 (HAR) 转换为 JMeter 测试计划

其他记录测试脚本的替代方法在 JMeter 中,将现有的 HTTP Web 存档直接转换为 JMeter 测试脚本。
从浏览器中捕获的 HTTP Web 请求生成测试脚本。执行以下步骤:

  1. 安装并启动 Google Chrome 浏览器(如果您还没有)。
  2. 通过导航到工具打开开发人员工具| 开发者工具
  3. 单击网络选项卡。
  4. 制作确保选中保留日志复选框。
  5. 浏览像往常一样的网站。
  6. 完成浏览后,打开开发人员工具窗口,右键单击并选择Copy All as HAR
  7. 将浏览器指向https://flood.io/har2jmx
  8. 将剪贴板的内容复制到输入框中。
  9. 单击转换按钮。
  10. 启动 JMeter GUI。
  11. 打开并检查下载的测试脚本。
  12. 将Tree Listener中的 View Results添加到测试计划(Test plan | Add | Listener | View Results in Tree Listener)。
  13. 保存并运行导出的测试脚本。
  14. 查看结果。

借助内置的浏览器工具和插件,浏览器能够将用户和 Web 应用程序之间的所有交互捕获到JSONJavaScript Object Notation)中称为 Web 存档 (HAR) 的格式。这个生成的 JSON 对象包括有关每个请求的所有信息,包括 HTTP 标头、方法、查询字符串等。给定 JSON 对象或包含其内容的文件,HAR 到 JMX 转换器然后可以为每个用户请求读取、解析和构造 JMeter 元素,类似于 JMeter HTTP 代理所做的事情。
为了不想通过 Flood IO 的网站进行转换的命令行爱好者,有一个命令行工具可以用来实现 HAR TO JMX 转换。Har2jmeter位于http://seitenbau.github.io/har2JMeter/是一个用 Groovy 语言编写的实用程序。它仍处于起步阶段,因此您可能会在这里和那里遇到一些怪癖。在测试它时,我们发现一件事是它目前不能很好地与安全连接 (HTTPS) 配合使用。此外,它没有将请求分组到逻辑控制器中。我们在这里提到它只是为了让您知道它的存在,并且这些错误可能会在不久的将来得到修复。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 做为Jmeter 菜鸟,可以从脚本录制开始。 基本指令 转到JMETER_HOME / bin中,并开始JMete...
    Mlotjve阅读 831评论 0 1
  • JMeter 生成脚本方式有多种,前面介绍了一种用 Badboy 录制的方式,有需要的可以去看看( https:/...
    奶茶哥_lnc阅读 1,893评论 0 0
  • 本篇文章使用Jmeter 5.4.3版本为例。 导航栏 切换语言 - ,其中 是简体中文 线程组 名称:默认为“线...
    山巅自相见阅读 531评论 0 1
  • 一、使用jmeter函数助手 启动jmeter后,可以在JMeter的选项菜单中找到函数助手对话框(快捷键:Ctr...
    驕傲的兎孒阅读 1,459评论 0 3
  • 公司最近需要测试后台性能,所以学习使用了Jmeter,在此做记录,也分享给更多需要的人。 这篇文章是 JMeter...
    顾顾314阅读 4,231评论 0 10