Jmeter基础教程合集

news2024/12/23 20:34:47

环境搭建

1.安装java 8.0以上版本
2.下载jmeter并安装。安装参考网址:https://blog.csdn.net/wust_lh/article/details/86095924
3.打开JMeter中bin目录下面的jmeter.bat文件即可打开JMeter了,打开的时候会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不要关闭命令窗口。(也可以配置环境变量,在cmd下使用jmeter启动)
在这里插入图片描述
在这里插入图片描述

Jmeter各组件的执行顺序

1、配置元件:配置一些全局参数

2、前置处理器:运行前需要处理的数据

3、定时器

4、取样器(sampler)

5、后置处理器 :处理响应结果

6、断言

7、监听器

请求并查看响应

在这里插入图片描述

a.添加线程组在这里插入图片描述
添加取样器–HTTP请求
在这里插入图片描述
添加监听器,查看结果树。
在这里插入图片描述
6.在这里插入图片描述
查看结果树:
在这里插入图片描述

get/delete/put请求

在这里插入图片描述

GET请求
在这里插入图片描述
在这里插入图片描述
put请求
在这里插入图片描述
在这里插入图片描述
delete请求
在这里插入图片描述
在这里插入图片描述

断言

在这里插入图片描述

想要看到断言结果,需要添加监听器,断言结果
在这里插入图片描述
添加响应断言
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
两个断言都失败了?为什么我这返回的没有百度一下。
在这里插入图片描述

响应结果的中文都是乱码了。
参考这篇文章解决
https://www.cnblogs.com/xiaxiaoxu/p/9607017.html
再次请求,一条断言成功,一条断言失败。

在这里插入图片描述
响应断言,JSON断言
在这里插入图片描述
https://www.jianshu.com/p/0ab3e5e22673

响应断言

响应断言的适用于返回的是HTML文本,或者是XML文本等格式,控制面板中允许添加要与请求或响应的各个字段进行比较的模式字符串。
在这里插入图片描述

json断言

json断言
1.json断言,请求结果需要是json格式的
注意这里$后面必须有一个点.
在这里插入图片描述
在这里插入图片描述
2.添加断言结果
在这里插入图片描述
断言失败才会在断言结果中显示。

配置元件

HTTP信息头

在这里插入图片描述
在这里插入图片描述
请求,会发现request headers有显示添加上的信息头
在这里插入图片描述

CSV data set config

配置元件之CSV数据文件配置
在这里插入图片描述

添加CSV Data Set Config
在这里插入图片描述
CSV数据文件配置
在这里插入图片描述
在变量名称处填写变量,如果需要忽略首行,则设置为True。
CSV文件
在这里插入图片描述
设置变量引用 ${变量名}
在这里插入图片描述
这个设置后,还需要设置线程组的数量,如测试数据有100个,则线程组设置100个,即可读取100个测试数据。

用户定义变量

21天Jmeter打卡day15 配置元件之用户定义的变量+抽离公共数据
在这里插入图片描述
https://www.jianshu.com/p/b2e40ff62952
添加配置元件,用户定义的变量
在这里插入图片描述
把协议和请求设置为用户自定义变量
在这里插入图片描述
在这里插入图片描述
设置引用
在这里插入图片描述
执行请求,读取变量成功
在这里插入图片描述

逻辑控制器

循环控制器

逻辑控制器之循环控制器
在这里插入图片描述
https://www.jianshu.com/p/53335b2ff9be
添加循环控制器,设置循环次数为2
在这里插入图片描述
在这里插入图片描述
这样设置,就是执行四次
注意循环控制器内的组件会被循环执行,如果组件不在循环控制器内,则不会被循环。
如图,HTTP请求和CSV配置,都在控制器内。

If控制器

