Jmeter性能测试
一、Jmeter介绍
官网:Jmeter
Apache JMeter是Apache组织开发的基于Java的开源压力测试工具。用于对软件做压力测试。
Apache JMeter的功能包括:
- 能够加载和性能测试许多不同的应用程序/服务器/协议类型:
1、网络-HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET等)
2、SOAP / REST Web服务
3、FTP
4、通过JDBC的数据库
5、LDAP
6、通过JMS的面向消息的中间件(MOM)邮件-SMTP(S),POP3(S)和IMAP(S)
7、本机命令或Shell脚本
8、TCP协议
9、Java对象 - 功能齐全的Test IDE,可进行快速的Test Plan 记录(来自浏览器或本机应用程序),构建和调试。
- CLI模式(命令行模式(以前称为Non GUI)/无头模式)可从任何Java兼容的操作系统(Linux,Windows,Mac OSX等)加载测试
- 完整且随时可以呈现的动态HTML报告
- 通过从大多数流行的响应格式,HTML,JSON, XML或任何文本格式中提取数据的能力,轻松实现关联
- 完全的可移植性和100%Java纯度。
- 完整的多线程框架允许通过多个线程进行并发采样,并通过单独的线程组同时对不同的函数进行采样。
- 缓存和脱机分析/重放测试结果。
- 高度可扩展的核心:
1、可插拔采样器允许无限的测试功能。
2、可脚本化的采样器(与Groovy和BeanShell 等JSR223兼容的语言)
3、可以通过可插入计时器选择几个负载统计信息。
4、数据分析和可视化插件可实现出色的可扩展性和个性化。
5、函数可用于为测试提供动态输入或提供数据处理。
6、通过针对Maven,Gradle和Jenkins的第三方开源库轻松进行持续集成。
二、准备工作-安装
2.1、依赖jdk,jdk安装
JMeter与Java 8或更高版本兼容。
- 下载
下载方式一:官网下载地址.
嫌注册下载麻烦的可以使用方式二获取
根据自己的使用环境,下载对应的jdk:
下载方式二:
链接:https://pan.baidu.com/s/1cOVLkxLH5_cHrigg3AxoBQ
提取码:kgi9
- 安装下载的JDK
- 配置系统环境变量
新建变量名:JAVA_HOME ,变量值为 jdk 的安装路径。
新建变量名:CLASSPATH ,变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
找到Path变量,双击编辑 Path变量
在值得最后增加;%JAVA_HOME%\bin
验证是否安装配置正确
打开cmd,输入java -version
2.2、JMeter安装
链接: 官网下载地址.
下载完成后解压zip包
进入apache-jmeter-5.2.1\bin,双击jmeter.bat
三、JMeter中常用功能释义
JMeter里面的元件很多,逻辑控制器,配置元件,定时器,Sampler,监听器等等,先给出一个实例,慢慢了解元件的使用方法。测试一个网站,我们至少需要:用户,发送请求,查看结果这三个过程。
3.1、测试计划
本节描述测试计划的不同部分。
最少的测试将包括测试计划,线程组和一个或多个采样器。
测试计划对象具有一个称为“ 功能测试 ” 的复选框。如果选择该选项,它将使JMeter记录每个样本从服务器返回的数据。如果您在测试侦听器中选择了文件,则此数据将被写入文件。如果要进行少量运行以确保正确配置JMeter并确保服务器返回预期结果,这将很有用。结果是文件将快速增长,JMeter的性能将受到影响。如果要进行压力测试,则应禁用此选项(默认情况下处于禁用状态)。
如果您没有将数据记录到文件中,则此选项没有区别。
您还可以使用侦听器上的“ 配置”按钮来确定要保存的字段。
3.2、线程组
线程组元素是任何测试计划的起点。所有控制器和采样器必须在线程组下。其他元素(例如,侦听器)可以直接放在测试计划下,在这种情况下,它们将应用于所有线程组。顾名思义,线程组元素控制JMeter将用于执行测试的线程数。线程组的控件使您可以:
设置线程数
设置加速时间
设置执行测试的次数
每个线程将完整地执行测试计划,并且完全独立于其他测试线程。多个线程用于模拟与服务器应用程序的并发连接。
加速期告诉JMeter将“加速”到所选线程的总数需要多长时间。如果使用了10个线程,并且启动周期为100秒,那么JMeter将花费100秒来启动和运行所有10个线程。每个线程将在上一个线程开始后10(100/10)秒开始。如果有30个线程,启动周期为120秒,则每个连续线程将延迟4秒。
升级需要足够长的时间,以避免在测试开始时工作量过大,还应足够短,以使最后一个线程在第一个线程完成之前开始运行(除非有人希望这样做)。
从“ Ramp-up =线程数”开始,然后根据需要向上或向下调整。
默认情况下,线程组配置为在其元素之间循环一次。
线程组还提供了一个调度程序。单击“线程组”面板底部的复选框以启用/禁用其他字段,您可以在其中输入测试持续时间,启动延迟,运行的开始和结束时间。您可以配置持续时间(秒)和启动延迟(秒)来控制每个线程组的持续时间以及启动后的秒数。当测试开始时,JMeter将在启动线程组的线程之前等待启动延迟(秒),然后运行配置的持续时间(秒)。请注意,这两个选项会覆盖“ 开始时间”和“ 结束时间”。
另外,您也可以使用其他两个字段Start time和End time(尽管不建议这样做,因为它不太灵活)。测试开始时,如有必要,JMeter将等待直到达到启动时间。在每个周期的末尾,JMeter会检查是否已达到结束时间,如果已结束,则运行将停止,否则,将允许测试继续进行直到达到迭代限制。
四、如何使用JMeter
4.1、切换中英文模式
4.2、添加‘测试计划’
具体操作:添加测试计划,并且可以自定义计划名称
4.2.1、在‘测试计划’中添加‘线程组’
线程组名自定义,可以根据业务来命名。
比如:这里我设置10个线程,一直循环发请求
4.2.2、在‘线程组’中添加‘HTTP请求’
一般会添下面的一些内容,路径填写请求ur中l除了ip+port的后面的部分,举例:
4.2.3、在‘线程组’中添加‘HTTP信息头管理器’
举例:
4.2.4、在‘线程组’中添加‘查看结果树’
发送请求的响应结果,会在这里显示
示例:
4.2.4、在‘线程组’中添加‘图形结果’
4.2.5、在‘线程组’中添加‘聚合报告’
4.3、执行
你还可以根据自己的需要添加别的功能进来。添加设置完后,执行
示例
4.4、定制
4.4.1、配置“线程组”间串行
举例:执行完“线程组1”内的所有请求才执行“线程组2”下面的所有请求
4.4.2、添加”临界部分控制器”控制线程组同一时间只能执行一个
临界部分控制器根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景
和5.1.1的差别是:可能会出现“线程组1 :请求1.1“—–》“线程组2:请求2.1”—-》“线程组2 :请求2.2“—–》“线程组1:请求1.2”这种顺序。
二、常见报错解决办法
如果安装的JDK版本过高在使用jemter时可能会出现下面的报错:
Uncaught Exception java.lang.IllegalAccessError: class com.github.weisj.darklaf.ui.filechooser.DarkFilePaneUIBridge$DetailsTableModel (in unnamed module @0xd83da2e) cannot access class sun.awt.shell.ShellFolder (in module java.desktop) because module java.desktop does not export sun.awt.shell to unnamed module @0xd83da2e in thread Thread[AWT-EventQueue-0,6,main]. See log file for details.
Uncaught Exception java.lang.NoClassDefFoundError: Could not initialize class org.apache.jmeter.gui.util.FileDialoger in thread Thread[AWT-EventQueue-0,6,main]. See log file for details.
解决办法:
apache-jmeter-5.4.3\bin\jmeter.bat文件,增加一段 –add-opens java.desktop/sun.awt.shell=ALL-UNNAMED,然后重新启动即可
今天的文章【性能测试】JMeter性能测试(一)-入门篇分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7482.html