花5分钟判断,你的Jmeter技能是大佬还是小白!

2023-11-05

jmeter 这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用 jmeter 来做接口自动化测试。

你有没有想过呢?

下面我就给大家讲讲,用 jmeter 如何做接口自动化测试。

 如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

01、 jmeter 与接口自动化测试

如果要你用 jmeter 来做接口自动化测试,你是不是把几乎每一个测试用例,都是用一个取样器来实现?

相信很多人都是这么想的,也是这么干的。

但是,很遗憾,你这种,是初级入门做法。你能实现所有的测试用例都被执行,但是,你写脚本和维护脚本的时间,可能比你用手工执行所有的测试用例时间还要长,而且还可能长很多。

因为,只要开发人员改了接口一个地方,你得从所有取样器中,找出与这个接口相关的所有取样器,然后一一修改,万一有遗漏,哪出现的失败,不是 bug,而是你脚本的问题。所以说,这是入门级人干的事情。

那有没有更好的办法呢?

平时写功能测试用例的时候,习惯用 Excel 的同学,可能就会想,我能把自动化测试用例每个信息都写在 Excel 表格中,然后,使用 jmeter 的 CSV 数据文件读取功能,把它读取出来执行,是不是就可以呢?

这种方法,就比前面的方法好了很多,用例还是用 Excel 来维护,只是使用 jmeter 来读取,执行就可以了。整体的可维护性要好很多很多,工作量也要少很多。

但是,在真正动手去做的时候,我们又会发现,困难重重。

写过自动化测试用例的同学,应该会有这样的经历,就是做接口测试时,我们通常会先对某个接口各种参数进行测试,这样,接口地址相同,但是参数不一样,校验的接口也一样。

在做完单个接口之后,我们还会做由多个接口构成的业务测试,这个时候,每个接口地址都不一样,接口请求的方法也可能不一样,最后的校验点,也可能变化,这样的自动化脚本,应该要怎么写呢?

第一个对单接口,编写自动化测试脚本,可能还好实现,因为接口相同,那么他的请求方法肯定相同,虽然,请求头、请求体、校验信息可能不同,但是,至少还有共同点。

而第二个,对业务编写自动化测试脚本,那就很难了,因为几乎所有的都可能不同,请求的协议、方法、请求头、请求体,全都可能不同,而且请求头和请求体还可能要有动态值,这个怎么做呢?

万事开头难,只怕去实践。只要你想好了,真正去动手做了,这很多问题,就不那么难了。

有很多事情,我们可以加条件判断,和循环控制等逻辑控制器,就可以实现的。

靠我一篇文章,就把它全部写出来,这是不现实的,所以,今天,主要讲一个,被很多同学问到,难倒了一大片好汉的问题。

图片

看到这个问题,你想到什么方法?

02、实操案例

如果你在 jmeter 中,每个接口写一个取样器,这个问题很好解决,直接使用参数引用就可以解决,但是,这个同学的做法是把测试用例写在 CSV 文件中,然后使用 jmeter 去读取 CSV 文件,执行测试用例,如何来实现动态参数呢?

肯定,有的同学已经想到了,使用变量引用,在 CSV 中,按照 jmeter 的写法,写引用变量。

好了,给大家一个看一个参考:

图片

这个 CSV 文件中,有两个不同的接口,说明是做的业务场景自动化测试,第一个接口,是注册,那么每次注册的账户肯定不能相同,如果相同了,那么第二次肯定失败,所以,就使用了随机函数,让注册的账户自动生成。

第二个接口是登录,当然,可以用固定账户登录,但是,我们前面进行注册,最好还是用前面注册的账户来登录,这样更加真实,body 中使用了变量引用,显然,这是用到了关联。

我们用 jmeter 写个脚本,来运行下,看能否成功。

图片

从脚本来运行情况来看,我们可以取到名称,地址,和请求体,但是,因为请求体在 CSV 中写了 jmeter 函数,结果读取出来运行时,还是原样运行,并没有对请求体中的函数进行执行。
 

怎么办呢?

很多人,就卡在这了,不知道怎么办了。

其实,我们想一下,现在是内容读取出来了,但是内容是原样进行请求,没有对内容中的函数进行执行,现在的问题,只需要解决 body 中的函数,能被运行就可以了。

我们再想下,在 jmeter 中,有哪些可以运行函数的方法?jexl3 函数可以,groovy 函数可以。

03、Exl3 函数

jexl3 函数,是要运行一段代码,返回代码结果,我们的 body 是 JSON 格式,显然不能直接运行,要想运行,还得写 Java 代码调用 JSON 运行才可以,非常复杂。

groovy 函数,是要运行一个表达式,显然,也不行。

