【性能测试】接口测试各知识第3篇:Jmeter 基本使用流程,学习目标【附代码文档】

接口测试完整教程(附代码资料)主要内容讲述:接口测试,学习目标学习目标,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功能界面布局
  • 熟悉测试计划面板

1. 主界面布局

JMeter的主界面布局分为标题栏、菜单栏、工具栏、树形标签栏和内容栏

标题栏:主要显示计划信息及JMeter版本。
菜单栏:全部的功能的都包含在菜单栏中。
工具栏:工具栏中的按钮在菜单栏都可以找到,工具栏就相当于菜单栏常用功能的快捷按钮
树形标签栏:树形标签栏通常用来显示测试用例(计划)相关的标签。
内容栏:配合树形标签栏显示,树形标签中点击哪个标签,内容栏中就显示相应的内容和操作。

jmeter界面

组件

概念: Jmeter中功能点称为组件

元件

概念:相同类似功能组件的集合称之为元件.

常用的八大元件:

  1. 逻辑控制器
  2. 配置元件: 包含java默认值、http请求默认值、http表头管理器等等
  3. 定时器(Timer): 包含同步定时器、泊松随时时间等
  4. 前置(预)处理器: jdbc 预处理器、html链接解析器,用户参数等
  5. 采样器(Sampler): 包含http请求、jdbc请求、邮件请求等
  6. 后置处理器: 包含jdbc后处理器、xpath抽取器、正则表达式抽取器等
  7. 断言
  8. 监听器: 包含图表结果、查看结果树、汇总报告等

2.Jmeter的基本使用流程

需求:
1. 需求对我们学院查询执行100次,如何去做?
2. 50个请求同时请求如何操作?
使用JMeter的解决方案
1. 添加【测试计划】
2. 基于添加的测试计划添加【线程组】,循环次数设置为100次
3. 在【取样器】中基于线程组添加**HTTP请求**  
4. 在【监听器】基于线程组添加【察看结果树】  
5. 在监听器基于线程组添加【聚合报告】

2.1 创建测试计划

创建测试计划

在测试计划的名称栏目修改名字后,ctrl + s 保存

2.2 设置请求三要素

Jmeter基本使用流程设置http

2.3 运行并查看结果

(1). 设置监听器和结果树

设置监听器

(2). 查看运行结果

查看运行结果

3. 相关概念

3.1 TestPlan(测试计划)

测试计划

在Jmeter中包含各种相互关联但为不同目的而设计的元素.

测试计划可视化为用于运行测试的JMeter脚本, 包含执行脚本的所有步骤。测试计划由测试元素组成,包括线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素等等。

每个测试计划中至少应有一个线程组。 我们可以根据要求添加或删除元素。

测试计划的作用:
1. 本次测试所需要的【组件】都是基于测试计划添加;
2. 本次测试所有组件的设置与执行都基于测试计划;

组件:完成指定功能代码段的封装;
选项(在这里我们只介绍我们会使用到的选项)
  • 独立运行每个线程组:
进程:是每个正在运行的应用程序。
线程:按照进程的指令去执行指定的代码。
线程组(多线程):多个线程的组合。
线程组(多线程)的执行顺序是并行的。 

勾选:让本次测试计划中所有线程组保持从上到下顺序执行
  • Add directory or jar to classpath:
加载第三方jar包;比如:测试数据库时使用,加载数据库驱动jar包。
注意事项
  • 在运行测试计划前,一定要保存测试计划

  • Jmeter文件或测试计划以.jmx扩展文件形式保存.JMX是一种基于开放测试的格式,它使测试计划能够在文本编辑器中启动.

3.2 Threads(User)线程组 【重点】

创建线程组

1. thread group(线程组): 通常添加使用的线程组,一般一个线程组可以看作一个虚拟用户组,其中每个线程为一个虚拟用户.
2. setup thread group: 一种特殊线程组, 可用于执行预测试操作,即执行测试前进行, 一般做初始化操作.
3. teardown thread group: 一种特殊的线程组, 可用于执行后操作,即执行测试结束后执行, 一般做结尾操作.
(1)、 thread group(线程组)

