JMeter 接口自动化测试:从入门到精通的完全指南

JMeter 是一个开源的负载测试工具,它可以模拟多种协议和应用程序的负载,包括 HTTP、FTP、SMTP、JMS、SOAP 和 JDBC 等。在进行接口自动化测试时,使用 JMeter 可以帮助我们快速地构建测试用例,模拟多种场景,发现接口的性能问题。下面是一些 JMeter 接口自动化测试的步骤和技巧。

步骤

第 1 步:创建测试计划

JMeter 中,测试计划是测试的最高级别,它包含了各种元素和配置,如线程组、断言、监听器等。测试人员需要在 JMeter 中创建一个新的测试计划,并添加必要的元素和配置。

要创建新的测试计划,请选择: 文件 > 新建 > 填写计划名称。

第 2 步:添加线程组

测试 计划中,测试人员需要添加一个或多个线程组。线程组是测试的基本单位,它定义了测试的并发用户数量、持续时间和其他属性。测试人员需要根据需求设置线程组的属性。

要创建线程组,请右击测试计划并选择: 添加 > 线程(用户) > 线程组。

填写线程组信息。

  • 线程数:10 个线程就是模拟 10 个用户。
  • Ramp-Up 时间 (秒):线程准备时长。如果线程数为 10,准备时长为 10,那么需要 1秒钟启动 1 个线程。
  • 循环次数。如果线程数为 10,循环次数为 10,那么每个线程发送 10 次请求。总请求数为 10*10 = 100。如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止。

第 3 步:添加取样器

取样器 是 JMeter 测试的核心组件,它模拟了用户执行的操作。测试人员需要添加一个或多个取样器,并设置它们的属性。常见的取样器类型包括 HTTP 请求、TCP 请求、FTP 请求、JDBC 请求等。

这边以添加 HTTP 请求为例。添加 HTTP 请求,右击线程组并选择:添加 > 取样器 > HTTP 请求。

填写 HTTP 的调用信息。

传过去的数据是 json 格式的,因此要添加头信息:Content-Type:application/json。右击 HTTP 请求并选择:添加 > 配置元件 > HTTP 信息头管理。

添加头信息:Content-Type:application/json

第 4 步:添加断言

断言是 JMeter 测试中的重要组件,它用于验证服务器的响应是否符合预期。测试人员需要添加一个或多个断言,并设置它们的属性。

常见的断言类型包括响应断言 和 JSON 断言:

  • 响应断言包括:文本、响应代码、响应头、响应时间等。
  • JSON 断言允许用户指定 JSON 路径表达式并验证 JSON 响应是否符合该表达式。

响应断言

添加响应断言: 右击接口 > 添加 > 断言 > 响应断言。

对 响应文本中 包含字符串 “Apple” 做断言:

对 HTTP 的响应码 做断言:

JSON 断言

添加 JSON 断言: 右击接口 > 添加 > 断言 > JSON断言。

对接口返回的 total 做断言:

对接口返回的 data 的第 1 项 name 做断言:

上面的 JSON Path 指的是 JSON 路径表达式。表达式由一系列的属性名和数组索引组成:以 “$.” 开头,用“.”和“[]”分隔。例如,以下 JSON 响应:

 
    "name": "John","age": 30,"cars": [{"name": "Ford","models": ["Fiesta","Focus","Mustang"]},{"name": "BMW","models": ["320","X3","X5"]}]
}

可以使用以下表达式获取相应的值:

  • $.name:获取 "John"。
  • $.cars[0].name:获取 "Ford"。
  • $.cars[1].models[2]:获取 "X5"。

断言结果

运行用例。如果 响应符合断言,则什么都不会发生。否则,在 结果树监听器 中会看到报错信息。

第 5 步:添加监听器

监听器是 JMeter 测试中的另一个重要组件,它用于收集测试结果并生成报告。测试人员需要添加一个或多个监听器,并设置它们的属性。以下是一些常用的 JMeter 监听器:

  • 聚合报告:提供有关事务响应时间、吞吐量和错误率的信息。
  • 查看结果树:显示每个请求的响应,包括请求头、请求正文和响应正文。
  • 监听器图形结果:将测试结果可视化,以便更轻松地分析性能问题。
  • 断言结果:验证响应是否满足特定条件。
  • 分布式负载测试图:显示不同服务器上的负载情况。

添加监听器:请右键单击线程组(或取样器) > 添加 > 监视器 > 具体的监视器。这里以最常用的 “查看结果树” 为例。