那还有没有其他的函数呢?eval 函数,这个函数,返回的是字符串表达式运行的结果。

图片

此时,我们修改下我们 jmeter 中取样器的请求体。

图片

图片

看,运行结果,函数被执行了,注册的账号动态变化了。

接下来,我们就把第 2 条用例,使用了关联,也写出来。

图片

现在,我们已经实现,在 jmeter 中,使用一个取样器执行 2 个不同接口,并且动态参数值的自动化运行了。

现在,我们再把断言加上。

图片

注意:断言中,如果有中文,就要特别注意文件编码

现在,我们再加大难度,在 CSV 文件中写个 GET 接口。

图片

我们发现,多个接口请求方法不一样,jmeter 肯定不能用 1 个取样器了, get 请求没有 body 参数,但是,请求头要添加一个 Token 参数。

是不是一下楞圈了,不知道怎么动了?看懂下面的图,你就知道怎么做了。

图片

在取样器的前面增加一个条件判断,判断是请求方法,根据请求方法,执行 POST 取样器或 GET 取样器

然后,把循环次数设置为 CSV 文件条数一致,其他的地方,应该就比较容易理解了。 

04、END

看最后,多条测试用例,只用 2 个取样器就搞定了。以后,改动 CSV 文件,可能都不用动 jmeter 脚本,增加测试用例,改下循环控制器数量就可以了。

当然,这还不是最完美的,里面还有诸多不足。给想用 jmeter 做接口自动化测试的同学开了个头,更多的,还需要同学们自己动手,也欢迎同学们,在文章后面留言讨论。

注意,这篇文章的技术,只适合在自动化中,不能用这个脚本进行性能测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

