使用Apache JMeter进行HTTP Restful接口性能测试

本文介绍了Apache JMeter,它是用Java编写的开源程序,可用于功能和性能测试。接着说明了环境准备,包括安装JDK和JMeter。最后详细阐述了使用JMeter测试novelApi开放接口的步骤,如添加线程组、HTTP请求等,还介绍了修改线程组参数进行性能测试及命令行生成测试报告的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apache JMeter概述

Apache JMeter是纯Java语言编写开源的应用程序,主要用于进行功能测试和性能测试。它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。

Apache JMeter 主要特色包括:

  • 可以用于测试很多不同的应用程序/服务器/协议类型,如
    Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
    SOAP / REST Webservices
    FTP
    Database via JDBC
    LDAP
    Message-oriented middleware (MOM) via JMS
    Mail - SMTP(S), POP3(S) and IMAP(S)
    Native commands or shell scripts
    TCP
    Java Objects
  • 可以生成完整易读的动态HTML报告;
  • 通过从最流行的响应格式HTML、JSON、XML或任何文本格式中提取数据的能力,可以轻松地进行关联;
  • 完整的多线程框架可以多线程并发测试,也可以通过线程组进行隔离;
    缓存和离线的分析/重放测试结果;
    方便通过Mavne、Gradle和Jenkisn的第三方开源库进行持续集成。

环境准备

JDK
JMeter 4.0 以后开始兼容 Java 8 or Java 9,所以建议安装JDK8、JDK9
安装好JDK后需要配置环境变量

Apache JMeter 5.1.1
http://jmeter.apache.org/download_jmeter.cgi

解压缩后目录结构,其中X.Y 是版本号

apache-jmeter-X.Y
apache-jmeter-X.Y/bin
apache-jmeter-X.Y/docs
apache-jmeter-X.Y/extras
apache-jmeter-X.Y/lib/
apache-jmeter-X.Y/lib/ext
apache-jmeter-X.Y/lib/junit
apache-jmeter-X.Y/licenses
apache-jmeter-X.Y/printable_docs

JMeter官方入门文档请参见 http://jmeter.apache.org/usermanual/get-started.html

使用JMeter测试novelApi开放接口

接口说明:获取网易新闻
请求方式:POST
请求地址:https://api.apiopen.top/getWangYiNews

Body参数名类型必需描述示例 e.g.
pagestring页码1
countstring返回总数5
  1. 使用管理员权限启动jmeter.bat

  2. 新建测试计划TestNovelApi,选择保存目录
    新建测试计划

  3. 添加线程组
    在左侧Test WangYiNews菜单上右键依次选择添加-线程(用户)-线程组
    添加线程组
    添加成功后,Test WangYiNews节点下多了线程组节点,线程组的名称是可以自己修改。
    线程组

  4. 添加HTTP请求默认值
    右键线程组,选择添加配置元件HTTP请求默认值
    添加HTTP请求默认值
    添加成功后,线程组”节点下多了HTTP请求默认值节点,可以修改HTTP默认请求名称,配置Web服务器协议、IP、端口号等信息
    HTTP请求默认值

  5. 添加HTTP信息头管理器
    右键线程组,选择添加配置元件HTTP信息头管理器
    HTTP信息头管理器
    添加成功后,线程组”节点下多了HTTP信息头管理器节点,可以修改HTTP信息头管理器名称,配置请求头所需要的参数信息,比如token
    HTTP信息头管理器

  6. 添加HTTP请求
    右键线程组,选择添加取样器HTTP请求
    添加HTTP请求
    添加成功后,线程组”节点下多了HTTP请求节点,可以修改HTTP请求的名称,在基选项想设置Web服务器的信息,这里在HTTP请求默认值中已经配置过;注意HTTP请求中的各项配置,包括 方法: GET、POST、PUT等, 路径: 接口地址,内容编码: 默认utf8 ,**请求参数:**根据实际情况填写,本示例填写了page和count两个参数
    HTTP请求

  7. 添加监听器
    右键线程组,选择添加监听器图形结果
    监听器有很多种
    在这里插入图片描述
    图形结果
    图形结果

汇总报告
汇总报告
聚合报告
聚合报告
Label: 每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#样本: 表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
平均值: 平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
中位数: 中位数,也就是 50% 用户的响应时间
90% 百分位: 90% 用户的响应时间
95% 百分位: 95% 用户的响应时间
99% 百分位: 96% 用户的响应时间
最小值: 最小响应时间
最大值: 最大响应时间
异常%: 本次测试中出现错误的请求的数量/请求的总数
吞吐量: 吞吐量—默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
接收KB/Sec: 每秒从服务器端接收到的数据量
发送KB/Sec: 每秒发送到服务器端的数据量

察看结果树
察看结果树

  1. 修改线程组参数,进行接口性能测试
    线程组参数
    (1)线程数:即用户数,一个虚拟用户占用一个进程或线程,需要多少个用户施压,就设置多少虚拟用户数,在这里就是设置多少个线程数。
    (2)Ramp-Up 时间(秒) 准备时长:设置的虚拟用户数需要在多长时间内全部启动。例如线程数为100,准备时长为10,那么需要10秒钟启动100个线程,也就是每秒钟启动10个线程。我们这里设置1秒,表示1秒内10个用户全部启动。
    (3)循环次数:每个线程发送请求的次数。例如线程数为10,循环次数为10,那么每个线程发送10次请求,则总请求数为10*10=100 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
    (4)延迟创建线程直到需要:直到需要时延迟线程的创建。
    (5)调度器:可以设置线程组的持续时间或启动时间和结束时间。
    当选用配置调度器时,需要设置循环次数为永远,防止因循环次数不够而终止压测。
    持续时间(秒):测试计划持续多长时间,例如1分钟就填写60,会覆盖结束时间。
    启动延迟(秒):测试计划延迟多长时间启动,会覆盖启动时间。

聚合报告
聚合报告
图形结果
在这里插入图片描述

  1. 使用命令行生产测试报告

TestUserlist.jmx是编写的测试计划

 jmeter -n -t E:\jmeter\TestUserlist.jmx -l E:\jmeter\report\TestUserlist.log -e -o E:\jmeter\report\result

jmeter –n –t <jmx filepath> -l <csv log path> -e –o <report folder path>
-n: 非GUI模式执行JMeter
-t: 执行测试文件所在的位置
-l: 指定生成测试结果的保存文件,jtl文件格式
-e: 测试结束后,生成测试报告
-o: 指定测试报告的存放位置该方式的输入,为JMX file path,
另外两个参数(CSV log和report folder)皆为输出。
需要注意的是,csv log不能在report folder下,
否则将报类似csv log is not empty之类的错误。

生成的HTML报告
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值