反骨仔

一个业余的 .NET Core 攻城狮

0%

18 JMeter 工具使用介绍

JMeter 是一款优秀的开源测试工具,广泛用于接口测试和性能测试。熟练使用 JMeter 后,能用 JMeter 搞定的事情就不必使用 LoadRunner 了。

18.1 JMeter 介绍

Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具,用于对软件做压力测试。它最初被设计用于 Web 应用测试,后来才扩展到其他测试领域。

JMeter 给大多数人的第一印象是性能测试工具。实际上,性能测试就是调用 Web 接口。所以现在经常用 JMeter 测试 Web 接口,用 JMeter 来测试 Restful API 非常好用 。

如果使用 JMeter 去对 Web 进行功能测试或者性能测试,应该熟练掌握 HTTP 协议。

18.2 JMeter 的下载和运行

JMeter 的官方网站是 http://jmeter.apache.org/。

JMeter 由 Java 语言开发 。JMeter3.2 版本的运行需要有 Java8 或者以上版本的环境,需要安装好 JavaJDK,配置好环境变量。关于 Java 环境的安装请参考其他资料,此处不再作详细讲解 。

JMeter 不需要安装,只需要配置好 JAVA 环境,解压后即可直接运行。将“apache-jmeter-3.2.zip”文件解压,进入解压目录“…/apache-jmeter-3.2/bin/”下双击 jmeter.bat,就能启动 JMeter。

image-20210110210259147

JMeter 是支持中文的。启动 JMeter 后,单击 Options -> Choose Language 来选择语言。

18.3 创建测试任务

在 JMeter 中,任何类型的测试都需要先创建线程组,一个线程组可以看作一个测试任务 。

添加线程组,用鼠标右键单击 “测试计划”,在快捷菜单中单击添加 -> Threads(Users) -> 线程组。

注意:在 JMeter 中,任何内容都应该放在线程组中。

设置线程组 。 线程组主要包括 3 个参数,

image-20210110231930902

image-20210110231939745

  1. 线程数:一个线程代表一个虚拟用户
  2. Ramp-Up Period(in seconds):设置线程的启动时长,单位为 s。如果线程数是 100,启动时长为 s,那么需要 5s 启动 100 个线程,平均每秒启动 20 个线程
  3. 循环次数:每个线程发送请求的次数。如果这个线程组中有 5 个 HTTP 请求,循环次数为 3 的话,那么 一个线程会发送 5 × 3=15 个 HTTP 请求。如果选中了“永远”复选框,那么所有的线程会无限循环发送请求,直到手动单击工具栏上的停止按钮 。

如果用来做功能测试/接口测试,那么应保持默认设置,线程数设置为 1,Ramp-up Period( in seconds)设置为 1,循环次数也设置为 1。

18.4 添加 HTTP 请求

构造出 一个 HTTP 请求的数据包 。

image-20210110232134735

image-20210110232143415

18.5 实例:密码用 MD5 加密

有一个 MD5 在线网站,网址是 http://www.md5.cz/,利用它可以对我们的密码进行散列处理 。 我们用 Fiddler 对这个网站进行抓包,然后用 JMeter 来实现。具体的操作步骤如下。

  1. 首先启动 Fiddler,打开浏览器,输入 http://www.md5.cz/,在页面中输入“password ”,然后单击按钮“ hash darling, hash!”。

image-20210110232411679

浏览器发出的 HTTP 请求报文如下 :

image-20210110232432701

  1. 现在我们需要使用 JMeter 发送一个一模一样的 HTTP 请求报文。启动 JMeter,添加线程组,添加一个 HTTP 请求。

    一个网址被分割成了 4 部分。

    协议(http)+服务器名称或 IP (www.md5.cz) +端口号(默认是 80 ,不需要填写)+路径(/getmd5 .php ) = http ://www.md5.cz!getmd5 .php 。

image-20210110232810826

​ 这个 HTTP 是 POST 方法,是有 Body 的。我们选择 POST 方法,并且在 Body Data 中填写“ what=password ”

  1. 添加 HTTP Header。选择这个 HTTP 请求,用鼠标右键单击,选择添加·>配置元件->HTTP 信息头管理器

image-20210111002207465

有个简单的办法可以添加 HTTP Header (信息头),即先在 Fiddler 中复制所有的 HTTP Header,然后单击“ Add from Clipboard”。

  1. HTTP 信息头管理器中删除 Host。JMeter 会自动帮你添加 Host ,所以不需要手动添加。如果己经手动添加,则需要删除。

image-20210111002330135

image-20210111002353010

  1. 添加察看结果树。选择线程组,用鼠标右键选择添加 –>监听器 -> 察看结果树。
  2. 运行 JMeter,单击工具栏上的绿色按钮,可以运行脚本,系统会提示你保存脚本 。
  3. 通过结果树,我们可以看到我们发出的 HTTP?请求,以及 Web 服务器返回的 HTTP 响应。

image-20210111002826912

image-20210111002837745

image-20210111002846513

password 被散列(hash)后 , 变成 5f4xxxxxxxxxxx。

image-20210111002942919

  1. JMeter 中查看 HTTP 的响应。我们可以使用 多种方式来查看 HTTP 响应, 如果 HTTP 晌应是一个 HTML 文档,则可 以使用 HTML 方式 ;如果 HTTP 响应是一个 JSON 文件,则可以使用 JSON Path Tester 方式查看。

image-20210111003019683

参考

《HTTP 抓包实战》