花5分钟判断,你的Jmeter技能是大佬还是小白! 的相关文章

  • 将 JMeter 报告转换为 JUnit 报告

    如何将 JMeter 报告转换为 JUnit 报告 有些工具 例如 VSTS 知道如何集成 JUnit 报告 但不知道如何集成 JMeter 报告 尽管它们可以运行 JMeter 我创建了一个 XSLT 将 XML JMeter 报告转换为
  • 使用 JMeter 将文件上传到 Rest API

    注意 我已经检查过BlazeMeter 教程 https www blazemeter com blog testing advanced rest api file uploads jmeter当我使用 文件上传 选项卡时 它将文档作为正
  • HTTP2 请求示例因 Jmeter4、Java 10 无客户端 ALPNProcessors 崩溃

    我无法使用 Jmeter 4 0 创建 HTTP2 请求 我已经安装了最新的 JDK 和 HTTP 2 协议采样器插件 我还观察到 penJDK8ClientALPNProcessor e23ec5a 不适用于 java 10 0 2 尝试
  • 搜索所有网络上的设备

    我想实现一个代码 通过它我可以列出网络上连接的 upnp 兼容媒体渲染器设备 我用谷歌搜索了这个并找到了以下代码扭曲的网站 https twistedmatrix com documents current core howto udp h
  • 如何在 JMeter 中使用命令行参数

    我正在使用 Jmeter 测试 API 我想从终端参数化项目的路径 然后我想在 JMeter 中使用此参数 我通过命令行发送的参数 jmeter n t your script jmx Jurl abcdef com 我在用户定义变量中使用
  • Go:如何接收整个 UDP 数据报

    我的问题 使用 net Read 方法仅复制给定字节数组或切片大小的字节数 当然 我不想每次都分配最大 64 kB 的 UDP 数据报 有没有go如何确定数据报的大小 位于数据报头中 或再次读取直到数据报完全读取 Try 从UDP读取 ht
  • 无法在fiddler中捕获jmeter流量

    我创建了 JMeter 记录 但当我开始测试时 我在 Fiddler 中没有看到任何请求 我改变了 Fiddler 中的端口号为 8080 我在 JMeter 中使用该端口号 Steps 创建线程组 将Http请求添加到线程组并输入URL
  • 使用 JMeter 时陷入嵌套循环。嵌套循环控制器和 CSV 数据集配置。

    在我的网站上 我有两个商家操作 搜索和浏览 一次搜索通常会触发三次浏览 我有一个 JMeter 测试 它使用商家和商家 ID 号的 CSV 文件 在大规模运行此测试时 我希望使用我网站上的所有商家 我已经在 J Meter 中映射了它 如下
  • 是否可以将 jmeter 变量包含在从 CSV 获取的值中?

    我有一个 csv 文件 其中包含名为 query 的列 我要查询的全部内容之一是 user id list list 我想要做的是让 jMeter 在将查询传递到 HTTP Sampler 时覆盖查询中的 list 和 id 变量 其中变量
  • 使 .jmx 文件在 Windows 10 上使用 jmeter GUI 默认打开(双击文件)

    当我双击它时 我试图让我的 Windows 10 使用 jmeter GUI 打开 jmx 文件 我使用 apache jmeter 3 2 目前 为了打开 jmx 文件 我打开 jmeter jar apache jmeter 3 2 b
  • 使用 STUN 打孔

    我目前正在尝试通过 Internet 发送 UDP 消息 并且必须为端点 A 和 B 都位于 NAT 后面 设置防火墙 为此 我想使用 STUN 服务器进行打孔 当 A 创建对 STUN 服务器的请求 例如 私有 85 1 1 12 600
  • Python UDP广播不发送

    我正在尝试从 Python 程序到两个 LabView 程序进行 UDP 广播 我似乎无法发送广播 我不确定我的套接字初始化错误在哪里 广播似乎足够简单 据我所知 其他电脑没有收到任何数据 另外 我将来还需要这个程序来接收来自其他电脑的数据
  • P2P网络游戏/应用程序:类似“战网”匹配服务器的不错选择

    我正在制作一个网络游戏 1v1 游戏中是 p2p 不需要游戏服务器 然而 为了让玩家能够 找到彼此 而不需要在另一种媒介中协调并输入IP地址 类似于网络游戏的现代时代 我需要有一个协调 匹配服务器 我无法使用常规网络托管 因为 客户端将使用
  • JMeter:tearDown Thread Group的目的是什么

    我想了解JMeter中tearDown Thread Group的实际用法 在什么场景下可以使用tearDown Thread Group 根据提供的帮助JMeter 拆解线程组 http jmeter apache org userman
  • recvfrom() 中的 addrlen 字段有何用途?

    我在程序中使用 recvfrom 从我在 src addr 中指定的服务器获取 DGRAM 数据 但是 我不确定为什么需要初始化并传入addrlen 我读了手册页 但不太明白它的意思 如果src addr不为NULL 并且底层协议提供了源地
  • Node.js 可读流_read用法

    我了解如何在 Node 的 new 中使用可写流Streams2库 但我不明白如何使用可读流 举个例子 一个流包装器围绕dgram module var dgram require dgram var thumbs twiddle func
  • 为什么SOCKS5需要通过UDP中继UDP?

    The SOCKS5 https en wikipedia org wiki SOCKS SOCKS5协议 描述为RFC1928 https www rfc editor org rfc rfc1928提供对 UDP 的支持 总而言之 希望
  • 尝试接收 UDP 多播时出现空指针异常

    在尝试了几次让简单的 UDP 多播接收器工作后 我感到很困惑 在我自己的代码无法按预期工作后 我尝试了 vertx 文档中发布的确切示例 DatagramSocket socket vertx createDatagramSocket ne
  • JMeter 为子功能添加 Think Time

    在 JMeter 中 当我右键单击 线程 控制器 时 我有一个选项 Add Think Time to children功能 当我点击它时 我会看到每个采样器Test Action暂停与Uniform Random Timer随机延迟 10
  • 错误号:11,资源暂时不可用

    我正在使用 c 套接字来实现可靠的 UDP 协议 我正在使用以下代码在等待确认的套接字上设置超时 我不确定为什么会收到 errno 11 资源暂时不可用 set timer for recv socket struct timeval tv