线程组

作用:
1. 添加测试中使用的大多数组件
在取样器错误后要执行的动作
- 继续: 取样器执行时出现错误时,请求不会停止,继续执行
- Start Next Thread Loop: 忽略错误, 线程当前循环错误,执行下一个循环
- 停止线程: 只限当前线程停止,不影响其他线程执行
- 停止测试: 当前执行的线程全部执行完毕后结束
- Stop Test Now: 立刻停止
线程属性
- 线程数:虚拟用户数
- Ramp-Up Period(in serconds):启动虚拟全部用户数所需要的时间
- 循环次数 :指定次数或勾线永远
- Delay Thread creation until needed: 默认不勾选,测试开始时,所有线程被创建完.若勾选,线程会在需要合适时间进行创建.
- 调度器:勾选后,调度器配置才能使用;
调度器配置
- 持续时间(秒):设置脚本压测持续时间
- 启动延迟(秒):启动延迟时间
- 启动时间: 设置启动时间和启动延迟冲突.如果启动延迟设置后,启动时间被忽略.
- 结束时间: 设置脚本运行结束时间,和持续时间冲突,若有持续时间,结束时间会被忽略

提示:为了理解setup thread、teardown thread两个线程组我们结合案例理解下

(2) 案例

需求:

通过thread group、setup thread group、teardown thread group 三个线程组去访问去访问查询所有学院接口

效果图

效果图

1. 需求组件:
1. 基于测试计划添加【线程组】  
2. 基于线程组添加【HTTP请求】
3. 基于测试计划添加【setup thread group】线程组
4. 基于setup thread group添加HTTP请求
5. 基于测试计划添加【teardown thread group】线程组
6. 基于teardown thread group添加HTTP请求
7. 基于测试计划添加【察看结果树】
2. 组件设置细节:
1. 测试计划勾选独立运行线程组 
2. HTTP请求:服务器地址 
3. HTTP请求: 修改HTTP请求名称,以做区分
3. 结论
经过测试我们发现线程组的执行顺序是: setup thread group、thread group、 teardown thread group

3.3 Http请求

添加http请求

创建http请求

http界面

http界面

(1)、 作用:
1. 模拟前端或第三方软件向服务器发送请求;
2. 设置请求时的方法和参数数据;
(2)、 参数详解:
1. 名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
2. 服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
3. 端口号:目标服务器的端口号,默认值为80 。
4. 协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
5. 方法:发送HTTP请求的方法,可用方法包括GET、POST、PUT、DELETE。
6. Content encoding :内容的编码方式,默认值为iso8859;一般设置【UTF-8】
7. 路径:目标URL路径(不包括服务器地址和端口)
8. 同请求一起发送参数:请求时需要传递参数,如:学院资源list查询

         参数名称:【$dep_id_list】
         参数值:T01,T02,T03
(3)、 Body Data选项作用:
1.新增或更新时需要传递JSON报文;如学院新增是的JSON报文填写位置:
       {
          "data": [
                      {
                        "dep_id": "T01",
                        "dep_name": "Test学院",
                        "master_name": "Test-Master",
                        "slogan": "Here is Slogan"
                      }
                  ]
        }

    2. 【注意】:新增和更新时传入报文也需要设置Content-Type:application/json   
                 告诉服务器我传的数据格式为JSON格式;  
                 设置地点:配置元件-->HTTP信息头管理器(用到的时候我们在讲解)
HTTP请求总结:
1. 接口完整请求地址
2. JSON报文存放地址
3. 设置默认请求数据格式

3.4 查看结果树

查看结果树

(1)、 作用:
1.查看请求服务器时的请求信息;
2.查看服务器响应数据;
3.记录信息到指定文件;
(2)、 说明:
1. 文件名:存放服务器响应后的状态信息; 如:e:\查询所有response.txt
2. 取样结果:服务器响应的信息头信息;比如:响应代码,响应数据大小
3. 请求:查看向服务器请求时的信息;比如:请求地址、方法、数据等
4. 响应数据:查看服务器响应的数据;比如:获取资源时,返回的JSON数据
察看结果树总结:
1. 查看请求
2. 查看响应
3. 存储请求状态信息

