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

Jmeter使用 -1

1 接口测试

1.1 为什么要进行接口测试
  • 接口测试能够绕过前端校验,对后端的接口处理逻辑进行测试(数据的边界/格式/类型)

  • 在一些需要重复测试的需求中,接口自动化的效率比手工执行效率高

1.2 接口测试流程
  1. 熟悉API接口文档(接口业务,地址,端口,鉴权,入参,出参,错误码等信息)

  2. 编写接口用例后进行用例评审

  3. 执行用例

用例编写

  • 正例:输入正常的参数,接口能够正常返回

  • 反例:

    • 鉴权异常:Cookie / Token 为空/过期/错误

    • 参数异常:为空 / 长度异常 / 类型异常 / 边界异常 / 缺少必要参数

    • 其他异常:调用次数限制,分页场景

    • 兼容异常:接口被多端调用 ,版本兼容

2 Jmeter基础知识

2.1 Jmeter文件
  • Jmeter/bin/jmeter.properties 是Jmeter的全局配置文件(设置中文 / Cookie信息管理)

  • Jmeter/bin/jmeter.bat 是Jmeter的启动文件

2.2 Jmeter组件(执行顺序从上到下)
  1. 测试计划:存放测试线程组的容器

  2. 线程组:代表执行的用户数量

  3. 配置元件:配置请求信息(请求头,Cookie)

  4. 前置处理器:请求之前的操作

  5. 定时器:延时发送请求

  6. 逻辑控制器:处理请求逻辑

  7. 取样器:发送请求的最小单元

  8. 后置处理器:请求之后的操作

  9. 断言:对响应结果进行判断

  10. 监听器:收集测试结果

2.3 组件作用域
  • 组件可以作用于同级组件

  • 组件可以作用于统计组件下的下级组件

  • 组件可以作用于上级组件

2.4 使用Jmeter发送请求
  1. 创建测试计划

  1. 在测试计划中添加线程组

  2. 在线程组下添加配置元件

    1. 在线程组添加HTTP Cookie头管理器(实现Cookie自动关联)

    2. 在线程组中添加HTTP 请求默认值(设置默认协议,域名,端口,编码格式)

    3. 在线程组中添加HTTP信息头管理器(公共请求头管理)

  3. 在线程组中添加HTTP取样器,填写请求信息

  4. 在HTTP取样器下添加前置处理器 / 后置处理器(提取器) / 断言

3 Jmeter HTTP请求参数类型

参数:用于在HTTP请求的URL查询字符串或者是在表单数据中发送键值对数据

  • 发送GET请求,会作为URL查询字符串拼接在URL之后

  • 发送POST请求,会作为请求体数据(表单)

消息体数据:数据作为请求体内容传输,通常用于传输JSON类型的参数

  • 需要设置正确的Content-Type头,以告知服务器数据的格式。

文件上传:用于传输二进制数据

  • 文件名称(文件路径) 参数名称 MIME类型(填写multipart/form-data)

4 Jmeter提取器

4.1 正则提取器

名称:提取器名称

注释:提取器备注信息

提取器作用范围:主请求是HTTP取样器配置的请求,子请求是由主请求触发的嵌套请求(重定向/嵌入资源:例如在HTML页面中会请求图片,CSS样式,JS文件等,都会触发子请求)

  • Main Sample and sub-samples:对主请求以及子请求生效(从主请求/子请求中提取数据)

  • Main Sample only:仅对主请求生效(默认选项)

  • sub-samples only:仅对子请求生效

要检查的响应字段:指定从哪个部分提取数据

  • 主体:响应主体(推荐选择)

  • Body(unescaped):响应主体,不转义

  • Body as a Document:通过Apache Tika作为文档处理响应主体

  • 信息头:响应头

  • Requests Headers:请求头(从请求中进行提取)

  • URL:请求的URL。

  • 响应代码:响应状态码(例如200)。

  • 响应信息:响应消息(例如“OK”)

引用名称:后续请求引用该数据使用的名称,通过 ${引用名称} 来使用该变量

