zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【项目实战】如何使用Jmeter来压测接口?

接口项目 如何 实战 JMeter 压测 使用
2023-09-14 09:14:14 时间

一、背景

压力测试是一种需要在每个Web应用程序都需要进行的测试。它能够帮助我们发现系统中的性能瓶颈,减少发布生产环境后出现问题的可能性,评估系统的承载能力,并据此制定对策。所以压力测试是一个非常重要的步骤,下面介绍一款非常常用的压力测试工具,JMeter。
测试同学反馈说,我们首页的接口,这个接口/mallapi/pagedevise/getDetailByComponentReq
单个接口1000个线程跑完,大概有6%的error的情况,而且每次都是最后结尾的时候出现error。我倒要看看是不是测试说的那样。
在这里插入图片描述

二、介绍JMeter

Apache JMeter是由Apache组织开发的一个基于java的压力测试工具。

  • 软件压力测试
    用于软件压力测试,最初为Web应用程序测试设计,但后来扩展到其他测试领域。
  • 测试静态资源和动态资源
    如静态文件、CGI脚本、Java对象、数据库、FTP服务器等。
  • 模拟服务器的巨大负载
    可用于模拟服务器、网络或对象上的巨大负载,这来自于测试它们的强度和分析它们在不同压力类别下的整体性能。
  • 功能/回归测试
    此外,能够对应用程序进行功能/回归测试,通过创建带有断言的脚本来验证程序是否返回所需的结果。为了最大化灵活性,JMeter允许使用正则表达式创建断言。

三、 Jmeter的使用步骤

Step1、创建线程组

在“测试计划”上右键 【添加】–>【Threads(Users)】–>【线程组】。
在这里插入图片描述
设置线程数和循环次数。测试说的是1000。所以,此处设置线程数为1000,循环一次。
在这里插入图片描述

Step2、创建HTTP请求

在“线程组”右键 【添加-】->【samlper】–>【HTTP 请求】配置需要进行测试的程序协议、地址和端口设置需要测试的API的请求路径和数据。这里是用的json
在这里插入图片描述
在这里插入图片描述

Step3、添加HTTP请求头#

在刚刚创建的线程组上右键 【添加】–>【配置元件】–>【HTTP信息头管理器】。

因为要传输的数据为json,所以设置一个 Content-Type:application/json
在这里插入图片描述

Step4、添加断言

在刚刚创建的线程组上右键 【添加】–>【断言】–>【响应断言】。

根据响应的数据来判断请求是否正常。在这里只判断的响应代码是否为200。还可以配置错误信息
在这里插入图片描述

Step5、添加察看结果树

在刚创建的线程组上右键 【添加】–>【监听器】–>【察看结果树】。
直接添加,然后点击运行按钮就可以看到结果了。
在这里插入图片描述

Step6、添加Summary Report

在刚刚创建的线程组上右键 【添加】–>【监听器】–>【Summary Report】。
直接添加,然后点击运行按钮就可以看到结果了。
在这里插入图片描述

Step7、测试计划创建完成

记得点保存。保存为一个JMX文件,方便下次打开

四、 Jmeter常见问题解决

(1)下载地址:

JMeter:https://jmeter.apache.org/download_jmeter.cgi
在这里插入图片描述

因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境
bat是win的,sh是linux的。

本文使用的版本是JMeter5.4.1
在这里插入图片描述

打开之后的这个对话框可忽略
在这里插入图片描述
上面的意思就是:不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。使用下面的命令来执行测试:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
并且修改JMeter批处理文件的环境变量:HEAP=“-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m”

(2)Jmeter如何针对https协议进行接口测试?

解决方法:
将协议更改为:https,端口号更改为443;
Jmeter默认的是:http协议,端口号是:80

(3)Jmeter如何解决默认中文显示?响应内容中文乱码

解决方法: 更改语言为中文官方默认为我们提供了简体中文。

方案1:通过 【Options】->【Choose Language】变更为简体中文
在这里插入图片描述
方案2:通过编辑jmeter目录/bin/jmeter.porperties文件,将其language的值更改为:zh_CN,然后保存,重启Jmeter即可。

(4)Jmeter如何解决Sampler样本-响应结果乱码?

原因:jmeter默认是ISO-8859-1编码,可以通过修改:jmeter.properties文件
解决方法: 将sampleresult.default.encoding=ISO-8859-1,将其修改为sampleresult.default.encoding=UTF-8;保存后,重新启动Jmeter即可。
在这里插入图片描述

(5)响应返回协议不支持

注意在请求头中携带Content type = ‘text/plain;charset=UTF-8’ 即可

org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘text/plain;charset=UTF-8’

五、参考文章:

https://blog.csdn.net/mengwuyoulin/article/details/125786649
https://www.cnblogs.com/stulzq/p/8971531.html
http://t.zoukankan.com/xiaoqiao0307-p-9004271.html