性能测试工具-JMeter
官网: https://jmeter.apache.org/
安装JMeter
Windows下安装
1.安装JDK
下载地址: https://www.oracle.com/java/technologies/downloads/#jdk22-windows
执行java -version
查看版本
2.安装JMeter
下载地址: https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.zip
下载到本地目录解压,到bin目录下,双击执行ApacheJMeter.jar
或jmeter.bat
Linux下安装
# 1.安装JDK
wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz
tar zxvf jdk-22_linux-x64_bin.tar.gz
vi .bashrc
export JAVA_HOME=/home/inst01/jdk-22.0.1
export PATH=$JAVA_HOME/bin:$PATH
source .bashrc
# 验证安装
java -version
# 2.安装JMeter
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz
tar zxvf apache-jmeter-5.6.3.tgz
vi .bashrc
export JMETER_HOME=/home/inst01/apache-jmeter-5.6.3
export PATH=$PATH:$JMETER_HOME/bin
source .bashrc
# 验证安装
jmeter -v
简单性能测试
测试步骤:
- 构建测试计划
- 运行性能测试
- 分析性能测试
1.构建测试计划
先用flask构建一个api当作测试对象
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/test', methods=['POST'])
def api_test():
return jsonify({'result': 'success'})
if __name__ == '__main__':
app.run(debug=True, host='127.0.0.1', port=5166)
1. 测试计划-添加-线程(用户)-线程组
线程数,模拟的用户数。比如10个线程就代表10个用户。
Ramp-Up时间(秒),创建完所有线程的时间。比如10秒,就意味着JMeter在10内启动10个线程。
循环次数,每个线程的执行次数。比如10个线程,循环10次,总共会执行100次。
2. 线程组-添加-取样器-HTTP请求
web服务器
协议: http
服务器名称或IP: 127.0.0.1
端口号: 5166
HTTP请求:POST
路径: /api/test
3. 线程组-添加-监听器-查看结果树
单个请求的结果
4. 线程组-添加-监听器-汇总报告
总体请求的成功率
2.运行性能测试
点击"启动"进行测试
3.分析性能测试
可以在"查看结果树"和"汇总报告"看到结果。
其它常用
1.模拟多个用户
模拟多个用户并发请求
-
使用CSV Data Set Config
- 在线程组右键-添加-配置元件-CSV数据文件设置
- 选择包含用户数据的CSV文件
- 变量名称设置成
username
-
在HTTP请求中引用变量
- 在HTTP请求中使用
${username}
引用CSV文件中的数据
- 在HTTP请求中使用
2.参数传递
将前一个请求的响应数据传递给后一个请求
-
添加正则表达式提取器
- 右键点击HTTP请求-添加-后置处理器-正则表达式提取器
- 正则表达式,例如
"sessionId":"(.*?)"
- 引用名称,例如
session_id
-
在后续请求中使用提取的变量
- 在HTTP请求中使用
${session_id}
引用提取的会话ID
- 在HTTP请求中使用
Linux环境下测试
先在本地创建测试计划,将测试计划文件上传到服务器上
jmeter -n -t test_plan.jmx -l result_file.jtl -e -o test_result_folder
# -n: 表示非GUI模式
# -t: 用于指定测试计划文件
# -l: 用于指定结果文件
# -e: 表示测试完成后生成报告
# -o: 指定报告生成的目录
JMeter配置成中文
修改jmeter.properties
文件,将
#language=en
修改成
language=zh_CN
然后重启jmeter
参考资料:
1.https://github.com/Flying9001/Notes/blob/master/Software/DevelopTools/Windows/7.3.windows.jmeter.md