Jmeter 做接口自动化测试的这些技巧你都掌握了吗

news2024/11/18 1:21:35

 

前言

JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。

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

下面我就给大家讲讲
 

 jmeter 如何做接口自动化测试。

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

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

但是,很遗憾,你这种,是初级入门做法。你能实现所有的测试用例都被执行,但是,你写脚本和维护脚本的时间,可能比你用手工执行所有的测试用例时间还要长,而且还可能长很多。因为,只要开发人员改了接口一个地方,你得从所有取样器中,找出与这个接口相关的所有取样器,然后一一修改,万一有遗漏,哪出现的失败,不是 bug,而是你脚本的问题。所以说,这是入门级的人干的事情。

使用 jmeter 的 CSV 数据文件读取功能

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

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

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

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

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

第一个对单接口

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

第二个

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

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

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

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

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

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

 这个 CSV 文件中,有两个不同的接口,说明是做的业务场景自动化测试,第一个接口,是注册,那么每次注册的账户肯定不能相同,如果相同了,那么第二次肯定失败,所以,就使用了随机函数,让注册的账户自动生成。第二个接口是登录,当然,可以用固定账户登录,但是,我们在全面进行注册,最好还是用前面注册的账户来登录,这样更加真实,body 中使用了变量引用,显然,这是用到了关联。

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

 

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

怎么办呢?

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

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

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

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

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

那还有没有其他的函数呢?

eval 函数,这个函数,返回的是字符串表达式运行的结果。

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

 

 

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

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

 

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

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

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

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

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

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

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

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

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

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

结语

这篇帖子到这里就结束了,当然,这还不是最完美的,里面还有诸多不足。给想用 jmeter 做接口自动化测试的同学开了个头,更多的,还需要同学们自己动手,最后,希望看这篇帖子的朋友能够有所收获,也欢迎同学们,在文章后面留言讨论和我交流。

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

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

相关文章

DBF文件的解析介绍

1.基本介绍 DBF是Digital Beam Forming的缩写,“.dbf”文件扩展名代表据库处理系统所产生的数据库文件,起初意为保存数据的文件是一个简单的表,可以使用ASCII字符集添加、修改、删除或打印数据,随着产品变得越来越流行&#xff0…

SIN65 DM蓝牙5.2双模热插拔PCB

键盘使用说明索引(均为出厂默认值) 软件支持(驱动的详细使用帮助)一些常见问题解答(FAQ)首次使用步骤蓝牙配对规则(重要)蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功…

idea连接远程MySQL数据库

填写URL,以mysql为例 格式 jdbc:mysql://ip地址:端口号/数据库名 jdbc:mysql://127.0.0.1:3306/ldentification _Information

在 Kubernetes 上体验 EMQX 5.0 的 MQTT over QUIC 特性

引言 作为全球领先的开源分布式 MQTT Broker,EMQX 在 5.0 版本中引入了 MQTT over QUIC,将 MQTT 协议的优势与 QUIC 的特性相结合。通过充分利用 QUIC 协议低连接开销和多路复用的特点,MQTT over QUIC 为弱网络环境和不规则网络中的用户提供…

lib/db 标准单元分类(Standard Cells in ASIC Design)、Track定义

文章目录 drain curruntThreshold Voltage (VTH)channel lengthtrack(Classification according to the Density)Standard Cell Layout drain currunt Drain current (Id) uCox(W/L)[(Vgs-Vth)Vds-(1/2)Vds^2] Coxepision/tox#饱和电流计算公式&#xf…

C#上位机开发广阔前景

作为一名C#上位机开发人员,我可以告诉你,C#是一门广泛使用的编程语言,在软件开发领域有很多机会和前途。以下是一些关于C#上位机开发的理由: 广泛应用:C#是微软的主要开发语言之一,被广泛用于开发各种类型…

Linux 性能优化(网络、磁盘、内存、日志监控)

文章目录 1、CPU性能监控1.2、平均负载基础1.3、平均负载与 CPU 使用率1.4、监控命令top命令mpstat命令pidstat场景一:CPU 密集型进程场景二:I/O 密集型进程场景三:大量进程的场景1.5、CPU上下文切换1.6、 遇到CPU利用率高该如何排查1.7、根据…

【java】获取前一天日期