随机推荐

  • java中集合排序的常用方法总结

    前言 1 集合元素为数字 2 集合元素为对象 前言 平常的开发需求中肯定会遇到对集合排序问题 最常见的排序是在持久层中使用sql进行排序 但是由于业务限制或是其他原因 不能在持久层进行排序处理只能在逻辑层处理 那今天就来聊一下如何在逻辑层
  • AXI从设备接口

    AXI从设备接口 可以实现EP应用 即作为PCIe总线主设备通过PCIe总线向主机发起PCIe事务 实现RP应用时 AXI从设备接口可以用于发起I O 配置CFG和延迟内存写DMWr请求 实现EP应用时 该接口连接的客户逻辑 外设 必须具有
  • vue的script的三种写法

    以搜索框为例子 vue2的写法 第一种
  • 2021年阿里巴巴83行代码挑战赛来啦!赢MacBook Pro等好礼

    2021年83行代码挑战赛来啦 点击立即前往 CHERRY机械键盘 代码马克杯 Git 鼠标垫 霸王洗发水等2000份将奖品等你来 本次大赛由阿里云云效团队耗时一个月精心筹备 熬夜加班完成 只为真诚地用代码向所有卓越的程序猿致敬 也向卓越的
  • docker logs命令查看日志

    docker logs 打印详细信息 docker logs mysql 容器名字 NAMES docker logs d6c6e958f022 容器ID CONTAINER ID docker logs f 持续输出日志 持续的输出名为m
  • vscode配置码云

    参考 https blog csdn net watfe article details 79761741 1 通过git init命令把这个目录变成Git可以管理的仓库 建立本地仓库 本地仓库和代码开发的不是同一个 git init In
  • 关于elasticsearch连接时断时续以及Kibana出现server is not ready yet的问题,大坑!

    代码小白 记录自学制作谷粒商城遇到的坑 如有错误请轻喷 1 问题的出现 elasticsearch连接时断时续 在加完分词插件之后 出现了elasticsearch连接失败的情况 但是经过多次刷新之后居然是可以成功连接上去的 查看日志也没发
  • react的jsx的基本语法和创建脚手架

    初始react react是一个构建用户界面的javascript库 创建一个简单react 第一步 引入核心库 第二步 在真实dom中提供一个挂载点 div div 第三步 业务代码 创建虚拟dom对象 createElement let
  • Keil如何提升性能和减小代码大小

    在编译程序的过程中 需要考虑两个问题 一个是使用的代码够不够快 另一个是编译的代码够不够小 下面汇集一些解决方法 主要针对Keil ARMCC编译器 1 让代码够小 如图 1 未进行任何优化时 keil编译生成的文件大小为 9668字节 第
  • 基于麻雀算法优化的深度极限学习机DLM的预测算法(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章讲解 1 概述 根据ELM AE的特征表示能力 将它
  • 循环机换变速箱油教程_「图文并茂」最先进的自动变速箱油更换全过程

    自动变速箱发展至今 内部的电子和液压控制等已经变得异常复杂 因此定期保养自动变速箱就显得尤为重要 一般来说 更换自动变速箱油的期限汽车厂家建议6 8万公里或2 3年左右 4S店会建议缩短更换里程 不及时更换自动变速箱油会直接影响车辆的性能
  • 关于机器学习数据挖掘的算法总结(优缺点)

    目录 一 支持向量机 SVM 二 朴素贝叶斯 三 逻辑回归Logistic Regression 四 线性回归 五 最近领算法 KNN 六 决策树 七 K Means聚类 八 层次聚类 九 DBSCAN的分析 十 回归 Regression
  • RTL8762DK RTC(五)

    概述 本示例 只要介绍 RTC 如何实现 年 月 日 时 分 秒 又离成功进了一步 一 环境 1 硬件 RTL8762DK 128M Bits Falsh 2 软件 keil IDE 二 RTC的使用 1 创建examples ble rt
  • 高泽龙:下一个独角兽来自长租公寓,行业创新极大地释放租赁红利

    超过万亿的巨大市场前景 九部委联合印发住房租赁新政 提出将采取多种措施加快推进租赁住房建设 培育和发展住房租赁市场 长租公寓尤其让众多资本机构觊觎 正在用惊人的扩张速度勾勒出一幅蓝图盛景 对于被称为 下一个风口 的公寓行业 各方有不同的解读
  • ant design vue 年份选择器

    因为ant design vue 里面没有原生的年份选择器 需要使用date picker去改造 html
  • 文件包含漏洞特点和php封装伪协议

    渗透学习 文件包含漏洞 文章目录 渗透学习 前言 本文只做学习用途 严禁利用本文提到的技术进行非法攻击 否则后果自负 本人不承担任何责任 一 文件包含漏洞 二 实验步骤 1 文件包含特点 2 本地包含配合文件上传包含图片马 3 包含Apac
  • udig下载、安装及汉化,生成geoserver图层样式sld文件

    uDig是一款开源免费的桌面地理信息系统框架软件 uDig汉化版主要采用RCP技术构建 内置的多专业的水文工具 拥有复杂专业的分析能力 既可以作为独立程序运行 还可以作为插件使用 uDig是一个 open source EPL and BS
  • 【报错记录】AttributeError: ‘xxx‘ object has no attribute ‘module‘

    文章目录 问题描述 问题分析与解决 总结 参考资料 问题描述 在跑代码时 报出 AttributeError InpaintGenerator object has no attribute module 的错误 如下图所示 经过一通Deb
  • Qt 带参数的信号与槽

    1 在dialog h中定义带参数的信号函数 signals void A double level double pitch double dis double time double min spend double max spend
  • 花5分钟判断,你的Jmeter技能是大佬还是小白!

    jmeter 这个工具既可以做接口的功能测试 也可以做自动化测试 还可以做性能测试 其主要用途就是用于性能测试 但是 有些公司和个人 就想用 jmeter 来做接口自动化测试 你有没有想过呢 下面我就给大家讲讲 用 jmeter 如何做接口