第 6 步:运行测试计划,查看报告

测试人员完成测试计划的配置后,可以运行测试计划并收集测试结果。测试人员可以通过监听器生成报告,并根据结果调整测试计划的配置。

等用例运行结束,可以在配置不同的监视器中看到对应的结果。

查看结果树:

汇总报告:

图形结果:

技巧

使用 CSV 数据文件

如果你需要模拟多种场景,可以使用 CSV 数据文件。你可以将不同的请求参数保存在 CSV 文件中,然后在 JMeter 中使用 CSV 数据文件配置请求参数。这样可以快速地生成多个测试用例,提高测试效率。

使用 JMeter 插件

JMeter 插件 有很多可以扩展其功能。例如,你可以使用 JSON Path Extractor 插件,从接口返回的 JSON 数据中提取特定的字段。你还可以使用 Response Assertion 插件,验证接口返回的结果是否符合预期。

如果你需要使用插件,你需要按照以下步骤进行安装:

1、下载插件管理器

首先,你需要下载 JMeter 插件管理器。插件管理器是一个用于安装和升级 JMeter 插件的工具。你可以在官方网站上下载最新版本的插件管理器。

2、安装插件管理器

将下载好的插件管理器文件复制到 JMeter 的 lib/ext 目录下,并重启 JMeter。

3、安装插件

打开 JMeter 并选择 Options -> Plugins Manager。在 Plugins Manager 界面中,你可以搜索要安装的插件,并点击 Install 按钮进行安装。

4、重启 JMeter

完成插件的安装后,你需要重启 JMeter 才能使其生效。

使用分布式测试

如果你需要模拟大量并发用户访问接口,可以使用 JMeter 的分布式测试功能。你可以将测试计划分发到多个 JMeter 客户端,同时运行多个线程组,模拟大量并发用户访问接口。这样可以提高测试效率,发现接口的性能问题。

总之,使用 JMeter 进行接口 自动化测试 是一种快速、高效、可靠的测试方法。通过合理的配置和技巧,可以发现接口的性能问题,提高应用程序的质量和稳定性。

更多 Jmeter 使用技巧:

  • JMeter 压力测试入门指南 
  • 如何使用 JMeter 进行 HTTPS 请求测试? 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/54395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读_条件控制_ControlNet

name_en: Adding Conditional Control to Text-to-Image Diffusion Models name_ch: 向文本到图像的扩散模型添加条件控制 paper_addr: http://arxiv.org/abs/2302.05543 date_read: 2023-08-17 date_publish: 2023-02-10 tags: [‘图形图像’,‘大模型’,‘多模态’] author: …

什么是计算机视觉,计算机视觉的主要任务及应用

目录 1. 什么是计算机视觉 2. 计算机视觉的主要任务及应用 2.1 图像分类 2.1.1 图像分类的主要流程 2.2 目标检测 2.2.1 目标检测的主要流程 2.3 图像分割 2.3.1 图像分割的主要流程 2.4 人脸识别 2.4.1 人脸识别的主要流程 对于我们人类来说,要想认出身边…

生成地图展示【Python思路】

# 1.导包 import json from pyecharts.charts import Map #导入关于编写地图的包 from pyechart.options import * #全局设置# 2.得到地图对象 map Map()# 3.打开事先准备好的JSON数据文件 f open("D:/Typora 记事本/notebook/Python/Exercise_data/疫情.txt",&…

三个视角解读ChatGPT在教学创新中的应用

第一,我们正处于一个学生使用ChatGPT等AI工具完成作业的时代,传统的教育方法需要适应变化。 教育工作者不应该因为学生利用了先进技术而惩罚他们,相反,应该专注于让学生去挑战超越AI能力范围的任务。这需要我们重新思考教育策略和…

matlab使用教程(25)—常微分方程(ODE)选项

1.ODE 选项摘要 解算 ODE 经常要求微调参数、调整误差容限或向求解器传递附加信息。本主题说明如何指定选项以及每个选项与哪些微分方程求解器兼容。 1.1 选项语法 使用 odeset 函数创建 options 结构体,然后将其作为第四个输入参数传递给求解器。例如&#xff0…

Folyd 多源最短路

目录 简介 实现 代码 关于Floyd的题目 简介 首先我们要知道a到b的最短路是什么 a到b的最短路是从a点到b点的最小距离(花费) 那多源最短路呢就是能求任意a和b,之间的最短路 那么Folyd是多源最短路,也就是求任意a和b&#x…

