Java后端研发神兵利器之JMeter接口并发测试

Java后端研发神兵利器之JMeter接口并发测试

    • 1.1 写在前面的话
    • 1.2 什么是JMeter?
    • 1.3 JMeter 可以做什么?
    • 1.3 如何使用JMeter?
      • 1.3.1 下载JMeter
      • 1.3.2 配置环境变量
      • 1.3.3 修改默认的字符编码
      • 1.3.4 运行JMeter
      • 1.3.5 配置JMeter
      • 1.3.6 执行请求
      • 1.3.7 查看请求结果

1.1 写在前面的话

相信很多人都知道,并发是后端开发中比较棘手的问题之一,如果只是靠Swagger, PostMan 等简单的API 测试工具是无法测试出并发问题的。

为此我们需要学习使用一款并发压力测试神器——JMeter

1.2 什么是JMeter?

JMeter 是Apache 旗下一款开源的100%使用Java编写的性能压力测试工具。

1.3 JMeter 可以做什么?

JMeter 可谓是测试人员最爱的神兵利器之一。

JMeter 由于完全使用Java编写,因此支持跨平台,不仅可以用于Windows ,更可用于Mac OSX ,Linux 等多个平台。

而且,JMeter 还可以帮助测试人员生成各种格式的测试报告,支持测试的协议和组件也很广泛:

  • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
  • SOAP / REST Webservices
  • FTP
  • Database via JDBC
  • LDAP
  • Message-oriented middleware (MOM) via JMS
  • Mail - SMTP(S), POP3(S) and IMAP(S)
  • Native commands or shell scripts
  • TCP
  • Java Objects

并且,完整的多线程框架允许通过多个线程进行并发采样,并通过单独的线程组同时对不同的函数进行采样。

而这一点正是我们这篇博文学习使用的重点——使用JMeter 对接口进行压力并发测试。

1.3 如何使用JMeter?

接下来我们讲解如何使用JMeter.

1.3.1 下载JMeter

点击官网Download Releases,我们可以看到这样的界面:
Java后端研发神兵利器之JMeter接口并发测试_第1张图片
接下来点击上图中的*.tgz 压缩包,当然如果你的电脑不是Mac OSX 而是windows 的话则应该下载*.zip 压缩包。

1.3.2 配置环境变量

下载完成后我们解压到电脑里任意你喜欢的路径,然后设置环境。

如果是Mac OSX 则需要执行如下命令,将解压后的JMeter添加到环境变量:

# Config JMeter
export JMETER_HOME=/Users/zhaoqingfeng/documents/app/jmeter/apache-jmeter-5.3
export PATH=$PATH:$JMETER_HOME/bin

配置文件立即生效,如果是新的Mac OSX 系统需要执行如下命令:

source /etc/zshrc

如果是老系统,那么执行如下命令

source /etc/profile

值得注意的是,Mac OSX 新版本升级后环境变量不再在 /etc/profile 中,而是默认使用/etc/zshrc.
关于这个问题的更多讨论见:Mac OSX 每次打开shell执行maven命令都需要source /etc/profile 怎么办?

1.3.3 修改默认的字符编码

由于JMeter 默认使用的是ISO-8859-1 并不支持中文汉字,因此在开始之前我们最好修改下这个默认配置。

打开/Users/zhaoqingfeng/Documents/app/jmeter/apache-jmeter-5.3/bin/jmeter.properteis 配置文件,修改如下:

# The encoding to be used if none is provided (default ISO-8859-1)
sampleresult.default.encoding=UTF-8

如果不改这个配置,请求的结果如果包含汉字就会乱码。

1.3.4 运行JMeter

JMeter 默认带有GUI 图形用户界面,如果想启动JMeter, 我们需要执行bin 目录下的jmeter 可执行文件。

如果是windows 电脑我们可以通过jmeter.bat 来启动我们的JMeter.

如果是Mac OSX 或Linux 我们可以通过jmeter.sh 来启动我们的JMeter
Java后端研发神兵利器之JMeter接口并发测试_第2张图片
执行效果如下
Java后端研发神兵利器之JMeter接口并发测试_第3张图片

1.3.5 配置JMeter

接下来我们开始配置JMeter

  • 填写测试名称Name 用于区分测试用例,
    Java后端研发神兵利器之JMeter接口并发测试_第4张图片

这里的Name建议英文名称,comments 备注这里可以写中文解释。

假如我们想模拟500个用户线程,来访问一个投票接口的话,那么我们需要这么做:

  • 选中刚才创建的模块名称,右键,Add-----> Threads(Users)-------> Thread Group
    Java后端研发神兵利器之JMeter接口并发测试_第5张图片
  • 接下来我们填写线程组配置,我们这里配置500个线程,这将会模拟500个用户同时请求一个投票接口Java后端研发神兵利器之JMeter接口并发测试_第6张图片
  • 选中线程组层级,右键,Add ---- > Sampler ------>Http Request.Java后端研发神兵利器之JMeter接口并发测试_第7张图片
    因为我们要模拟用户请求投票接口因此这里是Http Request ,这应该也会是我们最常用的一种。

创建完成后我们可以看到如下图所示

最主要的是配置域名,端口,请求方法GET/POST , 请求路径以及请求参数
Java后端研发神兵利器之JMeter接口并发测试_第8张图片
值得注意的是,如果你第一次玩这个,可能不晓得如何添加参数。

请注意看最下方有一个添加按钮可以添加参数
Java后端研发神兵利器之JMeter接口并发测试_第9张图片

  • 配置完请求参数后我们需要配置下请求结果监听。
    Java后端研发神兵利器之JMeter接口并发测试_第10张图片

1.3.6 执行请求

点击如下按钮执行请求Java后端研发神兵利器之JMeter接口并发测试_第11张图片

1.3.7 查看请求结果

执行等待一小会便可以在view Results Tree 视图中看到如下请求JSON 结果内容:
Java后端研发神兵利器之JMeter接口并发测试_第12张图片
如果想看每个请求的具体请求时间可以修改展示结果类型为 TextJava后端研发神兵利器之JMeter接口并发测试_第13张图片
如果你仔细看你会发现,这500个请求,请求时间精确到秒级别都是一摸一样的。

当然他还有更多高级用法,这里只介绍下最常用的用法。

如果想了解更多,请参考JMeter官方文档

本篇完~

你可能感兴趣的:(Java,EE,修炼手册,JMeter,如何使用JMeter,如何进行接口并发测试,接口压力测试,并发压力测试)