【性能测试】接口测试各知识第4篇:Jmeter 八大元件及执行顺序,学习目标【附代码文档】

news2024/12/23 14:05:32

接口测试完整教程(附代码资料)主要内容讲述:接口测试,学习目标学习目标,2. 接口测试课程大纲,3. 接口学完样品,4. 学完课程,学到什么,5. 参考:,1. 理解接口的概念。学习目标,RESTFUL1. 理解接口的概念,2.什么是接口测试,3. 接口测试的基本流程,4. 学习掌握接口测试工具RESTClient、Postman的使用,目标,1. 定义。Jmeter 基本使用流程学习目标,目标,1. 主界面布局,2.Jmeter的基本使用流程,3. 相关概念。Jmeter 八大元件及执行顺序,参数化学习目标,目标,1. 元件作用域及执行顺序,2. 八大可执行元件,目标,目标。Jmeter 从数据库中获取数据,Jmeter 关联目标,目标,为什么要使用Jmeter从数据库中获取数据?,目标,1. 需求,2. 正则表达式提取器。Jmeter断言,Jmeter 集合点目标,目标,1. 断言概述,2. 需求,3. 响应断言,4. Size Assertion(大小断言)。Jmeter 逻辑控制器学习目标,目标,1 为什么要学习逻辑控制器?,2. 什么是逻辑控制器?,3. 常用(控制类)逻辑控制器,4. 常用(分组类)。Jmeter 图形监视器扩展插件下载及使用,项目-学生信息管理系统学习目标,目标,1. 为什么要下载图形监视器扩展插件?,2. 图形监视器扩展插件有什么用?,目标,目标。项目-学生信息管理系统,Jmeter 附件-API文档目标,目标,Queries释义,Queries释义,目标,目标。接口自动化脚本设计,性能脚本设计目标,目标,为什么要设计自动化脚本?,3. 组件配置图,4. 整体效果动态演示,5. 脚本执行含查数据库演示。Jmeter FTP服务器测试,Jmeter Test Fragment(测试片段)目标,目标,1. FTP是什么?,2. FTP有什么用?,3. 如何测试FTP服务器?,目标。

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


全套教程部分目录:


部分文件图片:

学习目标

  • 了解Jmeter的优缺点
  • 能够搭建Jmeter的测试环境
  • 知道Jmeter的基本使用流程
  • 能够区分组件和元件的区别
  • 掌握Jmeter的基本使用

Jmeter 八大元件及执行顺序


目标

  • 了解八大元件的作用域
  • 知道八大元件的执行顺序
  • 掌握每个元件的作用及常用组件

JMeter的主要元件:

  • 控制器(Controllers)
  • 监听器(Listeners)
  • 计时器(Timers)
  • 配置元素(Configuration Elements)
  • 预处理器元素(Pre-Processor Elements)
  • 后处理器元素(Post-Processor Elements)

1. 元件作用域及执行顺序

jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同.

jemter主要依靠测试计划中元件相对位置,来确定作用域.

元件的肤质关系及元件本身类型决定test plan中各元件的执行顺序;元件在test plan中位置不同,可能导致该元件有很大的行为差异.

1.1 元件作用域

在jmeter中,元件的作用域是靠test plan的树形结构中元件的父子关系来确定的,其原则如下:

1)sampler不与其他元件相互作用,因此不存在作用域问题

2)Logic Controller只对其子节点中的sampler和Logic Controller作用

3)除sampler和Logic Controller外的其他元件,如果是某个sampler的子节点,则该元件仅对其父节点作用

4)除sampler和Logic Controller外的其他元件,如果其父节点不是sampler,则其作用域是该元件父节点下的其他所有后带节点(包括子节点,子节点的子节点等)

jmeter中共有8类可被执行的元件(test plan和thread group不属于元件),其中,sampler(取样器)是不与其他元件发生交互的作用的元件,Logic Controller(逻辑控制器)只对其子节点的sampler有效,而其他元件需要与sampler等元件交互。

Config Elements(配置元件):影响其范围内的所有元件

Pre-porcessors(前置处理器):在其作用范围内的每一个sampler元件之前执行

Timer(定时器):对其作用范围内的每一个sampler有效

Post-porcessors(后置处理器):在其作用范围内的每一个sampler元件之后执行

Assirtions(断言):对其作用范围内的每一个sampler元件执行后的结果执行校验