4. 总结

我们发现在Jmeter中测试计划是展开测试工作的源头,所以要掌握测试计划的创建、删除操作; 在测试计划使用中我们根据不同需求创建不同的元件和组件, 来实现测试计划.

元件是相似功能组件的集合,能够便于管理组件,而组件是某个功能的在Jmeter中的实现.

测试计划中每个线程组就是虚拟的一组用户,每个线程就是一个虚拟用户,对于每个用户发起的测试的请求,可以每次定义http请求

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年公共管理、健康与大数据国际学术会议(ICPAHBD 2024)

2024 International Conference on Public Administration, Health and Big Data (ICPAHBD 2024) ●会议简介 2024年公共管理、健康与大数据国际学术会议(ICPAHBD 2024)即将在宁波盛大召开。本次会议旨在汇聚全球公共管理、健康与大数据领域的专家学者…

【示例】MySQL-MySQL中常见的锁

前言 本文主要讲述MySQL中常见的锁。 总结 | 各类别锁的名字 锁级别锁名字解释全局锁read lock全局锁只有可读锁表级锁 - 表锁read lock 表共享读锁write lock 表独占写锁表级锁 - 元数据锁(meta data lock,MDL)SHARED_READ_ONLYSHARED_NO…

浏览器工作原理与实践--HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络

前面两篇文章我们分析了HTTP/1和HTTP/2,在HTTP/2出现之前,开发者需要采取很多变通的方式来解决HTTP/1所存在的问题,不过HTTP/2在2018年就开始得到了大规模的应用,HTTP/1中存在的一大堆缺陷都得到了解决。 HTTP/2的一个核心特性是使…

MySQL 修改数据

目录 数据插入-insert 不指定列名插入: 插入整行数据 格式: 多行数据插入 格式: 指定列名插入 插入1行 插入多行 更新字段-update 语法: 删除表 语法: 案例: 数据插入-insert INSERT 将数据行…

从IoTDB的发展回顾时序数据库演进史

面向工业物联网时代,以 IoTDB 为代表的时序数据库加速发展。 时序数据的主要产生来源之一是设备与传感器,具有监测点多、采样频率高、存储数据量大等多类不同于其他数据类型的特性,从而导致数据库在实现高通量写入、存储成本、实时查询等多个…

AI电影创作,AI影视创作全套完整课程

课程下载:https://download.csdn.net/download/m0_66047725/89064240 更多资源下载:关注我。 课程内容: 【试听课】AI发展的现状及对影视行业未来的影响.mp4 0【AI影视创作】流程与基本逻辑_1.mp4 1【AI基础课程】ChatGPT 注册安装流程.…

LinkedList部分底层源码分析

JDK版本为1.8.0_271&#xff0c;以插入和删除元素为例&#xff0c;LinkedList部分源码如下&#xff1a; //属性&#xff0c;底层结构为双向链表 transient Node<E> first; //记录第一个结点的位置 transient Node<E> last; //记录最后一个结点的尾元素 transient …

半透明进口特氟龙材质镊子可耐受强酸强碱腐蚀PFA镊子

PFA镊子用于夹取小型片状、薄状、块状样品&#xff0c;广泛应用在半导体、新材料、新能源、原子能、石油化工、无线电、电力机械等行业。 具有耐高低温性&#xff08;可使用温度-200℃&#xff5e;&#xff0b;260℃&#xff09;、耐腐蚀、表面不粘性等特点&#xff0c;用于苛…

python--字符串对象和

1、找出10000以内能被5或6整除&#xff0c;但不能被两者同时整除的数&#xff08;函数&#xff09; def Divisible_by_5_6(x:int)->list:arr[]for i in range(1,x1):if (i % 5 0 or i % 6 0 ):if i % 5 0 and i % 6 0:continue #利用continue跳过能被5和6整除的数else:a…

跟bug较劲的第n天,undefined === undefined

