> 技术文档 > 在mac系统使用Jmeter对接口进行压力测试_jmeter mac

在mac系统使用Jmeter对接口进行压力测试_jmeter mac


一、安装

直接下载最新版本的Jmeter,Jmeter下载链接:Apache JMeter - Download Apache JMeter

将解压后的Jmeter目录放到合适的位置,后面需要把目录路径配置到环境变量里

如果没有安装java环境,根据Jmeter版本要求部署对应的java环境

二、配置环境变量

为了能够在终端直接使用jmeter命令,需要将JMeter的目录添加到环境变量中:

1.打开终端,编辑配置文件(根据使用的Shell不同,可能是.bash_profile或.zshrc):

sudo vim ~/.zshrc

2.在文件末尾添加以下内容(将/path/to/jmeter替换为实际的JMeter路径):

export JMETER_HOME=/path/to/jmeter export PATH=$PATH:$JMETER_HOME/bin

3.保存并退出编辑器,然后运行以下命令使配置生效:

source ~/.zshrc

4.验证配置是否成功,输入以下命令查看JMeter版本信息:如果显示版本信息,则说明配置成功

jmeter -v

三、使用

在终端输入以下命令启动JMeter的图形界面:

jmeter

根据提示说不要使用GUI模式进行负载测试,仅用于测试创建和测试调试。

所以只在JMeter的图形界面进行测试的创建和调试

0.设置语言为简体中文:Options-->Choose Language-->Chinese(SimpSimplified);

1.设置线程组:右键测试计划-->添加-->线程(用户)-->线程组

参数解析:

在取样器错误后要执行的动作

继续:某一个请求遇到错误后,其他请求继续执行。我们在大量用户并发的时候,某个请求失败属正常现象。

启动下一进程循环:如遇到错误后面的请求将不再执行,等下一轮再开始执行。例如线程组中包含登录和退出两个请求,若登录请求失败,退出请求将不再执行,等下一次重新迭代,从登录开始执行。

停止线程:遇到错误就停止线程再也不执行了。例如线程组中有50个线程,其中某一个线程的某个请求遇到错误即停止线程不再执行,剩下49个线程继续执行。

停止测试:某个线程某个请求遇到错误,停止所有线程,也就是停止整个测试,但是线程中的余下的请求还是会执行完再停止。例如线程组中包含登录和退出两个请求,其他线程遇到错误,现在要全部停下来,线程组退出请求还是会执行,然后再停止测试。

立即停止测试:遇到错误立即停止所有线程,即整个测试。

线程属性

线程数:一个线程相当于一个虚拟用户。

Ramp-Up时间:线程启动开始运行的时间间隔,单位秒。即所有线程在多长时间内全部启动。例如线程60个,Ramp-Up时间设置为20s,那么每秒启动60/20=3个线程,不填写默认设置为0,即所有线程在开启场景后立即启动。

循环次数:勾选永远,将一直执行,除非手动停止或崩溃。

延迟创建现场直到需要

勾选,例如50个线程Ramp-Up时间为10s,那么每隔1s启动50/10=5个线程并运行下面的请求(状态为running);不勾选,测试计划开始后启动所有线程(状态为new),但是不立即执行下面的请求。例如50个线程Ramp-Up时间为10s,那么计划开始后所有线程全部就绪,但第一秒只有5个线程开始运行请求。

调度器

持续时间:测试计划持续多长时间。

启动延时:点击启动按钮后,仅初始化场景,不运行线程,等待延时时间到才运行。

注意:线程组中循环次数和持续时间同时存在时,不会执行持续时间的设置。

2.构建http请求:右键线程组-->添加-->取样器-->HTTP请求

参数解析:

Web服务器

协议:向目标服务器发送 HTTP 请求协议,可以是 HTTP 或 HTTPS ,默认为 HTTP ;

服务器名称或IP:HTTP 请求发送的域名或 IP ;

端口号:目标服务器的端口号,HTTP默认端口号为80端口,HTTPS默认端口号为443端口;

HTTP请求

方法:发送 HTTP 请求的方法,可用方法包括 GET、POST、HEAD、PUT 等;

路径:接口地址;

内容编码:编码方式,默认为 ISO-8859-1 编码,一般配置 utf-8;

自动重定向:当重定向时,自动跳转时,只针对GET和HEAD请求,自动重定向可以自动跳转到最终目标页面,但是Jmeter不记录重定向过程内容(在查看结果树中只能看到重定向后的响应内容);

跟随重定向:当重定向时,自动跳转时,自动重定向可以自动跳转到最终目标页面,但是Jmeter记录重定向过程内容(在查看结果树中既能看到重定向后的响应内容,也能看到重定向前的响应内容),默认选中;

使用keepAlive :当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中;

对POST使用multipart/from-data :当发送HTTP POST 请求时,使用Use multipart/from-data方法发送;

参数:同请求一起发送参数,在请求中发送的URL参数,用户可以将URL中所有参数设置才在本表中,表中每行为一个参数(对应URL中的key=value),注意参数传入中文时需要勾选“编码”;

3.设置http信息头管理器:右键线程组-->添加-->配置元件-->HTTP信息头管理器

4.设置全局变量:右键线程组-->添加-->配置元件-->CSV Data Set Config

想要每个模拟用户都使用不同的请求数据,就需要配置全局变量,每个线程会依次获取不同行的变量

参数解析:

文件名:数据文件的路径,点击右侧浏览选择数据文件;

文件编码:默认使用当前操作系统的编码格式,如果文件中包含中文乱码时,可尝试utf-8、gbk等;

变量名称:csv文件中各列的名字(有多列时,用英文逗号隔开列名);名字顺序要与内容对应,这个变量名称是在其他处被引用的,所以为必填项;引用方式为 ${变量名}

分隔符:csv文件中的分隔符(用”\\t”代替tab键);一般情况下,分隔符为英文逗号,保持默认就行;

遇到文件结束符再次循环?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环;

遇到文件结束符停止线程?:到了文件尾是否停止线程,True—停止,False—不停止;

线程共享模式

所有线程:此元件作用范围内的所有线程共享csv数据,每个线程依次读取csv数据,互不重复;

当前线程组:在此元件作用范围内,以线程组为单位,每个线程组内的线程共享csv数据,依次读取数据,互不重复;

当前线程:在此元件作用范围内,每次循环中所有线程取值一样;

5.添加查看结果树:右键线程组-->添加-->监听器-->查看结果树

点击验证

点击查看结果树,查看接口是否调用成功

接口调用成功,保存测试文件

6.在终端运行测试文件

jmeter -n -t /path/to/test_plan.jmx -l /path/to/results.jtl-n 表示以非图形界面模式运行。 -t 指定测试计划文件(.jmx)的路径。 -l 指定结果文件(.jtl)的路径

7.查看测试结果

jmeter -g /path/to/results.jtl -o /path/to/output_folder将生成一个HTML报告,保存在指定的输出文件夹中

官网最佳实践:Apache JMeter - User\'s Manual: Best Practices

参考文章:Mac OS下Jmeter的入门操作-腾讯云开发者社区-腾讯云