文章目录
前言
在接口开发完成后,需要对接口的性能做测试,QPS,吞吐量这些性能指标需要量化,经过技术调研,采用jmeter完成线下线上的压力测试。(接口的功能测试,推荐使用apifox)
一、Jmeter是什么?
Apache JMeter™应用程序是开源软件,一个 100% 纯 Java 应用程序,旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的,但后来扩展到其他测试功能。
二、下载安装
官方下载地址:https://jmeter.apache.org/download_jmeter.cgi
1.macbook pro 本地安装
1.1采用homebrew安装
- 快速安装brew
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
- 安装jmeter
(base) valley@wensMacBook-Pro ~% brew install jmeter
- 查看安装版本
(base) valley@wensMacBook-Pro ~% jmeter -v
WARNING: package sun.awt.X11 not in java.desktop
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___|||| ____||| \/| ____|_ _| ____| _ \
/ _ \ ||_)/ _ \||||_|| _| _ |||\/|| _|||| _|||_)|/ ___ \| __/ ___ \ |___| _ ||___ ||_||||||___ ||||___| _ </_/ \_\_|/_/ \_\____|_||_|_____| \___/|_||_|_____||_||_____|_| \_\ 5.4.3
Copyright (c)1999-2021 The Apache Software Foundation
- 启动jmeter
(base) valley@wensMacBook-Pro bin % jmeter
WARNING: package sun.awt.X11 not in java.desktop
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file]-l [results file]-e -o [Path to web report folder]& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
- 遇到问题 - 当保存jmx等文件时报错如下
Uncaught Exception java.lang.IllegalAccessError: class com.github.weisj.darklaf.ui.filechooser.DarkFilePaneUIBridge$DetailsTableModel (in unnamed module @0x341b80b2) cannot access class sun.awt.shell.ShellFolder (in module java.desktop) because module java.desktop does not export sun.awt.shell to unnamed module @0x341b80b2 in thread Thread[AWT-EventQueue-0,6,main]. See log file for details.
- 解决办法 打开JMeter->选项->外观->选择其他主题(darklaf相关主题存在问题,可以设置为Nimbus)
1.2采用压缩包直接安装
2.Linux 线上安装
2.1采用压缩包直接安装
下载地址:https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
三、创建测试计划实现并发压力测试
1.创建线程组
- 配置当前采样错误后后续采样的行为
- 配置线程属性- Number of Threads(users):并发用户数- Ramp-up period(seconds):决定多长时间启动所有线程,0代表同时并发.一般设置ramp-up=线程数启动,并上下调整到所需的. 总之,是否能确定一个适当的ramp-up time 取决于以下两条规则:第一个取样器的点击率(hit rate)是否接近其他取样器的平均值,从而能否避免ramp-up period 过小。在最后一个线程启动时,第一个线程是否在真正结束了,最好二者的时间要尽可能的长,以避免ramp-up period过大。- Loop Count 循环次数以下截图为100QPS配置
2.创建请求
- 配置请求http IP port method path等
2.1创建请求头
- 配置请求头
2.2创建View Results Tree
- 添加View Results Tree,主要是可以看到每个采样请求的结果,配合断言,更清楚的看到请求成功或者失败
2.3创建Summary Report
- 添加Summary Report,运行后的结果指标如下:
2.4创建Aggregate Report
- 添加Aggregate Report,运行后的结果指标如下:
2.5创建Graph Results
- 添加Graph Results,运行后的结果指标如下:
2.6创建Constant Throughput Timer
2.7创建JSON Assertion
3.导出jmx文件
4.线上运行
- 进入JMeter安装目录下 ,并以命令方式执行脚本
- 命令格式:./bin/jmeter -n -t .jmx文件(脚本) -l .jtl文件(测试运行结果文件) 参数说明: -n表示以nogui方式运行测试计划 -t表示测试计划,后面跟测试计划名称 -l表示测试结果,后面跟测试结果文件名称
./bin/jmeter -n -t /home/test_code/adx_plan001.jmx -l /home/test_result/test0311.jtl
5.线下分析
将test08131505.jtl导入测试计划查看结果即可。
四、QPS配置说明
20QPS配置
- Constant Throughput Timer设置: - In sample per minute :1200
- 线程组设置: - 线程数:20- 准备时长: 10- 循环次数:10
40QPS配置
- Constant Throughput Timer设置: - In sample per minute :2400
- 线程组设置: - 线程数:40- 准备时长: 10- 循环次数:10
80QPS配置
- Constant Throughput Timer设置: - In sample per minute :4800
- 线程组设置: - 线程数:80- 准备时长: 10- 循环次数:10
注意:真实情况下由于准备时长设置的偏差,QPS会有一些偏差,但是根据聚合报告中的95%响应时间和吞吐量可以衡量服务的性能情况。
总结
以上就是今天要讲的内容,本文主要是介绍Jmeter安装,创建接口测试计划,以及对接口的不同QPS压力测试的配置。
版权归原作者 blackoon88 所有, 如有侵权,请联系我们删除。