一、JMeter准备工作
1、JMeter介绍
Apache JMeter 应用程序是开源软件,是一个 100% 纯 Java 应用程序。用于测试Web应用程序、API和其他网络协议的性能。它具有以下特点:
1. 开源免费:JMeter是Apache软件基金会下的一个开源项目,它被称为Apache JMeter。
2. 基于Java开发:JMeter是基于Java开发的工具,因此在使用JMeter之前,需要确保已经安装了JDK 1.8或更高版本。
3. 跨平台:JMeter是一个跨平台的工具,可以在Windows和Linux等操作系统上运行。
4. 支持多种协议:JMeter支持测试多种网络协议,包括HTTP、HTTPS、FTP、SOAP、REST、JDBC等,使其适用于各种类型的应用程序和服务。
5. 插件生态系统:JMeter具有丰富的插件生态系统,可以根据需要安装和使用额外的监听器、采样器、断言和其他实用工具,扩展其功能和测试能力。
6. 分布式测试:JMeter支持分布式测试,可以将负载分散到多台机器上,以模拟更大规模的并发用户,提供更准确和可扩展的性能测试结果。
2、下载安装JMeter
下载地址:Apache JMeter - Download Apache JMeter
在下载JMeter文件时,"Binaries"和"Source"是两个不同的选项,它们之间有一些区别:
- Binaries(二进制文件):这是已经编译和构建好的JMeter可执行文件。如果你只是想使用JMeter进行性能测试,那么推荐下载二进制文件。
- Source(源代码):这是以Java编写的JMeter源代码文件。如果你要对JMeter进行二次开发,那么下载源代码是一个好的选择
Apache JMeter是一个开源的负载测试工具,您可以根据您的操作系统选择相应的文件:
- 如果您正在使用Windows操作系统,您可以下载并使用"apache-jmeter-5.6.2.zip"文件。
- 如果您正在使用类Unix或Linux操作系统,您可以下载并使用"apache-jmeter-5.6.2.tgz"文件。
由于我要在window系统使用jmeter,这里我下载的是"apache-jmeter-5.6.2.tgz"文件:apache-jmeter-5.6.2.zip
3、JMeter运行模式
JMeter提供两种运行模式:GUI模式和CLI模式。
- GUI模式(图形用户界面模式)是JMeter的默认模式。在GUI模式下,您可以使用JMeter的图形界面创建、配置和运行性能测试计划。通过可视化的界面,您可以添加测试元素、设置参数、运行测试并查看实时结果。这种模式适合于交互式地创建和编辑测试计划,以及进行实时监控和分析测试结果。
- CLI模式(命令行界面模式)是在命令行下运行JMeter的模式。通过CLI模式,您可以使用命令行选项来配置和运行JMeter,而无需使用图形界面。CLI模式适合于在服务器环境下运行测试,或者用于自动化测试脚本。您可以使用命令行选项来指定测试计划文件、结果输出文件、线程数等参数,以及设置其他运行选项。
4、GUI模式启动JMeter
要启动 jmeter需要先部署jdk环境,详见:JDK和JRE的区别和环境变量配置
之后按照以下步骤进行操作:
- 对 "apache-jmeter-5.6.2.zip" 压缩文件进行解压缩。
- 进入解压缩后的 bin目录。
- 执行命令"jmeter.bat"来启动 JMeter。
也可以直接执行bin目录下的ApacheJMeter.jar文件来启动jmeter。
5、JMeter中文汉法
启动jmeter很容易发现显示的是英文环境,也可以通过设置来显示为中文。
方法1:Options --> Choose Language --> Chinese
注意:这种方法设置的只能在当前界面生效,下次启动jmeter仍是默认为英文。
方法2:\apache-jmeter-5.4.1\bin\ 目录下修改 jmeter.properties文件,设置默认语言为language=zh_CN
再次启动jmeter发现显示的是中文了。
二、测试计划元素组件
JMeter测试计划通常包含以下几个主要的元素组件:
- 线程组(Thread Group):线程组定义了测试中要模拟的用户数量、循环次数和启动延迟等参数。它是测试计划中最基本的元素,其他组件都是在线程组的上下文中执行。
- 取样器(Sampler):取样器用于发送请求并模拟用户与被测试应用程序之间的交互。它可以发送不同类型的请求,如HTTP请求、FTP请求、数据库请求等。
- 逻辑控制器(Logic Controller):逻辑控制器用于定义测试脚本的逻辑流程和执行顺序。
- 配置元件(Config Element):配置元件用于设置请求的参数或处理测试环境的特定设置。例如,HTTP Cookie管理器用于处理HTTP请求中的Cookie,HTTP Header管理器用于设置HTTP请求的头信息。
- 监听器(Listener):监听器用于收集和显示测试结果。它可以以不同的形式展示结果,如表格、图表、树形结构等。
- 定时器(Timer):定时器用于模拟用户之间的间隔时间。可以设置固定延迟、随机延迟或根据特定算法生成延迟时间。
- 前置处理器(Pre-Processor):前置处理器在每个取样器之前执行,可以对请求进行修改或设置一些前置条件。
- 后置处理器(Post-Processor):后置处理器在每个取样器之后执行,用于处理服务器的响应结果。可以提取关键信息、对响应进行断言或转换等操作。
- 断言(Assertion):断言用于验证服务器响应是否符合预期。可以检查响应的内容、响应时间、响应代码等。
这些元素组件可以根据测试需求进行组合和配置,以构建完整的JMeter测试计划。
选中测试计划或者线程组,鼠标右键查看可以添加的组件信息。
1、线程组(Thread Group)
线程组(Thread Group)是任何测试计划的起点。所有控制器和采样器必须位于线程组下。其他元素(例如监听器)可以直接放置在测试计划下,在这种情况下,它们将应用于所有线程组。顾名思义,线程组元素控制 JMeter 将用于执行测试的线程数。每个线程将完整地执行测试计划,并且完全独立于其他测试线程。多个线程用于模拟与服务器应用程序的并发连接。
线程组配置页面如下:
JMeter线程组有以下三个属性:
- Number of Threads (users):表示并发用户数,即同时模拟的用户数量。可以设置为固定值或根据测试需求进行动态调整。
- Ramp-Up Period:表示启动所有线程所需的时间。它指定了线程组中的线程逐渐启动的时间间隔。例如,如果设置为5秒,并发用户数为10,那么每秒将启动2个线程,直到达到总共的10个线程。
- Loop Count:表示线程组要执行的循环次数。可以设置为固定次数或选择"Forever"表示无限循环。
这些属性可以根据测试需求进行配置,以模拟不同的并发用户行为和负载情况。
需要特别注意的是:
Ramp-Up时间要根据测试需求和目标来进行选择。可以从 Ramp-up = 线程数开始,然后根据需要向上或向下调整。如果你有大量的并发用户,可以选择较短的 Ramp-Up 时间,例如线程数的一半或四分之一,以快速达到高峰负载。如果你希望逐渐增加用户并观察系统在不同负载下的性能表现,可以选择较长的 Ramp-Up 时间,例如线程数的两倍或更多。
2、取样器(Sampler)
取样器(Sampler)是JMeter中用于发送请求并模拟用户操作的测试元素。它用于模拟不同类型的用户请求,例如发送HTTP请求、FTP请求、JDBC请求等,以便测试目标系统的性能和功能。
JMeter提供了多种取样器,常见的几种类型包括:
1. HTTP请求(HTTP Request):用于发送HTTP请求到目标服务器,可以设置请求方法(GET、POST等)、URL、请求头、请求参数等。
2. FTP请求(FTP Request):用于执行FTP相关操作,如上传文件、下载文件、删除文件等。
3. JDBC请求(JDBC Request):用于执行JDBC数据库操作,如执行SQL查询、插入、更新等。
4. TCP请求(TCP Sampler):用于发送TCP请求,可以自定义请求内容和目标服务器地址。
5. SMTP请求(SMTP Sampler):用于发送电子邮件,可以设置邮件主题、收件人、发件人等。
取样器通常与线程组结合使用,在每个并发用户线程中执行具体的请求操作。通过合理配置取样器,你可以模拟出不同类型的用户请求,测试目标系统在不同负载和压力下的性能和可靠性。
取样器配置页面如下:
3、逻辑控制器(Logic Controller)
4、配置元件(Config Element)
5、监听器(Listener)
6、定时器(Timer)
7、前置处理器(Pre-Processor)
8、后置处理器(Post-Processor)
9、断言(Assertion)
三、制定测试计划
添加元素组件
配置元素组件
保存测试计划
运行测试计划
终止测试计划Stop 、Shutdown
reference:
Apache JMeter - User's Manual