【项目实战】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 脚本,以命令行方式启动非图形界面模式。
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:如果有参数化文件,那么在负载机同样的位置上也得有一个参数化文件。