一、概述
二、安装&配置
三、发送Http请求
四、简单的压力测试
一、概述
JMeter(表)即 Apache JMeter,是ApacheSoftwareFoundation开发的压力测试工具。该应用程序是开源软件,旨在对应用程序功能和行为进行测试,以衡量其性能指标。它最初是为测试Web应用程序而设计的,但此后已扩展到其他测试功能。
功能:
1:接口测试:http、https、soap
2:FTP
3:数据库:通过JDBC进行数据库压力测试
4:电子邮件:smtp、pop3、imaps
5:...
二、安装&配置
JMeter依赖jdk环境
1:下载
官网:https://jmeter.apache.org/download_jmeter.cgi
网盘: https://pan.baidu.com/s/16EuspFraC3pUs8XjoPe6Wg 提取码: n7v2
2:配置
JMETER_HOME:D:\application\apache-jmeter-5.4.1\apache-jmeter-5.4.1
在Path中新增:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar
%JMETER_HOME%\lib\jorphan.jar
%JMETER_HOME%\bin
3:启动
在命令行工具中:jmeter
双击jmeter.bat
三、发送http请求
测试计划->线程组->http请求&结果视图
新建测试计划:file - new - 填写Name&comments - Ctrl+S
新建线程组:测试计划右键 - add - Threads - ThreadGroup - 填写Name&comments - Ctrl+S
新建http请求:线程组右键 - add - Sampler - HttpRequest - 填写Name&comments - 填写ServerNameOrIp&Path - Ctrl+S
新建结果视图:线程组右键 - add - Listener - ViewResultsTree - 填写Name&comments - Ctrl+S
1:请求页面和请求结果页面是分开的,发送完请求之后需要切换到【结果视图】查看http请求的结果
2:运行测试计划的快捷键是Ctrl+r ,若测试计划中有多个http请求,运行一次,所有的http请求都会被执行
3:从这个简单的例子,大概可以总结一下 JMeter 的结构,测试计划为顶层对象,一个测试计划可以包含多个线程组,一个线程组中可以包含采样器(必须,用来发送请求)和监听器(必须,用来查看请求结果)。除采样器和监听器之外,还有逻辑控制器、处理器、断言、配置元件等,这些是 JMeter 的核心(也是基础)模块。
四、压力测试
以访问本地图片服务器获取图片为例,该接口的功能是根据传入的参数返回对应的图片,总共两个参数,第一个为项目名称,第二个为图片名称。如:http://localhost/apache/jmeter.png 为获取apache项目中图片名称为jmeter.png的图片。
准备测试数据 -> 编写测试计划 -> 查看测试结果
编写测试计划:新建测试计划 StressTestDemo -> 导入测试数据 -> 编写采样器 -> 新建结果树&结果报表
1:准备测试数据
新建一个 data.txt 的文件,在其中存方测试数据,如我们要测试的接口包含两个请求参数,那么可以将该参数放在txt中,用英文逗号分隔,每一行为一组测试数据。
参数1:project,表示项目
参数2:img,表示图片名称
JMeter 本身可以新建和存储用户自定义变量,变量也可以作为测试数据来维护。在线程组右键 -> add -> 配置元件 -> 用户自定义的变量 可添加自定义变量。
2:新建测试计划并导入测试数据
2.1:新建测试计划和线程组
线程数:20,模拟20个用户请求,20个用户即20个线程
Ramp-Up时间: 设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。
循环次数: 每个线程发送请求的次数。如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
2.2:导入测试数据
导入测试数据:右键线程组 -> 添加 -> 配置元件 -> CSVDataSetConfig
文件名:data.txt 绝对路径
文件编码:utf-8
变量名称:project,img
消费测试数据,用 ${project} 和 ${img}
3:编写采样器
线程组右键 -> 添加 -> 采样器 -> http请求
服务器名称orIP:127.0.0.1
path:/images/${project}/${img}
4:新建结果集
新建结果树视图:线程组右键 - add - Listener - ViewResultsTree - 填写Name&comments
新建结果统计报表视图:线程组右键 - add - Listener - ViewSummaryReport - 填写Name&comments
5:开始测试
200个线程,每一个线程运行10次,共请求2000次,线程轮询从测试数据集中获取参数。先保存,然后点击运行按钮,或者Ctrl + r 。
结果树收集的内容,根据请求不通返回不同的图片,
结果报表内容,统计请求结果
HTTPRequest:采样器名为HTTPRequest的请求结果报表
总体:若有多个采样器,这里会统计所有数据,当前例子中总体和HTTPRequtst 的数据一致。
样本:总请求数
大家在测试的时候,可将127.0.0.1换成10.30.63.181进行测试。
五、拓展
1:JMerer 如何进行自动化测试,如调用登录接口获取token ,根据token测试查询用户列表接口,根据返回的用户id测试获取用户详情接口。
2:LoadRunner
3:Gatling
六、引用
官网:https://jmeter.apache.org/index.html
腾讯云云社区:https://cloud.tencent.com/developer/article/1552891?from=article.detail.1552896
阿里云开发者社区:https://developer.aliyun.com/article/535879