逻辑控制器之if和简单控制
在这里插入图片描述
https://www.jianshu.com/p/9e3838cfb220
1.读取所有数据 循环控制器设置次数为6
在这里插入图片描述
2.添加if控制器 注意接口需要在if控制器下
在这里插入图片描述
在这里插入图片描述
3.登录名不等于IDO127
在这里插入图片描述
在这里插入图片描述

线程用户

setUp和tearDown

setup一般可用来请求登录接口,返回token.
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
其实学过unittest,就知道setup和teardown分别是测试类的初始准备工作和结束工作。

监听器

21天Jmeter打卡Day14 监听器之查看结果树+断言结果+聚合报告+图形结果+表格查看结果
在这里插入图片描述
https://www.jianshu.com/p/c81806d82142

先写文件路径,再执行线程。
在这里插入图片描述
jtl格式的打不开?
响应断言:
在这里插入图片描述
断言结果:
在这里插入图片描述
汇总报告:
在这里插入图片描述
聚合报告:
在这里插入图片描述
断言结果:如果没有写断言,或者成功,只显示请求名称。
在这里插入图片描述
图形结果:
在这里插入图片描述
表格查看结果:
在这里插入图片描述
断言结果写入文件:
在这里插入图片描述

后置处理器

json提取器、BeanShell后置处理程序接口关联

参数传递 token传递,接口关联
在这里插入图片描述
https://www.jianshu.com/p/e3a116f7bf6b
实现效果,把第一个请求的响应结果,提取出来,作为变量传入第二个请求。
1.在请求下添加【JSON提取器】和【BeanShell后置处理程序】。
在这里插入图片描述
在这里插入图片描述
可以在要提取的接口的响应结果通过json path 来测试下能不能取到值。

同线程组和不同线程组,用的变量不一样。同用的是vars,不同用的是props
在这里插入图片描述


//同线程组
vars :操作 jmeter 变量,它是测试用例与 BeanShell 交互的桥梁,常用方法:

vars.get(String key):从jmeter 中获得变量值
vars.put(String key,String value):数据存到 jmeter 变量
//跨线程组
props :操作 jmeter 属性,该变量引用了 JMeter 的配置信息,可以获取Jmeter
的属性,它的使用方法与 vars 类似,但是只能 put 进去 String 类型的值,而不能是一个对象。

props.get(“START.HMS”);START.HMS 为属性名,在jmeter.properties 中定义
props.put(“PROP1”,“1234”);


同线程组设置变量
在这里插入图片描述
在第二个请求中读取该变量,注意需要加双引号
在这里插入图片描述
也可以在信息头中读取该变量
在这里插入图片描述
查看结果。token成功读取到值。
在这里插入图片描述
请求头也成功读取到值。
在这里插入图片描述

后置处理器_JSON_正则表达式_边界提取器_完成删除场景模拟测试

在这里插入图片描述
https://www.jianshu.com/p/5c1d64e5d724
Json提取器见Day16

正则表达式

在这里插入图片描述
正则表达式提取器填写引用名称和表达式
在这里插入图片描述
BeanShell后置处理程序提取变量并赋值
在这里插入图片描述
在下一个接口引用变量
在这里插入图片描述

{
“blog_name”:“21天打卡”,
“bolg_title”:“Jmeter打卡之Day16”,
“blog_details”:“21天打卡”,
“token”:“${__P(loginName,)}”
}

前置处理器

前置处理器_熟悉常用组件
前置处理器使用场景

1、准备测试数据
2、数据加密–BeanShell 预处理程序
3、连接数据库取数据 --JDBC预处理程序
在这里插入图片描述
https://www.jianshu.com/p/84866b2315f8

BeanShell 预处理程序

这里引用了用户自定义变量中的passwd,并把这个值加密为passwd_base。
在这里插入图片描述
在登录接口请求中引用加密后的密码(我这里请求后失败了,没找到原因)
在这里插入图片描述
在这里插入图片描述

数据库连接