Listener(监听器):收集其作用范围内的每一个sampler元件的信息并且呈现出来

1.2 执行顺序

在同一个作用域范围内,测试计划中的元件按照一下顺序执行:
1.配置元件
2.前置处理器
3.定时器
4.取样器
5.后置处理器
6.断言
7.监听器

注意:

  1. Pre-porcessors、Post-porcessors和Assirtions等元件仅对Sampler作用,如在它们作用域内没有任何Sampler,则不会被执行;

  2. 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在test plan中的上下顺序依次执行

2. 八大可执行元件

2.1. 控制器(Controllers)

控制器分为两大类:

  • 取样器
  • 逻辑控制器

作用: 用这些元件驱动处理一个测试

1.1 取样器(Sampler)

添加取样器

是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元. JMeter 原生支持多种不同的sampler , 每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求.

常用的sampler:

1) HTTP请求
2) JDBC Request 
3) Debug Sampler
1.2 逻辑控制器

逻辑控制器

包含两类元件:

  • 一类是控制Test Plan中Sampler节点发送请求的逻辑顺序控制器,常用的有:If Controller、Swith Controller、Loop Controller、Random Controller等
  • 另一类是用来组织和控制Sampler节点的,如Transaction Controller、Throughput Controller等

2.2 监听器

监听器

监听器是对测试结果进行处理和可视化展示的一系列组件.

常用的组件:

1) 察看结果树
2) 聚合报告 
3) 断言结果

2.3. 定(计)时器

定时器

作用: 设置操作之间的等待时间. 等待时间是性能测试中常用的控制客户端QPS的手段.

常用:

1) Synchronizing Timer

2.4. 配置元件(config Element)

元件配置

作用: 设置相关请求的静态配置.不用每次都重复配置.

常用的:

1) CSV Data Set Config
2) HTTP请求默认值
3) HTTP信息头管理器

2.5. 前置处理器(Per Processors)

前处理器

作用: 在实际请求发出前对即将法术的请求进行特殊处理.

例如:Count处理器可以实现自增操作,自增后生成的的数据可以被将要发出的请求使用,而HTTP URL Re—Writing Modifier处理器则可以实现URL重写

1) 用户参数

2.6. 后置处理器(Post Processors)

后置处理器

作用: 对sampler发出请求后得到服务器响应进行处理.一般用来提取响应的特定数据.

常用:

1) 正则表达式提取器 
2) XPath Extractor

2.7. 断言(Assertions)

添加断言

作用: 用于检查测试中得到的响应数据是否符合预期.Assertions一般用来设置检查点,用以保证性能测试过程中的数据交互与预期一致

常用:

1) 响应断言

注意: test plan和thread group不属于元件

目标

  • 参数化:数据分离
  • 数据库:连接数据库获取数据
  • 关联:动态获取数据
  • 集合点:掌握如何基于Jmeter并发测试
  • 断言:判断自动化脚本执行成功或失败

目标

  • 参数化:数据分离
  • 数据库:连接数据库获取数据
  • 关联:动态获取数据
  • 集合点:掌握如何基于Jmeter并发测试
  • 断言:判断自动化脚本执行成功或失败

参数化

学习目标

  • 了解参数化的分类
  • 能够使用CSVDataConfig进行多条数据测试
  • 能够定义用户参数
  • 了解用户自定义变量的过程
  • 能够使用函数进行测试

1. 为什么要参数化

现在有下面需求:

学院-新增100条数据:
    1) 请求方法:POST
    2) 请求地址:
    3) 请求JOSN报文:
    4) 调用传入的json串如下(可新增多条,之间用,隔开):
        {
            "data": [
                    {
                        "dep_id": "T01",
                        "dep_name": "Test学院",
                        "master_name": "Test-Master",
                        "slogan": "Here is Slogan"
                    }
              ]
        }

思考

如何快速实现??

2. 参数化概述

2.1 Jmeter参数化的概念

当使用JMeter进行测试时,测试数据的准备是一项重要的工作。若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据.

参数化就是动态的获取或设置数据.

参数化:是自动化测试脚本的一种常用技巧,可将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则。

例如登录时利用GET/POST请求方式传递参数的场景.

脚本在运行时,根据需要选取不同的参数值作为输入,该方式称为数据驱动测试(Data Driven Test),而参数的取值范围被称为数据池(Data Pool)。

2.2 参数化的四种方式及使用场景对比

