当前位置: 首页 > news >正文

Jmeter做接口测试

1.Jmeter的安装以及环境变量的配置

Jmeter是基于java语法开发的接口测试以及性能测试的工具。
jdk:17 (最新的Jeknins,只能支持到17)
jmeter:5.6 官网:http://jmeter.apache.org/download_jmeter.cgi
认识JMeter的目录:
backups目录:备份脚本
bin目录:模板,主jar包,启动文件,jmeter.propties全局配置文件。jmeter-server.bat分布式压
测。
修改全局配置文件:
language=zh_CN 设置为中文
sampleresult.default.encoding=utf-8
extras目录:存放和集成第三方的一些文件。
lib目录:jar包

2.使用Jmeter执行接口测试

1.测试计划

在一个测试计划中可能存在多个线程组

线程组之间在执行时是没有顺序的。如果希望线程按顺序执行,则需要勾上【独立运行每个线程组】

2.Jmeter的组件作用域

组件可以作用于父组件
组件可以作用于同级组件
组件可以作用于同级组件的子组件

3.线程组和测试片段

测试片段就是一个特殊的线程组

线程组

线程组适用于自己调试或者单个测试人员去调试

在线程组中也可以创建模块控制器去执行测试片段

测试片段和include处理器

测试片段是特殊的线程组,和线程组同级别。用于多个测试之间协同做接口测试。主要是和模块控
制以及Include控制结合使用。

特点:
1.默认是禁用状态。
2.单个测试片段无法执行,需要结合模块控制器(自己调试)以及Include控制器(leader)执行。

使用include控制器去执行该测试片段(注意:要添加对应的测试片段存放路径)

4.测试单个接口

接口信息(事例)

添加配置原件

HTTP请求默认值

协议: 根据url

服务器名称或IP: 跟在协议后面的第一段字符串

端口号: http--80,https--443

HTTP Cookie管理器

用于传入cookie

用户定义的变量

相当于全局变量

填写接口信息

新建一个http请求,然后填入相关信息

web服务器: 同HTTP请求默认值, 如果信息与默认值相同则不用填, 如果不同则填

HTTP请求: GET,POST,PUT....(根据接口信息填)

路径: url中ip地址后面的字符串

查看接口执行结果

添加一个查看结果树

执行后进去查看对应接口的执行结果,查看响应信息是否符合期望

5.接口关联(多个接口)

什么是接口关联

当一个接口(接口1)的响应结果为另一个接口(接口2)的传参时, 需要先执行接口1,并通过提取器获取对应的结果数据, 然后将结果数据再放入接口2的对应位置

常用提取器

正则表达式提取器

引用名称相当于变量名, 可使用 ${引用名称} 来使用该变量

正则表达式可以提前在查看结果树中测试是否可以获取得到

语法: 使用字典的形式填写,在value部分填入 (.*?) 即可(记得加引号)

如果要获取多个值,可以在木板部分加入多个 $*$ 的结构 一个 $*$ 代表接收一个对应位置的值

边界提取器

语法: 和正则比较相似

左边界为:  "key":"

右边界为:  "

JSONpath提取器

Json语法:
(1) $ 根节点
(2).或[] 去子节点
(3)如果是数组(llist),则通过下标取值
(4)相对路径用法:$..name 这里的name一般需要唯一。
(5)列表切片:$.tags[0:3]
总结:看到字典则用.看到列表则用[0]下标,下标从0开始。

Xpath提取器

同web自动化里面的定位方式,一般用于返回html网页时。

关联事例

在上一个接口中我使用正则表达式提取机中的引用名称为token,所以该接口的路径如下填写:

6.动态参数接口测试

工具--》函数助手对话框。
1.随机数字函数(在给定数字范围随机一个整数)

2.随机字符串函数(根据传入的内容字符串和长度,随机出一个新的字符串)


3.随机时间戳函数(根据当前时间生成时间戳)


4.其他函数(大写)(使用JavaScript函数)

在字符串(带变量的字符串也可以)后面加上 .toUppCase() 

3.接口测试常规断言和数据库断言

常规断言

断言作用在接口用例中

1.响应断言

2.json断言

3.beanshell断言

主要通过Failure标识是否失败和FailureMessage标识失败信息。
Failure=true 失败,Failure=false 成功。

相关文章:

  • 【FPGA】Verilog:实现 RS 触发器 | Flip-Flop | 使用 NOR 的 RS 触发器 | 使用 NAND 的 RS 触发器
  • wpf devexpress自定义编辑器
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • Android13版本新特性介绍
  • 向量机SVM代码实现
  • 你知道什么是SaaS吗?
  • springBoot集成websocket实时消息推送
  • 【uniapp】 video视频层级、遮挡其他弹窗或顶部导航 使用nvue覆盖
  • 《Fine-Grained Image Analysis with Deep Learning: A Survey》阅读笔记
  • 【最新Tomcat】IntelliJ IDEA通用配置Tomcat教程(超详细)
  • 【计算机网络笔记】网络地址转换(NAT)
  • ClickHouse数据一致性
  • LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  • 代码随想录算法训练营第二十八天| 78 子集 90 子集|| 93 复原IP地址
  • 基于SSM的北海旅游网站设计与实现
  • Akka系列(七):Actor持久化之Akka persistence
  • Apache Zeppelin在Apache Trafodion上的可视化
  • extract-text-webpack-plugin用法
  • Java超时控制的实现
  • Protobuf3语言指南
  • vue 个人积累(使用工具,组件)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 从0实现一个tiny react(三)生命周期
  • 复杂数据处理
  • 汉诺塔算法
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 排序算法学习笔记
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 通过npm或yarn自动生成vue组件
  • 微服务入门【系列视频课程】
  • 移动端 h5开发相关内容总结(三)
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • Java总结 - String - 这篇请使劲喷我
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #stm32整理(一)flash读写
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)Controller接口控制器详解(三)
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)详解PHP处理密码的几种方式
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net中我喜欢的两种验证码
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /bin/bash^M: bad interpreter: No such file or directory
  • /boot 内存空间不够