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

相关推荐
程序员的世界你不懂7 小时前
Jmeter的元件使用介绍:(三)配置元件详解01
jmeter
自由鬼8 小时前
Apache HTTP Server 2.4.49 的目录遍历漏洞CVE-2021-41773
网络协议·http·apache
lang201509288 小时前
Apache Ignite 索引(Indexes)定义和使用
apache·ignite
百川8 小时前
Apache文件解析漏洞
web安全·apache
Lucky高11 小时前
HTTP和HTTPS复习
网络协议·http·https
软件测试-阿涛12 小时前
【性能测试】Jmeter+Grafana+InfluxDB+Prometheus Windows安装部署教程
测试工具·jmeter·性能优化·压力测试·grafana·prometheus
胖胖胖胖胖虎16 小时前
Apache Ranger 权限管理
apache
喵手18 小时前
Java 11 新特性:从模块化到 HTTP/2 深度解析
java·开发语言·http
ahauedu20 小时前
Apache POI 依赖版本冲突导致 NoSuchFieldError: Factory 报错
java·maven·apache
SelectDB2 天前
浩瀚深度:从 ClickHouse 到 Doris,支撑单表 13PB、534 万亿行的超大规模数据分析场景
大数据·数据库·apache