使用和安装Jmeter压力测试工具
Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。
「注意:我们需要在windows上使用jmeter 界面来调试及生成测试(.jmx)文件,然后再以命令行模式进行 jmeter 命令进行压测」
❝为什么要用命令行运行Jmeter? 1、NON GUI模式能大大缩减所需要的系统资源;GUI模式,会会消耗大量的内存资源,容易使压力机本身达到瓶颈,从而影响测试结果。 2、GUI模式,不能支持大型的负载测试与性能测试,并发超大时,JMeter会崩溃。 ❞
安装
windows 安装 JDK
JMeter是Java程序, 需要先安装JDK来运行它。此处使用 JDK8 版本。
- 官网下载:Java Downloads | Oracle
- 找到下载安装包的目录,双击安装包进入安装向导。
后续直接下一步,安装即可,如果需要更改安装位置则自己新建个jdk1.8.0、jre1.8.0 目录安装。
- 配置环境变量
在环境变量-》系统变量
- 新建变量名
JAVA_HOME
,变量值是JDK
安装路径
- 新建变量CLASSPATH,变量值是
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
- 找到Path变量,双击变量值编辑,新建变量值为
%JAVA_HOME%\bin
- 校验是否配置成功
cmd ,输入 java -version
即可查看到当前配置的版本号,则证明配置成功
windows 安装 jmeter
- 官网下载:Download Apache JMeter
❝在 Binaries 下面的 JMeter 程序压缩包文件 下载列表,点击 apache-jmeter-5.x.x.zip 这样的下载链接,下载到一个合适的目录,我这里是 D:\tools 目录下。 ❞
- 然后解压该文件,选择解压到当前目录,即出现一个名为 apache-jmeter-5.4.1 的目录,进入到该目录中,再进入到名为bin的目录。
- 如果是Windows系统:双击名为 jmeter.bat 的文件,即可打开JMeter管理界面程序。
- 如果是Mac系统,在命令行窗口中,进入到jmeter的bin目录,执行命令
sh jmeter.sh
- 配置环境变量如下
- 新建变量名
JMETER_HOME
,变量值是jmeter
安装路径 - 修改 classpath,追加内容
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;
linux 安装 JDK
本次环境为centos7+jdk8
- CentOS系统会自带jdk但是执行javac会失败,所以需要把自带的卸载掉重新安装
- 查看系统是否安装过java yum list installed | grep java
- 如果有旧版本的java,可以用如下方法卸载java yum -y remove java-1.8.0-openjdk*
- 查看java软件包列表 yum -y list java*
- 下载安装java1.8的所有软件包,中途需要输入y来确认下载。yum install java-1.8.0-openjdk*
- 安装成功,输入如下命令检查是否安装成功,如果返回正确的版本号则表示安装成功 java -version
- 环境变量的配置 使用yum安装的java的默认安装路径在 /usr/lib/jvm,我们可以看到这个目录里只有两个目录,其中一个是java-1.8.0-openjdk,查看这个目录,可以找到其下的bin目录,并找到java和javac命令。所以将JAVA_HOME指向这个目录。(备注:export 与JAVA_HOME之间有且只有一个空格)
需要修改/etc/profile文件,添加JAVA_HOME
编辑/etc/profile
#set java environment
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
#使配置生效
. /etc/profile
- 验证java是否安装成功
- 验证JAVA_HOME
echo $JAVA_HOME
- 验证java安装是否成功
java -version
- 验证jdk是否安装成功
javac
linux 安装 jmeter
- 下载:Index of /dist/jmeter/binaries
下载好对应的版本直接到 linux 解压就好,要提前装好java环境。
- 检查linux系统上是否安装JDK,输入命令
java -version
- 上传 apache-jmeter-5.2.5.tgz 至linux服务器
- 使用命令 tar -zxvf apache-jmeter-5.2.5.tgz 解压文件
- 配置 jmeter 环境变量
- 使用命令
vim /etc/profile
打开配置文件
export JMETER_HOME=/usr/local/software/apache-jmeter-5.5
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
#使配置生效
. /etc/profile
- 进入 jmeter 下bin 目录中,
chmod +x jmeter
赋予权限 -
./jmeter -v
查看jmeter是否正确安装
使用
在 jmeter 目录下的bin目录中双击运行 jmeter.bat 来启动
配置选项
我们可以在节目选项中来设置语言、界面外观风格、字体大小等。
接口测试
- 左侧的 Test Plan,中文翻译为测试计划,可以理解为一个测试用例,我们可以给这个用例来命名。
- 添加线程组
右键测试计划来添加线程组,可以给线程组重命名,通过线程组来设置线程数、所有线程执行的时间等信息:
❝参数说明:
- 线程数:模拟请求的次数;
- Ramp-Up时间(秒):所有线程执行的时间,比如:配置了 2 秒,线程数配置了 50,要在 2 秒内执行 50 次请求;
- 循环次数:要轮询执行几次;
- 调度器
- 持续时间(秒):就是本次执行的线程持续多长时间;
- 启动延迟(秒):本次执行的线程启动要延迟多长时间执行;
❞
- 接下来,我们开始配置具体需要测试的接口地址。
在线程组上右键,选择添加-》取样器-》HTTP请求
填上测试接口信息:
- 设置配件元件 ,可以设置HTTP请求的基本信息,如 http 信息头管理器、http Cookie 管理器、 http缓存管理器、http请求默认值,需要根据自己的接口来设置不同的参数。
- 配置监听器,可以添加 汇总报告、聚合报告、查看结果树
- 汇总报告:可以查看接口的最大、最小、平均请求值,可以看接口的异常率、吞吐量、接口、发送、平均字节数等信息:
- 聚合报告:可以查看接口请求最大、最小、平均值、异常率、吞吐量等信息:
- 查看结果树:查看每个请求成功与否。可以配置每个请求的日志输出路径,以什么格式的文件输出:
参数意义:
❝
- Connect Time :
- jmeter 和 被测系统 建立 TCP 连接的时间,包括3次握手时间,如果连接复用, 值为0
- lantency:
- 从发出请求前 到 接收完第一个响应的时间
- loadtime(以前叫Elapsed time):
- 从发出请求前 到 接收完所有响应的时间
- 如果是长消息, 往往时长 >= lantency,因为有多个响应
- Size in bytes :
- 整个消息消息大小 = Headers size in bytes + Body > size in bytes
- Headers size in bytes : 响应消息头大小
- Body size in bytes : 响应消息体大小
❞
命令行模式 运行
我们通过上面的测试用例来调试没问题后,保存生成 .jmx 测试文件,最后来以命令行模式下运行。
这里以windows 为例,cmd 终端运行:
jmeter -n -t demo.jmx -l result.jtl
注意,jmeter 我们在安装的时候配置了环境变量,否则需要在安装路径下运行,如:
D:\tools\apache-jmeter-5.5\bin\jmeter -n -t demo.jmx -l result.jtl
命令行参数释义
-n 非GUI模式 -> 在非GUI模式下运行JMeter
-t 测试文件<参数> ->要运行的jmeter测试(.jmx)文件
(若命令行模式在bin/文件夹下,则可以使用相对路径,否则使用绝对路径)
-l 日志文件<参数> ->生成的日志文件,指定结果文件路径 (同上)
-j 指定日志文件路径 (同上)
-o 指定报表文件路径(同上)
-R 指定远程服务器列表
-g 制定csv测试结果文件路径(同上)
-e 测试完成生产报表
-r 设置分布式执行
-H 设置JMeter设置代理服务器IP或域名
-P 设置JMeter代理服务器端口号
-h 打印使用信息并退出
dashboard 产生图表
使用生成的jmeter测试结果日志文件 .jtl,来生成HTML性能测试报告:
jmeter -g result.jtl -o report
命令行参数释义
# -g:后跟 result.jtl文件所在的路径
# -o:后跟生成的HTML文件存放的路径,路径目录可以不存在,或者为空,否则jmeter怕覆盖其中内容而报错
通过以上命令便可生成图表,我们通过浏览器打开 index.html 便可看到相关信息:
其中 APDEX (Application Performance Index) 里面的 T (Toleration threshold) 和 F (Frustration threshold) 可以通过 JMeter 工具 bin 目录下面的 user.properties 配置文件里面 这两个选项来设置:
jmeter.reportgenerator.apdex_satisfied_threshold
jmeter.reportgenerator.apdex_tolerated_threshold
图片及部分相关技术知识点来源于网络搜索,侵权删!
推荐阅读
-
实践中的软件测试技术:设计、工具和管理 - 第 2 章第 2.3 节 使用状态转换图设计测试用例
-
Navicat Premium 15 破解版激活工具和安装教程(已测试永久激活)
-
35 岁实现财务*,腾讯程序员手握2300万提前退休?-1000万房产、1000万腾讯股票、加上300万的现金,一共2300万的财产。有网友算了一笔账,假设1000万的房产用于自住,剩下1300万资产按照平均税后20-50万不等进行计算,大约花上26-60年左右的时间才能赚到这笔钱。也就是说,普通人可能奋斗一辈子,才能赚到这笔钱。在很多人还在为中年危机而惶惶不可终日的时候,有的人的35岁,就已经安全着陆,试问哪个打工人不羡慕?但问题是有这样财富积累必然有像样的实力做靠山。没有人可以不劳而获。 看到这里,肯定有人说,那么对于普通人来说,卷可能真就成了唯一的出路。但是卷也有轻松的卷,“偷懒”的卷法,对于程序员而言,刨除掉一时无法改掉的开会传统占用的大部分时间,如何把有限的时间和精力放在真正重要的架构设计、需求设计上,而不是重复的造*,编码、改bug、手动测试。因此在科技改变生活的今天,学会使用AI工具成为程序员们的必备技能。 以全栈式全自动的软件开发工具飞算SoFlu软件机器人为例,作为全球首款面向微服务架构设计和最佳实践的软件机器人,SoFlu软件机器人改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。 而作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 FuncGPT(慧函数)具有五大核心能力: ● 自然语言:通过自然语言即可生成函数,降低软件开发门槛。 ● 秒级函数开发:全自动秒级开发函数,秒级完成,效率千倍提升。 ● 一站式函数开发应用:函数生成即可直接应用,效率、安全有保障。 ● 质量可靠:生成的函数代码符合业界规范、具备良好的可读性,符合最优解。 ● 灵活生成:可以根据开发人员的具体需求生成并支持调整和修改。 以“将文件流转换为File对象”这个需求为例,以下是FuncGPT(慧函数)秒级生成的代码: / 类名:FileConverter // 函数名:convertStreamToFile // 函数功能:将文件流转换为File对象 // POM依赖包:无 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileConverter { /** * 将文件流转换为File对象 * @param inputStream 文件流 * @param filePath 文件路径 * @param fileName 文件名 * @return 转换后的File对象 * @throws IOException 如果发生I/O异常 */ public static File convertStreamToFile(InputStream inputStream, String filePath, String fileName) throws IOException { File file = new File(filePath + File.separator + fileName); // 创建File对象 try (FileOutputStream outputStream = new FileOutputStream(file)) { // 创建文件输出流 byte buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 从文件流读取数据并写入文件 outputStream.write(buffer, 0, bytesRead); } } return file; // 返回转换后的File对象 } } // 函数示例 // 将文件流转换为File对象示例 // 入参:inputStream,文件流 // 入参:filePath,文件路径 // 入参:fileName,文件名 // 出参:file,转换后的File对象 // 调用示例: // InputStream inputStream = new FileInputStream("example.txt"); // String filePath = "C:\\Users\\User\\Documents"; // String fileName = "example.txt"; // File file = FileConverter.convertStreamToFile(inputStream, filePath, fileName); // System.out.println(file.getAbsolutePath); // 输出结果:例如,将文件流转换为File对象后,文件的绝对路径为:C:\Users\User\Documents\example.txt // 则输出结果为:C:\Users\User\Documents\example.txt 通过分析,不难发现以上代码:
-
tcp] 安装和使用 TCP 测试工具 tcping安装和使用 TCP 测试工具 tcping
-
使用 apt-get 安装 telnet、curl、ifconfig、vim、ping 和其他工具的 Linux 环境 [翻译
-
使用 winzip 生成的扩展名为 -ZIP 的压缩文件通常使用".zip "扩展名,其 MIME 格式为 application/zip。(推荐学习:phpstorm) 目前,ZIP 格式属于几种主流压缩格式之一,其竞争对手包括 RAR 格式和开源的 7z 格式。 从性能对比来看,RAR 和 7z 格式比 ZIP 格式压缩率更高,而 7-Zip 由于提供免费压缩工具而逐渐在更多领域得到应用。 微软从 Windows ME 操作系统开始就内置了对 zip 格式的支持,即使用户没有在电脑上安装解压软件,也可以打开和创建 zip 格式的压缩文件,OS X 和流行的 Linux 操作系统也提供了类似的 zip 格式支持。 因此,如果要在网络上传播和分发文件,zip 格式往往是最常见的选择。
-
如何使用 Java 中的自动化测试工具实施持续集成和自动化测试?
-
安装过程]学习安装和使用 OllyDbg 工具
-
TscanCode C/C++ 静态分析开源分析工具的安装和使用
-
好工具推荐系列:MacPorts 在 macOS 中的安装和使用(含 qt4-mac 教程)