21天Jmeter打卡Day19 JDBC连接数据库增删改查,抛出变量
在这里插入图片描述
https://www.jianshu.com/p/2d1a3ae8cbd7

1.安装Mysql驱动

下载地址:https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.44.zip
解压后将.jar驱动文件拷贝到jmeter安装目录lib文件夹下

2.JDBC connection Configuration

添加JDBC connection Configuration

在这里插入图片描述
参数说明:
Variable Name:数据库连接池的名称,名字可自定义,但是必须与* * JDBC Request中的Variable Name保持一致
Database URL:数据url jdbc:mysql://主机ip或者机器名称:mysql监听的端口号/数据库名称,例如:jdbc:mysql://localhost:3306/sqltest
jdbc:mysql://localhost:3306
JDBC Driiver class:JDBC驱动
Username:数据库登录的用户名
Password:数据库登录的密码

3.添加JDBC Request

在这里插入图片描述
参数说明:
Variable Name:数据库连接池的名字,需要与JDBC Connection * * * Configuration 的 Variable Name Bound Pool 名字保持一致
SQL QUERY:多条sql语句,需要用“;”隔开
Select Statement:仅支持测试select语句,并且一次只能测试一条
Update Statement:支持测试费select语句,并且支持测试多条
若中夹杂select语句,会自动忽略若第一条语句为select语句,则会报错
Callable Statement:语法正确,支持多条任何语句,如果需同时执行多条语句,JDBC Connection Configuration 中 Database URL,配置中加上?allowMultiQueries=true,否则报错(例如:jdbc:mysql://localhost:3306/sqltest?allowMultiQueries=true)
Parameter valus:参数值
Parameter types:参数类型,(例如:int char varchar等)
Variable names:保存sql语句返回结果变量名
Result variable name:创建一个对象变量,保存所有返回的结果
Query timeout:查询超时时间
Handle result set:定义如何处理由callable statements语句返回的结果

4.运行线程,查看结果。

添加一个察看结果树,运行线程。

可以看到成功取出数据库表中的数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.引用变量

在这里插入图片描述
在JDBC_Request中声明变量
在这里插入图片描述
在需要用到变量的请求中引用,注意这里_1表示取结果的第一个值。

在这里插入图片描述

在这里插入图片描述

在请求结果可以看到,成功取到第一个值。

作业场景

使用上述的操作方法,自行完成Jmeter操作数据库并取出里面的值(一个就好,有兴趣的可以取出所有的),并思考这个JDBC request能在测试中帮助我们做什么工作?

作用:取出数据库的测试数据

疑问,login_name_1只取出了第一个值,如果操作能将取出的所有值都赋值给同一个请求呢?–foreach控制器

ForEach控制器

在这里插入图片描述
参数说明:
输入变量前缀:本例中为login_name(与JDBC Requse中的返回结果Variable names变量名一致)
Start index for loop (exclusive):循环开始的索引(默认从0开始,如果填写是2,实际是从2+1个开始执行)
End index for loop(inclusive):循环结束的索引
输出变量名称:提供给其他控件引用,可自定义,调用时使用该参数
Add“-”before number:输入变量名称中是否使用-进行间隔。

在这里插入图片描述
将需要循环取值的请求放在ForEach控制器下,这里输入参数为${login_name},每次Foreach从数据库取出一个值,就执行一次请求。

在这里插入图片描述
执行请求,数据库一共15条数据,这里执行了15次请求,每次取出了一个loginname赋值给请求。

测试报告

生成HTML测试报告
在这里插入图片描述
参考:https://www.jianshu.com/p/bc42f8c69fee

方式一:GUI生成

方式二:CLI生成

修改JMeter 下 bin 目录中的jmeter.properties 配置文件

jmeter.save.saveservice.output_format=csv

在测试脚本文件路径下,执行cmd 命令:

参数说明:
参数 说明
-n 非GUI 模式执行JMeter
-t 执行测试文件所在的位置
-l 指定生成测试结果的保存文件,jtl 文件格式
-e 测试结束后,生成测试报告
-o 指定测试报告的存放位置

//1.无.jtl文件生成测试报告(注意修改路径)
jmeter -n -t test.jmx -l result.jtl -e -o html
//jmeter是执行命令, -n -t 参数,test.jmx是jmeter文件(可以带路径),-e -o 是参数 ,html是位置
这种方式以非GUI模式执行jmeter,先生成jtl文件,再生成html报告。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从测试报告可以看出,sorcefile是result.jtl
执行结果100%pass
JDBCRequest执行了一次,初始化退出request执行了15次。

//2.利用已有.jtl文件生成报告(注意修改路径)
jmeter -g test.jtl -o /path

生成的测试报告(自带的是性能测试报告,附带很多信息),官网详解:
https://jmeter.apache.org/usermanual/generating-dashboard.html

fiddler结合jmeter

参考 https://www.jianshu.com/p/b3dcc28108f0

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

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

相关文章

【数据结构】哈希表——闭散列 | 开散列(哈希桶)

🐱作者:一只大喵咪1201 🐱专栏:《数据结构与算法》 🔥格言:你只管努力,剩下的交给时间! 哈希表 🎯哈希🥊直接定址法🥊除留余数法🥊哈…

CHAPTER 3: 《A FRAMEWORK FOR SYSTEM DESIGN INTERVIEWS》第3章 《面试系统设计框架》

CHAPTER 3: A FRAMEWORK FOR SYSTEM DESIGN INTERVIEWS 你刚刚获得了梦寐以求的理想公司的现场面试机会。招聘协调员给你发送了当天的日程安排。浏览列表,你会感觉很好直到你的目光落在这个面试环节——系统设计面试。 系统设计面试通常很吓人。它可以像“设计一个…

【Redis】缓存同步

【Redis】缓存同步 文章目录 【Redis】缓存同步1. 数据同步策略2. 异步通知策略3. Canal3.1 Canal客户端3.2 监听器 1. 数据同步策略 缓存数据同步的常见方式有三种: 设置有效期:给缓存设置有效期,到期后自动删除,再次查询时更新…

网络系统集成实验(四)| 系统集成路由器基本配置

目录 一、前言 二、实验目的 三、实验需求 四、实验步骤与现象 (一)静态路由 Step1:构建实验拓扑如下 Step2:IP地址配置如下 Step3:配置静态路由 Step4:验证 (二)NAT配置—…

OpenPCDet复现过程记录

0、前言 OpenPCDet项目之前我就复现过,一个很优秀的项目,这几天又需要用到这个项目,再次复现遇到了不少问题,特此记录复现的流程 1、环境准备 1.1、前置条件 以下是我安装的版本 CUDA 11.3CUDNN 8.2.1 CUDA和CUDNN安装可以参考…

Yolo v1 笔记

个人不太懂的点 1.损失函数的4与5项 【论文解读】Yolo三部曲解读——Yolov1 - 知乎 https://www.youtube.com/watch?vNkFENlEb4kM&t672s 训练阶段: C_i 预测值:由网络输出出来7*7*30中第一个bbox和第二个bbox的置信度confidence C_i^hat 标签值…

(六)大数据实战——hadoop集群实现免密登录和文件互传

前言 本节内容我们主要介绍一下hadoop集群服务器之间实现免密登录和文件互传的功能,这样更加方便我们使用hadoop服务器实现服务器之间的相互登录和文件的相互传输。集群之间的访问不在需要授权就可以实现相互访问。 正文 SSH免密登录 ①分别在hadoop101、hadoop1…

后台管理系统之登录方案记录

需求:根据当前环境的不同,请求不同的 BaseUrl 解决:在根目录中新建.env.development与.env.production连个文件,进行配置: # .env.production ENV production# base api VUE_APP_BASE_API /prod-api# .env.develop…

目标检测——YOLOv8(十四)

简介: YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务。不过 ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用 ultralytics 这个词,原…

nodejs+vue 学分置换管理系统

在大学四年参加了各类竞赛后,我发现参加各类比赛存在报名过程过于繁琐,评比过程不透明和易出错等问题,所以在定题时与老师商讨后确定设计和实现基于nodejs的高校竞赛信息发布系统,帮助老师发布竞赛内容,便于同学们线上…

24考研数学每日一题(带解析)2023年12月1日-2023年12月31日

title: 24考研数学每日一题Latex版(带解析) date: 2023-01-28 11:49:26 plugins: mathjax tags:学习考研 categories:考研数学 题目来源于武老师的每日一题,答案是自己做的,不太严谨,仅供参考 2022年12月1日 知识点…

区块浏览器Tokenview受邀参加2023香港Web3嘉年华,用科技与善良打造全球区块浏览器Web3生态

区块浏览器Tokenview受邀参加2023香港Web3嘉年华,用科技与善良打造全球区块浏览器Web3生态 4月12-15日,由万向区块链实验室、HashKey Group 联合举办、W3ME 承办的「2023 香港 Web3 嘉年华」在香港会议展览中心举行。该活动被称为香港有史以来规模最大的加密领域活…

无人机飞行控制实验平台

无人机在研制过程中需要不断地进行飞行测试,而测试的过程不是万无一失的,飞行过程中发生任何错误都有可能会导致无人机的损毁或破坏,更严重地甚至会造成外界伤害。 基于此我们推出了无人机的三旋转自由度 (3-DOF) 飞行平台测试系统&#xff…

学成在线笔记+踩坑(4)——【媒资管理模块】上传图片,Nacos+Gateway+MinIO

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 1. 媒资管理模块简介 1.1 模块介绍 1.2 业务流程 1.2.1 上传课程图片 1.2.2 上传视频 1.2.3 处理视频 1.2.4 审核媒资 1.2.5 绑定媒…

龙讯旷腾材料计算大赛启动,打怪升级赢大奖

龙讯旷腾2023计算大赛第一期电催化计算大赛启动 选拔赛截止日期5月21日 决赛截止日期5月28日 大赛亮点 免费培训、灵活安排时间参与 多次机会冲关决赛奖励金 已购/未购用户均可参加 使用Mcloud参赛送500元机时 计算大赛——看视频学习还能赢奖金? 材料计算…

Java学习-MySQL-事务

Java学习-MySQL-事务 ACID原则:原子性、一致性、隔离性、持久性 原子性(Atomicity) 两个步骤要么一起成功,要么一起失败,不可能只成功一个。 举例: A账户400元,B账户600元,A向B转…

Cloudera的新变化:混合数据平台、端到端AI、实时数据处理

作者 | 宋慧 出品 | CSDN云计算 数据的价值和技术应用,获得了全行业的关注、认可和重视。 不过,数据赛道百家争鸣,数据系统的技术与行业方案众多,对于开发团队和用户来说,其实仍然需要耗费大量调研和分析的时间。 近日…

notepad++自动缩进功能

支持java等格式化 代码编辑器Notepad是程序员必备的文本编辑器,该软件软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。Notepad官方下载支持27种编程语言,通吃C,C ,Java ,C#, XML, HTML, PHP,JS 等。NotePad是一个…

虹科分享 | NetFlow数据能够为网络故障排除提供什么? | 网络流量监控

NetFlow是网络设备中标准化的功能,用于收集流量测量值并将其导出到另一个系统进行分析。对该流数据的分析通知网络管理器网络是如何执行的以及其他使用细节。例如,流量分析可以通过跟踪IP和突出显示异常(如过度使用流量)来帮助解决…

python django4.2版本

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 提示:这里可以添加本文要记录的大概内容: 例如:django4.2版本 提示:以下是本篇文章正文内容,下面案例可供参…