【项目实战】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:如果有参数化文件,那么在负载机同样的位置上也得有一个参数化文件。

相关推荐
寻星探路4 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
王达舒19944 小时前
HTTP vs HTTPS: 终极解析,保护你的数据究竟有多重要?
网络协议·http·https
朱皮皮呀4 小时前
HTTPS的工作过程
网络协议·http·https
Binary-Jeff4 小时前
一文读懂 HTTPS 协议及其工作流程
网络协议·web安全·http·https
CodeToGym10 小时前
【Java 办公自动化】Apache POI 入门:手把手教你实现 Excel 导入与导出
java·apache·excel
码云数智-大飞15 小时前
保姆级教程:零基础快速上手 Apache SeaTunnel(原 Waterdrop)
apache
yuluo_YX15 小时前
Reactive 编程 - Java Reactor
java·python·apache
惊讶的猫17 小时前
OpenFeign(声明式HTTP客户端)
网络·网络协议·http·微服务·openfeign
摇滚侠18 小时前
HTTP 404 - No response body available
网络·网络协议·http
Trouvaille ~18 小时前
【Linux】应用层协议设计实战(一):自定义协议与网络计算器
linux·运维·服务器·网络·c++·http·应用层协议