前情提要 场景复现 看到这张图片&#xff0c;有的同学也许不知道这个冷知识&#xff0c;分享一下&#xff0c;是因为我在开发过程中踩到的坑&#xff0c;花了三小时排查出问题的原因在这&#xff0c;你们说值不值。。。 我分享下我是怎么碰到的这个问题&#xff0c;下面看代码…

服务器安装完SqlServer远程电脑连接不了

1、将服务器的TCP/IP启用 2、重新启动服务 cmd输入services.msc

【数据结构与算法篇】双链表实现

【数据结构与算法篇】双链表实现&#xff08;近300行实现代码&#xff09; &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;数据结构与算法&#x1f345; &#x1f33c;文章目录&#x1f33c; 1. List.h 头文件的声明 2. List.c 源文…

Python通过socket搭建一个web服务器

目录 01、源码 02、运行结果 03、小结 Socket是一种计算机网络通信的一种机制&#xff0c;它允许不同计算机或进程之间通过网络进行数据传输和通信。Socket可以被看作是不同计算机之间的数据传输通道&#xff0c;通过这个通道&#xff0c;计算机之间可以进行双向的数据传输。…

在线药房数据惨遭Ransomhub窃取,亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件119起&#xff0c;与上周相比勒索事件有所增长。 本周Blacksuit是影响最严重的勒索家族&#xff0c;Ransomhub和Blackbasta恶意家族紧随其后&#xff0c;从整体上看Lockbit3.0依旧是影响最严重的勒索家族&#xff0c;需要注意防范。…

二百三十二、Kettle——修改MySQL中历史数据为当前系统日期并增量同步到ClickHouse中

一、目的 由于一些雷达死了但是又需要有数据进行展示&#xff0c;于是就把这些雷达的历史数据&#xff0c;修改日期为当前日期后&#xff0c;增量同步到ClickHouse中&#xff0c; 二、难点 1、获取当前日期&#xff0c;并且修改历史数据的create_time字段的日期部分 2、如果…

C语言之九九乘法表||素数||最小公倍数

一、九九乘法表 &#xff08;1&#xff09;思路 1、九九乘法表中存在三个变量&#xff0c;以 x1 ; x2 ; y 为例&#xff08;这里也可以使用两个变量&#xff0c;用x1和x2来表示y&#xff0c;方法一样&#xff09; 2、想好了变量之后&#xff0c;我们要想怎样将他实现呢&#x…

Excel/WPS超级处理器,提取汉字/字母/数字

在职场工作中&#xff0c;经常会遇到单元格中有汉字&#xff0c;数字&#xff0c;字母三者的自由组合&#xff0c;但往往只需要其中的一者&#xff0c;如何快速提取呢&#xff0c;超级处理器&#xff0c;提供了4个功能可选。 超级处理器下载与安装 1&#xff09;分离字符 将…

前端用 HTML5 + CSS3 + JavaScript,后端连接什么数据库更简单?

当前端使用 HTML5、CSS3 和 JavaScript 进行开发时&#xff0c;后端连接何种数据库是一个非常重要的问题&#xff0c;因为数据库的选择直接影响着后端代码的编写、数据存储与查询的效率以及系统的可维护性。 1. 关系型数据库&#xff08;SQL 数据库&#xff09;&#xff1a; …

水经微图IOS版5.2.0发布

随时随地&#xff0c;微图一下&#xff01; 水经微图&#xff08;简称“微图”&#xff09;IOS新版已上线。 在该版本中主要新增图层树节点排序功能、常规&#xff08;矩形、圆、椭圆、扇形&#xff09;绘制功能、地形夸张等主要功能。 当前版本 当前版本号为&#xff1a;5…

分类算法——sklearn转换器和估计器(一)

转换器&#xff08;特征工程的父类&#xff09; 实例化&#xff08;实例化的是一个转换器类&#xff08;Transformer&#xff09;&#xff09;调用fit_transform&#xff08;对于文档建立分类词频矩阵&#xff0c;不能同时调用&#xff09; 把特征工程的接口称之为转换器&…