//获取前一天日期//写法一LocalDate yesterday2 LocalDate.now().minusDays(1);System.out.println(yesterday2);//写法二LocalDate yes1 LocalDate.now().plusDays(-1);System.out.println(yes1);//输入当前日期的年 月 日System.out.println(LocalDate.now().getYear());…

Redis 的 LRU 与 LFU 算法实现

一、前言 原文地址 Redis是一款基于内存的高性能NoSQL数据库,数据都缓存在内存里, 这使得Redis可以每秒轻松地处理数万的读写请求。 相对于磁盘的容量,内存的空间一般都是有限的,为了避免Redis耗尽宿主机的内存空间,R…

【高通WLAN】WLAN bdf如何配置支持UMC设备和TSMC设备

除了用于台积电(TSMC)设备的现有bdf文件外,软件升级中还包括新的WLAN bdf文件,以支持UMC设备。 bdf文件导入的路径是 wlan_proc\wlan\halphy_tools\host\bdfUtil\qca61x0\bdf ■ TSMC(现有):bdwlan.xxx至bdwlan.bin ■ UMC(新):bdwlanu.xxx至bdwlanu.bin 以上配置…

可以带着游泳的耳机有哪些,推荐几款可以在水下使用的游泳耳机

在夏天里游泳是一件相当舒适的运动项目,比起汗流浃背的健身房,游泳池已经成为了更多人所倾向的地方,因为它不仅可以起到塑性的效果,而且还能够让自己时长保持在舒爽的状态,这时就会有朋友在问,游泳的时候节…

IDEA介绍

集成开发环境(IDE)简介 集成开发环境(IDE,Integrated Development Environment)是为程序开发提供便利的应用程序。通常包括代码编辑器、编译器、调试器和图形用户界面等工具。它们集成了代码编写、分析、编译、调试等…

时间序列预测 | Matlab鲸鱼算法(WOA)优化极限梯度提升树XGBoost时间序列预测,WOA-XGBoost时间序列预测模型,单列数据输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 鲸鱼算法(WOA)优化极限梯度提升树XGBoost时间序列预测,WOA-XGBoost时间序列预测模型,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% …

基于单片机停车场刷卡收费的设计与实现

功能介绍 以51单片机作为主控系统;以51单片机作为主控系统;通过液晶显示当前时间,车位、剩余车位、时间等信息;进电机正反转表示开关门;按键可以设置当前时间/单价/分钟;RC522射频卡识别,当刷卡…

Qt Core学习日记——第二天QMetaClassInfo

QMetaClassInfo是QMetaObject中用于存放类信息的数据结构 QMetaClassInfo定义: class Q_CORE_EXPORT QMetaClassInfo { public: Q_DECL_CONSTEXPR inline QMetaClassInfo() : mobj(nullptr), handle(0) {} const char *name() const; const char *value() co…

使用Jetpack Compose中的Pager构建滑动页面

Jetpack Compose是Google为Android开发者提供的一种现代化的UI工具包,它采用声明式UI范式,使得开发者能够更加简洁、直观地构建用户界面。在这篇博客中,我们将探讨如何使用Jetpack Compose中的Pager构建滑动页面。 什么是Pager? …

如何查看Linux是否开启了数据包转发功能

如果Linux主机有多块网卡,如果不开启数据包转发功能,则这些网卡之间是无法互通的。 如何开启数据包转发功能: echo 1 > /proc/sys/net/ipv4/ip_forward sysctl -w net.ipv4.ip_forward1 如何查看是否开启了数据包转发功能: …

Some Strategies for Reducing Write Amplification in LSM-tree

写放大原理 (6 封私信) 如何理解SSD的写放大? - 知乎 (zhihu.com) 日志结构化合并树(LSM 树) LSM 树: 与应用就地更新的传统

直播预约|漫漫用户增长之路,如何快人一手

【导读】 如何实现用户增长及提升用户活跃度是各大开发者关注的重点之一,日常运营过程中,消息推送作为一个触达用户的有效手段,通过恰当的时机和智能的投放模式,可以有效提升消息的曝光度并吸引用户点击,从而实现用户…

​DMBOK知识梳理for CDGA/CDGP——第十章 参考数据与主数据(附常考知识点)

第十章 参考数据与主数据 第十章在CDGA分值占比不高,CDGP分值占比较高,主要考点包括:定义、目标、原则、参考数据及主数据管理好处、异同点、哪些属于主数据、活动、工具、度量指标等基本概念。因此本章建议充分理解参考数据及主数据的基础概…