1.jmeter介绍
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
2. jmeter安装
2.1环境准备
jmeter依赖jdk运行环境,所以首先需要安装jdk,并配置环境变量
jdk安装包:
JDK1.8下载与安装(完整图文教程含安装包)
2.2设置jdk环境变量
右键桌面上“我的电脑”>>“属性”,在弹出的页面上点击“高级系统设置”。
在弹出的“系统属性”窗口中“高级”标签页下点击“环境变量”按钮。
在弹出的“环境变量”窗口中,点击下方的“新建”按钮,在弹出的“新建系统变量”窗口中,新建一个名为“JAVA_HOME”的环境变量,变量值为Java的安装路径,本人为:D:\project\tool\Java\jdk_9.0.1。如图所示。
设置Path环境变量,该变量已经存在,所以在列表中选择Path,点击下方的“编辑”按钮,在弹出的窗口中添加如下信息:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,然后点击“确认”按钮即可。如图所示:
和JAVA_HOME一样,新建一个名为“classpath”的环境变量,变量值为:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。如图所示:
在配置好环境变量后,可以进入cmd中检查Java是否安装正确,检查的命令为 java -version,如图所示:
如果能正确的输出Java的版本和JVM版本信息,则说明Java安装正确。
2.3:jmeter安装包下载
JMeter - 下载安装教程(Windows/macOS/Linux)
2.4:配置jmeter环境变量
配置JMETER_HOME
将JMETER_HOME配置到path
配置好jmeter环境变量后,可以直接在cmd窗口输入 jmeter 启动jmeter
或者直接在运行窗口输入:Jmeter,即可启动
jmeter启动界面:
更改为中文:
进入jmeter后,选中【options】-【choose language】-【chinese(simplified)】即可更改为简体中文
3.jmeter接口测试示例
3.1 测试示例
右键选中【test plan】选中【添加】-【线程(用户)】-线程组
右键选中【线程组】选中【添加】【取样器】【http请求】
进入http请求界面,蒋接口信息填写至http请求界面
接口信息输入完成后可以选中【http请求】,添加【监听器】【查看结果树】
信息输入完成后点击最上方菜单栏【发送】按钮发送http请求
进入【查看结果树】查看运行结果,也可以在结果树中将响应语言更改为你需要的语言
3.2 其他实用的配置元件
【响应断言】添加后可以自动判断响应的内容是不是需要的内容,不符合就会在结果树中报错
【断言结果】可以直观的看到响应断言的结果
【用表格查看结果】适用于压测时更直观展示多次请求的请求结果
【HTTPcookie管理器】发送需要cookie的接口请求时可以添加设置所需的cookie
3.3 常用小功能
【禁用】测试计划中包含多个接口请求时,可以通过【禁用】关闭不需要的接口或配置元件
【清除】发送多个接口请求后,将之前的响应接口清空
4.jmeter进行简单的压力测试
4.1 对请求次数和线程数进行设置
线程数:相当于多个用户
请求次数:相当于每个用户的执行次数
4.2 对请求参数进行参数化设置
准备一个记录好请求参数的csv格式的文件 如下图所示
添加 CSV Data Set Config至线程组
将变量名及文件路径填写至输入框 (需注意:变量名称需与表格中的内容对应)
将接口中的请求参数变更为之前设置的变量名 格式为:${变量名}
4.3 添加【聚合报告】及【用表格查看结果】 执行压力测试并分析测试结果
聚合报告:更宏观的查看所有请求总计的各种数据
用表格查看结果:可以查看每次请求的各种数据
Sample#:每个请求的序号。
Start Time:每个请求开始时间。(时:分:秒.毫秒)
Thread Name:每个线程的名称(线程序号-第N次循环次数)。
Label:每个请求的自定义名称(无修改时默认显示请求类型,如Http,FTP等请求)。
Sample Time(ms):每个请求的响应时间。(单位:毫秒)
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:响应的字节数,请求的字节数。
Sent Bytes:发送的字节数。
Latency:延迟的时间,等待时长。(单位:毫秒)
Connect Time(ms):连接服务器的时间。(单位:毫秒)