python实现卡尔曼滤波代码详解

Kalman滤波算法的原理可以参考: 卡尔曼滤波理解 python中filterpy库中实现了各种滤波算法, 其中就包括了kalman滤波算法。 具体实现代码: https://github.com/rlabbe/filterpy/blob/master/filterpy/kalman/kalman_filter.py 本文针对该代码…

视频云存储/安防监控EasyCVR视频汇聚平台接入GB国标设备时,无法显示通道信息该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

三极管NPN、PNP的区别及简单应用

目录 一、NPN、PNP三极管的概念 二、NPN、PNP三极管的区别 三、三极管NPN、PNP的简单应用 一、NPN、PNP三极管的概念 NPN型三极管: 由两块N型半导体和一块P型半导体组成,P型半导体在中间,两块N型半导体在两侧。 三极管是电子电路中最重要的…

elementui table 在浏览器分辨率变化的时候界面异常

异常点: 界面显示不完整,表格卡顿,界面已经刷新完成,但是表格的宽度还在一点一点变化,甚至有无线延伸的情况 思路: 1. 使用doLayout 这里官方文档有说明, 所以我的想法是,监听浏览…

Jetbrains IDE新UI设置前进/后退导航键

背景 2023年6月,Jetbrains在新发布的IDE(Idea、PyCharm等)中开放了新UI选项,我们勾选后重启IDE,便可以使用这一魔性的UI界面了。 但是前进/后退这对常用的导航键却找不到了,以前的设置方式(Vi…

【C++】容器适配器stack、queue以及deque容器

🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、什么是容器适配器1.1 stack的…

Redis 的混合持久化

RDB 相比于 AOF,数据恢复的速度更快,因为是二进制数据,直接加载进内存即可,但是 RDB 的频率不好把握。 如果频率太低,在两次快照期间服务器发生宕机,可能会丢失较多的数据如果频率太高,频繁写入…

研磨设计模式day12迭代器模式

目录 场景 解决方案 解决思路 代码示例 代码改造 Java实现迭代器 迭代器模式的优点 思考 何时选用 场景 大公司收购了一个小公司,大公司的工资系统采用List来记录工资列表,而小公司是采用数组,老板希望通过决策辅助系统来统一查看…

Android studio之GridView使用

目录 效果图:![在这里插入图片描述](https://img-blog.csdnimg.cn/86e4a48a71164dec82613d58b1fbaa1c.jpeg)代码: 效果图: 代码: UserGridviewAdapter package com.example.gridviewpro.Adapter;import android.content.Contex…

202 | 抽象类、接口、内部类

抽象类 abstract 注意项 父类方法需要声明,但是有不确定性,考虑将该方法设计为抽象方法抽象方法没有实现的方法没有方法体(跟接口的区别?)抽象方法的类必须设置为抽象类,实现方法由其子类实现 abstract …

nuxt.js框架使用swiper的5.4.5版本记录,创建广告位幻灯片

nuxt依赖 “nuxt”: “^2.15.8”, “swiper”: “^5.4.5”, “vue”: “^2.7.10”, “vue-awesome-swiper”: “^4.1.1”, 需要完成的效果是 参考地址&#xff1a;https://3.swiper.com.cn/demo/pcSlide/ nuxt代码&#xff1a; <template><div class"page&quo…

ServiceManger Binder的处理流程

陌生知识点如下&#xff1a; BinderProxy&#xff1a;是将Native层的BpBinder对象进行封装后传给Java层使用的Binder对象android_util_binder: Binder在JNI层的相关注册&#xff0c;处理&#xff0c;转换封装接口BpBinder:Binder驱动在Native层的封装。IPCThreadState&#xf…

机器学习的测试和验证(Machine Learning 研习之五)

关于 Machine Learning 研习之三、四&#xff0c;可到秋码记录上浏览。 测试和验证 了解模型对新案例的推广效果的唯一方法是在新案例上进行实际尝试。 一种方法是将模型投入生产并监控其性能。 这很有效&#xff0c;但如果你的模型非常糟糕&#xff0c;你的用户会抱怨——这…

Sentinel 控制台(集群流控管理)

规则配置 要通过 Sentinel 控制台配置集群流控规则&#xff0c;需要对控制台进行改造。我们提供了相应的接口进行适配。 从 Sentinel 1.4.0 开始&#xff0c;我们抽取出了接口用于向远程配置中心推送规则以及拉取规则&#xff1a; DynamicRuleProvider<T>: 拉取规则Dy…