参数化使用场景
1CSV Data Set Config适用于参数取值范围较大的时候使用,该方法具有更大的灵活性
2User Parameters适用于参数取值范围很小的时候使用
3User Defined Variables一般用于Test Plan中不需要随请求迭代的参数设置,如:Host、Port Number
4函数可作为其他参数化方式的补充项,如:随机数生成的函数${__Random(,,)}

3. CSV Data Set Config

概念:一种从外部读取数据功能的组件

3.1 实施方案分析

1. 基于测试计划->线程组
2. 基于线程组->配置元件->CSV Data Set Config
3. 基于线程组->Sampler->HTTP请求
4. 基于测试计划->HTTP信息头管理器
5. 基于测试计划->监听器->察看结果树

3.2 组件要点分析

1. 线程组:循环次数10
2. CSV Data Set Config 读取变量配置
3. HTTP请求:Body Data填写(JSON报文) 方法(POST)
4. 参数化引用格式:${参数名} 如:${dep_id}
5. HTTP信息头管理器:Content-Type:application/json;charset=utf-8

3.3 参数配置图

csv

1. Filename:文件路径+文件名+后缀名    如:d:/a.txt;
2. File Encoding:文件编译字符编码,一般设置utf-8;
3. Vaiable Names:读取参数后保存的变量名称;
4. Delimiter:如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;
5. Allow quoted data: 是否允许引用数据,默认false,选项选为“true”的时候对全角字符的处理出现乱码 ;
6. Recycle on EOF?:是否循环读取参数文件内容;True是循环读取; False时,读取文件末尾就不在继续读取.
7. Stop thread on EOF?:当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义;
8. Sharing mode:共享模式,即参数文件的作用域.

3.4 添加http信息头管理器并进行参数配置

作用: 服务器请求的数据格式.

添加http

参数配置:

1. Content-Type:指定请求信息格式-类型名称
2. application/json:指定请求信息为-JSON格式
3. charset=utf-8:字符编码
3.5 添加http请求

添加http

3.6 总结

1. CSV Data Set Config 配置参数设置
2. 参数化引用格式
3. HTTP请求
4. HTTP信息头管理器作用与设置

4. 用户定义变量

用户可根据需求自定义相应的变量,一般做全局变量使用。

分析:     
    1. 通过概念我们知道,【用户定义的变量】一般做全局变量使用,不适合参数需求量大时的选择
    2. 所以在这里我们不在使用,用户定义的变量去做我们学院新增时的解决方案
    3. 主要讲解下它做参数化时的使用步骤和方式

4.1 需求场景

1. 查询学院-指定: 
2. 接口查询指定的id(T02)采用参数动态获取方式

4.2 解决方案分

1. 参数化组件:用户定义的变量 (测试计划->线程组->配置元件->用户定义的变量)
2. 线程组 
3. 请求组件:HTTP请求 
4. 查看结果组件:察看结果树

4.3 效果图

用户变量

1. 名称:变量名称(参数化引用时使用)
2. 值:变量的值(通过引用变量名称获取的值)
3. Description:备注说明

4.4 总结:

1. 一般做设置全局变量
2. 请求时附带少量参数需求使用

5. 用户参数

一种参数设置方式,用户可设置参数名称以及参数值;

我们使用用户参数作为参数化方式对学院新增10条记录问题进行实现

5.1 解决方案实施分析

1. 位置:测试计划-->线程组-->前置处理器-->用户参数 
2. 其他组件和CSV Data Set Config实现新增10个学院相同,去除 CSV Data Set Config组件

5.2 组件要点分析

1. 线程组:注意是【线程数】为10
2. 用户参数:学院每个属性为一个参数名称;参数格式:可以是数字、字母、下划线开头,建议最好是实义单词
3. HTTP请求:Body Data填写(JSON报文) 方法(POST)
4. 参数化引用格式:${参数名} 如:${dep_id}
5. HTTP信息头管理器:Content-Type:application/json;charset=utf-8

5.3 用户参数配置

用户参数配置图

1. 添加变量:学院资源属性 (dep_id、dep_name、master_name、slogan)
2. 添加用户:每个线程为没一个用户

5.4 用户参数-总结:

1. 用户参数位置
2. 线程组设置
3. 引用参数化方式  
4. 用户参数适合满足少量参数化需求场景使用

6. 函数

函数是完成某个指定功能代码的封装。

