【项目实战】Apache JMeter HTTP 接口测试

Apache JMeter HTTP 接口测试脚本编写指南

在使用 JMeter 进行 HTTP 接口测试时,首先需要创建一个线程组以模拟用户行为。接着,添加 HTTP 请求,输入接口的 URL、路径、请求方法以及所需的参数。为了验证测试结果,通常会添加"查看结果树"监听器,以便在调用接口后查看返回值。

若需为接口请求添加 Header,可以在 HTTP 请求的"发送文件和 POST 数据"部分找到"添加"按钮,选择"Header",然后输入相应的键值对。

对于 HTTP 请求中的 Cookie 设置,JMeter 提供了"Cookie Manager"组件,它可以自动管理服务器返回的 Cookie,并可以在发送请求时附带。

Apache JMeter Webservice 测试脚本

进行 Webservice 测试通常从 SoapUI 开始,新建一个 SoapUI 项目并导入 WSDL 地址,从而获取 SOAP 请求报文、SOAPAction 和请求 URL。这些信息通常可以在 SoapUI 的 Raw 视图中找到。

在 JMeter 中,创建一个新的线程组,并添加一个 SOAP/XML-RPC Request 组件。将获取到的 URL、SOAPAction 和请求报文填入 SOAP 请求中。

JMeter 参数化

参数化的目的是为了方便管理经常变化的参数。JMeter 支持三种参数化方式:用户定义的变量、函数生成器和从文件中读取。

用户定义的变量适用于那些不经常变化的参数,如 IP 地址。在线程组中添加一个用户定义的变量,设定键值对,然后在脚本中通过 ${name} 形式引用变量。

函数生成器可以按照一定的规则生成数据,例如随机数、当前时间等。JMeter 的函数助手可以生成随机数(__Random)、当前时间(__time)和唯一 ID(__UUID)。


从文件中读取数据涉及三个步骤:读取文件、提取文件内容中的参数并命名、使用这些值。在 JMeter 中,通过添加 CSV Data Set Config 组件实现这一功能。

JMeter 断言与关联

断言用于验证返回结果是否正确。如果返回结果与预期相符,则表明请求成功;否则,表明请求结果与预期不一致。关联则用于处理后续请求需要用到先前服务器返回结果的场景,通常通过正则表达式提取器完成。

JMeter 操作数据库 MySQL

操作 MySQL 数据库需要先导入 JDBC 的 jar 包,然后创建数据库连接配置,编写 SQL 并执行,最后查看结果。JMeter 中通过 JDBC Connection Configuration 组件来设置数据库连接。

数据库的url:jdbc:mysql://192.168.1.116:3307/bugfree?allowMultiQueries=true

在 Linux 下运行 JMeter 压测

为了在 Linux 系统中进行长时间的压力测试,可以将 JMeter 脚本在 Windows 上准备好,然后在 Linux 下运行。使用 JMeter 的 bin 目录下的 jmeter.sh 脚本,以命令行方式启动非图形界面模式。

bash 复制代码
sh jmeter.sh -n --t a.jmx -l res.jtl

-n代表以没有图形化界面启动,-t代表后面是测试脚本,a.jmx也就是我们做好的jmeter脚本,-l代表测试结果 res.jtl就是测试结果文件,查看结果的话,在查看结果树视图中导入这个res.jtl就可以查看到测试结果了

JMeter 添加负载机

在进行高并发测试时,可能需要在多台机器上运行 JMeter 以分散负载。首先在负载机上启动 jmeter-server,然后在主控机的 jmeter.properties 文件中添加负载机的 IP 地址。Jmeter的bin目录下有一个jmeter-server,启动它即可,windows机子作为压力机的话,运行jmeter-sever.bat,linux作为压力机的话,运行jmeter-server。

jmeter 添加压力机:

1、先在其他的负载机(另外的电脑)上启动jmeter-server(jmeter-server.bat windows)

(jmeter-server.sh mac、linux)主控机和负载机

2、修改主控机jmeter的配置文件,找到remot_hosts,然后把负载机的ip加入到里面就好了remot_hosts=127.0.0.1,192.168.1.2:1099,192.168.1.3:1099默认jmeter-server的端口号是1099,如果说负载机上的端口号改了,那么你在这里也得改

3、启动时候要选择远程全部运行ps:如果有参数化文件,那么在负载机同样的位置上也得有一个参数化文件。

相关推荐
Thanks_ks1 天前
HTTPS:浏览器地址栏那把锁的工作原理
http·网络安全·https·tls·加密算法·数字证书·中间人攻击
杨凯凡1 天前
Spring Boot 大文件下载如何实现断点续传?HTTP Range、206 与 416 实战
spring boot·后端·http
FungLeo2 天前
成为全栈·Vue 管理后台篇·用 fetch 建一层可控的请求内核
前端·javascript·vue.js·http·fetch·formdata·接口封装
wuyk5552 天前
Spider-第03讲-HTTP速通与读懂响应
网络·爬虫·网络协议·http
杨凯凡3 天前
Spring Framework 7 HTTP Interface 实战:声明式 RestClient、超时与测试
java·spring·http
CodeYp20193 天前
第11讲:应用层协议 HTTP
linux·http
Thanks_ks4 天前
HTTP 请求方法与 RESTful 接口设计:GET 和 POST 到底怎么用
http·api·restful·状态码·get·post·接口设计
LK_075 天前
【FastAPI】基础篇 01|开始之前:API、HTTP 与 FastAPI 到底是什么
网络协议·http·fastapi
阿星_5 天前
pydio登陆不了分析问题
网络协议·http·https
Joy T5 天前
Gzip 压缩原理与实践:HTTP 响应压缩、性能收益与工程配置
网络·网络协议·http