正则表达式:提取数据的正则表达式,一个表达式中可以有多个捕获组

  • 捕获组:用()括起来的字符串称为捕获组

  • {"code":(.*?),"message":"(.*?)","data":null} 此处正则表达式有两个捕获组,会从响应中匹配符合该正则表达式的字符串

  • 访问捕获组:在匹配成功后,Jmeter会为每个捕获组分配一个编号,从1开始,可以通过${引用名称_gX}(X为捕获组编号)来访问捕获组的内容

模板:用于从正则匹配结果中创建字符串的模板

使用 $数字$ 表示捕获组-- $1$ 表示第一个捕获组 ,多个捕获组可以自定义连接: $1$_$2$ (使用下划线连接)

匹配数字:指定提取哪个匹配结果。

0 表示随机匹配 , 1 表示匹配第一个符合条件(推荐选项),N 表示匹配第N个 , -1 表示提取所有匹配结果,并存储到多个变量中,多个变量名称为 引用名称_X(1,2,3...)

缺省值:查询失败给变量设置的默认值

使用空默认值:勾选此选项后,如果没有找到匹配项,则变量将被设置为空字符串

正则提取器提取失败可能原因

  • 提取器的作用范围错误或者是提取器提取的响应字段错误,检查正则提取器提取范围和提取字段

  • 正则表达式匹配错误,可以在察看结果树处对正则表达式进行测试,如果提取成功,则说明表达式正确,提取失败,则说明表达式错误

4.2 JSON提取器

  • 只能针对JSON数据生效

JSONPath的提取表达式

  • 表达式 $.节点Key.节点Key ,

  • 取所有子节点,使用 $.* 提取所有子节点

  • 如果key返回的value是列表,列表取值通过下标,下标从0开始

http://www.lryc.cn/news/591095.html

相关文章:

  • React Native打开相册选择图片或拍照 -- react-native-image-picker
  • php主流框架FastAdmin框架详解以及如何查看版本号和初始安装fastadmin框架-优雅草卓伊凡|大东家
  • Flutter在Android studio运行出现Error: Entrypoint is not a Dart file
  • HikariCP数据库连接池高性能优化实战指南
  • 23种设计模式--#2单例模式
  • git的cherry-pick
  • Py-Clipboard :iOS与Windows互相共享剪贴板(半自动)
  • AI+医疗!VR和MR解剖学和针灸平台,智能时代如何重塑健康未来
  • vue3实现web端和小程序端个人签名
  • [RAG] LLM 交互层 | 适配器模式 | 文档解析器(`docling`库, CNN, OCR, OpenCV)
  • docker安装与简单项目上手
  • 如何实现微信小程序引导组件【添加到我的小程序】+ 附源码
  • wx小程序原生开发使用高德地图api
  • 大语言模型任务分解与汇总:从认知瓶颈到系统化解决方案
  • 分布式分片策略中,分片数量的评估与选择
  • SAP-ABAP:SAP的‘cl_http_utility=>escape_url‘对URL进行安全编码方法详解
  • 2025毫米波雷达技术白皮书:智能汽车与物联网的感知核心
  • 【web安全】DVWA存储型XSS分析与利用
  • 【Linux系统】进程地址空间
  • 一款基于PHP开发的不良事件上报系统源码,适用于医院安全管理。系统提供10类事件类别、50余种表单,支持在线填报、匿名上报及紧急报告。
  • 亚马逊广告进阶指南:广告成本预算怎么设置合理
  • Ubuntu20.04 安装qt5.12.8
  • Unity_通过鼠标点击屏幕移动屏幕里的一个对象
  • Django 实战:静态文件与媒体文件从开发配置到生产部署
  • 贴吧项目总结二
  • 基于Rust Softplus 函数实践方法
  • 【项目经验】小智ai源码学习记录
  • Webpack5 新特性与详细配置指南
  • 基于LSTM的机场天气分析及模型预测
  • Python eval函数详解 - 用法、风险与安全替代方案