1. 函数查找方式:函数助手对话框
       1) 菜单-选项->函数助手对话框
       2) Ctrl+Shift+F1
       3) 工具栏倒数第二个记事本图标
2. 函数在Jmeter中有非常多类型(计数函数、日期函数、随机函数...)

6.1 需求:

1. 查询学院-所有:
2. 查询10次,在每次请求地址后面增加访问记录数

6.2 需求关键点分析

1. 起个计数参数名 如:num
2. 把计数参数名的值给参数化
3. 参数化的值使用计数函数(count)

6.3 实施方案

1. 基于测试计划添加线程组(循环次数10)
2. 基于线程组添加HTTP请求
3. 基于测试计划添加察看结果树

6.4 函数配置

函数配置

1. 选择一个功能:选择_counter计数函数
2. 第一个参数:TRUE,每个用户有自己的计数器;FALSE,使用全局计数器 我们选FALSE
3. 点击生成
4. 选择复制生成的函数

6.5 函数的结果图

使用函数结果图

?num=${__counter(FALSE,)}

1. ?:问号后面一切东东,HTTP请求不做解析
2. num:为我们起的一个计数参数名称
3. ${__counter(FALSE,)}:为我们粘贴进来的函数作为值使用

6.6 函数总结:

1. 使用方便快捷
2. 经常配合固定参数使用

7. 参数化方式总结

7.1 区别

1. CSV Data Set Config: 功能强大、适应各种迭代及多参复杂场景。
2. 用户参数:适应传递少量参数时使用
3. 用户定义的变量:和用户参数使用场景相似,不同在于一般做全局变量使用
4. 函数:功能强大,函数类型繁多,灵活度大,适应各种应用场景。

7.2 推荐

1. CSV Data Set Config 
 2. 函数

未完待续, 同学们请等待下一期

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

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

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

相关文章

《综合品酒师》培训刷新纪录:FENDI CLUB精酿啤酒点亮行业里程碑

导语:在璀璨的品酒文化星空中,一颗新星正悄然升起,它就是云仓酒庄。近日,云仓酒庄成功举办的《综合品酒师》培训活动不仅刷新了大世界基尼斯纪录,更以其与众不同的FENDI CLUB精酿啤酒品鉴课程引起了品酒新风尚。这一盛…

TCP的一些功能详述

