使用Jmeter进行功能和性能测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 使用Jmeter进行功能和性能测试

JMeter 快速入门

Jmeter 是一款基于 Java 开发的功能和性能测试软件。

🎁 本文编辑时的最新版本为:5.1.1

简介

Jmeter 是一款使用 Java 开发的功能和性能测试软件。

特性

Jmeter 能够加载和性能测试许多不同的应用程序/服务器/协议类型:

  • 网络 - HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET 等)
  • SOAP / REST Web 服务
  • FTP 文件
  • 通过 JDBC 的数据库
  • LDAP
  • 通过 JMS 的面向消息的中间件(MOM)
  • 邮件-SMTP(S),POP3(S)和 IMAP(S)
  • 本机命令或 Shell 脚本
  • TCP 协议
  • Java 对象

工作流

Jmeter 的工作原理是仿真用户向服务器发送请求,并收集服务器应答信息并计算统计信息。

Jmeter 的工作流如下图所示:

主要元素

Jmeter 的主要元素如下:

  • 测试计划(Test Plan) - 可以将测试计划视为 JMeter 的测试脚本 。测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。
  • 线程组(Thread Group)- 线程组的作用是:模拟大量用户负载的运行场景。
  • 设置线程数
  • 设置加速期
  • 设置执行测试的次数
  • 控制器(Controllers)- 可以分为两大类:
  • 采样器(Sampler) - 采样器的作用是模拟用户对目标服务器发送请求。 采样器是必须将组件添加到测试计划中的,因为它只能让 JMeter 知道需要将哪种类型的请求发送到服务器。 请求可以是 HTTP,HTTP(s),FTP,TCP,SMTP,SOAP 等。
  • 逻辑控制器 - 逻辑控制器的作用是:控制多个请求发送的循环次数及顺序等。
  • 监听器(Listeners) - 监听器的作用是:收集测试结果信息。如查看结果树、汇总报告等。
  • 计时器(Timers) - 计时器的作用是:控制多个请求发送的时间频次。
  • 配置元素(Configuration Elements) - 配置元素的工作与采样器的工作类似。但是,它不发送请求,而是提供预备的数据等,如 CSV、函数助手。
  • 预处理器元素(Pre-Processor Elements) - 预处理器元素在采样器发出请求之前执行,如果预处理器附加到采样器元素,那么它将在该采样器元素运行之前执行。预处理器元素用于在运行之前准备环境及参数。
  • 后处理器元素(Post-Processor Elements) - 后处理器元素是在发送采样器请求之后执行的元素,常用于处理响应数据。

📌 提示:

Jmeter 元素的数量关系大致如下:

  1. 脚本中最多只能有一个测试计划。
  2. 测试计划中至少要有一个线程组。
  3. 线程组中至少要有一个取样器。
  4. 线程组中至少要有一个监听器。

安装

环境要求

  • 必要的。Jmeter 基于 JDK8 开发,所以必须运行在 JDK8 环境。
  • JDK8
  • 可选的。有些 jar 包不是 Jmeter 提供的,如果需要相应的功能,需要自行下载并置于lib目录。

下载

进入 Jmeter 官网下载地址 选择需要版本进行下载。

启动

解压 Jmeter 压缩包,进入 bin 目录

Unix 类系统运行 jmeter ;Windows 系统运行 jmeter.bat

使用

创建测试计划

🔔 注意:

  • 在运行整个测试计划之前,应保存测试计划。
  • JMeter 的测试计划以 .jmx 扩展文件的形式保存。
创建线程组
  • 在“测试计划”上右键 【添加】=>【线程(用户)】=>【线程组】。
  • 设置线程数和循环次数

配置原件
  • 在新建的线程组上右键 【添加】=>【配置元件】=>【HTTP 请求默认值】。
  • 填写协议、服务器名称或 IP、端口号

构造 HTTP 请求
  • 在“线程组”上右键 【添加-】=>【取样器】=>【HTTP 请求】。
  • 填写协议、服务器名称或 IP、端口号(如果配置了 HTTP 请求默认值可以忽略)
  • 填写方法、路径
  • 填写参数、消息体数据、文件上传

添加 HTTP 请求头
  • 在“线程组”上右键 【添加】=>【配置元件】=>【HTTP 信息头管理器】
  • 由于我的测试例中传输的数据为 json 形式,所以设置键值对 Content-Typeapplication/json

添加断言
  • 在“线程组”上右键 【添加】=>【断言】=>【 响应断言 】
  • 在我的案例中,以 HTTP 应答状态码为 200 来判断请求是否成功

添加察看结果树
  • 在“线程组”上右键 【添加】=>【监听器】=>【察看结果树】
  • 直接点击运行,就可以查看测试结果

添加汇总报告
  • 在“线程组”上右键 【添加】=>【监听器】=>【汇总报告】
  • 直接点击运行,就可以查看测试结果

保存测试计划

执行测试计划前,GUI 会提示先保存配置为 jmx 文件。

执行测试计划

官方建议不要直接使用 GUI 来执行测试计划,这种模式指适用于创建测试计划和 debug。

执行测试计划应该使用命令行模式,语法形式如下:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

执行测试计划后,在 -e -o 参数后指定的 web 报告目录下,可以找到测试报告内容。在浏览器中打开 index.html 文件,可以看到如下报告:

问题

如何读取本地 txt/csv 文件作为请求参数

参考:Jmeter 读取本地 txt/csv 文件作为请求参数,实现接口自动化

(1)依次点击【添加】=>【配置元件】=>【CSV 数据文件设置】

配置如下所示:

重要配置说明(其他配置根据实际情况填):

  • 文件名:输入需要导入的数据文件位置。
  • 文件编码:设为 UTF-8,避免乱码。
  • 变量名称:使用 , 分隔输入变量列表。如截图中设置了两个变量 ab

(2)在 HTTP 请求的消息体数据中配置参数

[{"a":"${a}","b":"${b}"}]

如何有序发送数据

依次点击【添加】=>【逻辑控制器】=>【事务控制器】

相关资料

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
164 3
|
17天前
|
监控 测试技术
slb测试会话保持功能
slb测试会话保持功能
27 6
|
2月前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
181 56
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
68 3
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
52 1
|
3月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
115 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
78 4
|
2月前
|
测试技术
Appscan手工探索、手工测试功能实战
Appscan手工探索、手工测试功能实战
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
261 7
Jmeter实现WebSocket协议的接口测试方法
|
3月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
271 3
快速上手|HTTP 接口功能自动化测试