文章制作不易,望各位大佬多多点赞,球球各位啦!!!! 目录 1.TCP的简介 2.TCP协议中部分数据的理解 1.端口号 2.序列号 3.四位首部长度 4.6位保留位 5. 16位校验和 6.数据(TCP的载荷&#…

upload-labs第九十关

第九关 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(UPLOAD_PATH)) {$deny_ext array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml"…

HarmonyOS Next 悬浮窗拖拽和吸附动画

介绍 本示例使用position绝对定位实现应用内悬浮窗,并且通过animateTo结合curves动画曲线实现悬浮窗拖拽跟手和松手吸附边缘的弹性动画效果。 效果图预览 使用说明 按住悬浮窗可以拖拽,松开后悬浮窗自动靠左或靠右,如果悬浮窗超出内容区上…

【C++】深度解析--拷贝构造函数(从0开始,详解浅拷贝到深拷贝,小白一看就懂!!!)

目录 一、前言 二、拷贝构造函数 🍎概念解析 🥝特性解析 💦为什么拷贝构造函数使用传值方式会引发无穷递归调用? 💦为什么拷贝构造函数的形参中要加入 const 修饰 💦若未显式定义,编译器会生…

c语言,单链表的实现----------有全代码!!!!

1.单链表的定义和结构 单链表是一种链式的数据结构,它用一组不连续的储存单元存反线性表中的数据元素。链表中的数据是以节点的形式来表示的,节点和节点之间相互连接 一般来说节点有两部分组成 1.数据域 :数据域用来存储各种类型的数据&…

深入理解同步与异步编程及协程管理在Python中的应用

文章目录 1. 同步与异步函数的对比1.1 同步函数1.2 异步函数1.3 对比 2. 管理多个协程与异常处理2.1 并发执行多个协程2.2 错误处理2.3 任务取消 本文将探索Python中同步与异步编程的基本概念及其区别。还会详细介绍如何使用asyncio库来有效管理协程,包括任务的创建…

一文读懂uniapp中的tabBar底部导航

目录 1. 基本知识2. Demo 1. 基本知识 UniApp 中的 tabBar 是用来在应用程序底部显示可切换的选项卡的组件,通常用于实现底部导航栏 允许用户通过点击不同的选项卡来切换应用程序的不同页面或功能模块 其代码如下: "tabBar":{"color&q…

UOS系统-mips架构---Java环境安装

平时都是在windows系统上安装的java环境,今天需要在uos系统安装java1.8的环境,记录一下安装过程。 (以下均在root权限下运行) 一、查找java1.8 jdk版本 apt search openjdkopenjdk-8-jdk/未知,未知 1.8.0.212-2deepin mips64el O…

车载摄像头画质增强解决方案,赋能智能驾驶新时代

在智能化浪潮席卷汽车产业的今天,车载摄像头作为智能驾驶的“眼睛”,其画质清晰度直接关系到车辆感知环境的准确性和驾驶的安全性。然而,面对复杂多变的行车环境,如何确保车载摄像头在不同场景下都能呈现出高质量的图像&#xff0…

分布式调度平台xxl-job

1.xxl-job介绍 xxl-job 是一个轻量级分布式任务调度框架,支持动态添加、修改、删除定时任务,支持海量任务分片执行,支持任务执行日志在线查看和分页查询,同时支持任务失败告警和重试机制,支持分布式部署和高可用。xxl…

一文弄懂Seaborn绘制热力图

1. 引言 在本文中,我们将使用Seaborn库来以heatmap热力图的形式来表示数据。我们将重点介绍如何创建它,以及如何更改其颜色,调整对应字体大小等等。 闲话少说,我们直接开始吧! 2. 什么是热力图? Heatma…

Python 数学应用(四)

原文:zh.annas-archive.org/md5/123a7612a4e578f6816d36f968cfec22 译者:飞龙 协议:CC BY-NC-SA 4.0 第十一章:其他主题 在本章中,我们将讨论一些在本书前几章中没有涉及的主题。这些主题大多涉及不同的计算方式以及优…

向量数据库与图数据库:理解它们的区别

作者:Elastic Platform Team 大数据管理不仅仅是尽可能存储更多的数据。它关乎能够识别有意义的见解、发现隐藏的模式,并做出明智的决策。这种对高级分析的追求一直是数据建模和存储解决方案创新的驱动力,远远超出了传统关系数据库。 这些创…

C代码编译过程与进程内存分布

C代码编译过程 在这篇文章中,我们将探讨C语言代码的编译流程以及进程在运行时的内存布局。编译过程通常包括几个关键步骤:预处理、编译、汇编和链接。 预处理阶段主要是处理源代码文件中的宏定义、头文件包含和条件编译指令。在此阶段,编译…

ping命令的使用

一、实验环境 同实验案例分析ARP解析过程环境。 二、需求描述 熟悉 ping 命令的用法并熱悉 ping 命令的各种参数 三、推荐步骤 分别 ping 一个存在的和不存在的IP地址,观察返回的信息分别测试 ping 命令的相关参数。 四、实验步骤 1.ping 一个存在的和不存在…

工业电脑在ESOP工作站行业应用

ESOP工作站行业应用 项目背景 E-SOP是实现作业指导书电子化,并统一管理和集中控制的一套管理信息平台。信迈科技的ESOP终端是一款体积小巧功能齐全的高性价比工业电脑,上层通过网络与MES系统连接,下层连接显示器展示作业指导书。ESOP控制终…

FPGA - ZYNQ 基于EMIO的PS和PL交互

前言: Xilinx ZYNQ系列的芯片,GPIO分为 MIO 、EMIO、AXI_GPIO三种方式。 MIO :固定管脚,属于PS端,也就是ARM端。 EMIO :通过PL扩展,使用时需要分配PL(FPGA)管脚,消耗PL端资源。…

redis-plus-plus的安装与使用

文章目录 一、安装第一步:安装hiredis第二步:安装redis-plus-plus第三步:将编译后的可执行文件移动到/usr/local对应目录第四步:更新动态库 二、使用第一步:编写示例代码第二步:编译运行 本文参考自 redis-…

Pytest测试用例中的mark用法(包含代码示例与使用场景详解)

在软件开发中,测试是确保代码质量和功能稳定性的重要环节。Python作为一门流行的编程语言,拥有丰富的测试工具和框架,其中pytest是其中之一。pytest提供了丰富的功能来简化测试用例的编写,其中的mark功能允许我们对测试用例进行标…