JMeter性能测试(上)
一、基础简介
界面
-
打开方式
- 双击 jmeter.bat
- 双击 ApacheJMeter.jsr
- 命令行输入 java -jar ApacheJMeter.jar
-
目录
- BIN 目录:存放可执行文件和配置文件
- docs目录:api文档,用于开发扩展组件
- printable-docs目录:用户帮助手册
- lib目录:存放JMeter依赖的jar包和用户拓展所依赖的jar包
-
元件
- 概念:多个类似功能组件的容器(类似于类)
- 取样器:发送请求。类似于自动化中的业务测试语句
- 逻辑控制器:控制元件执行顺序。类似于自动化中的逻辑控制语句
- 前置处理器:对发送的请求参数进行预处理。类似于自动化中的参数化。
- 后置处理器:对收到的响应数据进行处理。类似于自动化中获得对应的测试结果。
- 定时器:等待一定时间。类似于自动化中的sleep语句
- 测试片段:封装的脚本,供其他脚本调用。类似于自动化中封装的函数
- 配置元件:测试前的环境及数据配置。类似于自动化中的初始化动作
- 监听器:查看测试的结果。类似于自动化中的日志和报告。
- 组件:类似于类中定义的方法
- 概念:多个类似功能组件的容器(类似于类)
-
作用域
- 按照jmeter测试计划的树形结构来定义作用域(有点儿类型python的缩进)
- 作用域的原则:
- 取样器是jmeter的核心,不作用于其他的组件
- 逻辑控制器,只对子节点起作用
- 对于其他的组件,
- 如果父节点是取样器的话,则只对父节点起作用,
- 如果父节点不是取样器的话,则对父节点下的所有组件起作用
- 第一个案例:
- 访问百度
-
线程组
-
模拟多人操作,如果有多个线程组时,可以并行或者串行执行
- 串行:如下图,“独立运行每个线程组”勾选,则所有的线程组按照添加顺序串行执行;如果未勾选,则并行执行(先后顺序无法保证)
- 线程组的分类:
- 普通线程组:用于发送业务请求的线程组(受并行、串行配置的影响)
- setup线程组:在所有的线程组之前执行(不受并行、串行配置的影响)
- teardown:在所有的线程组之后执行(不受并行、串行配置的影响)
- 线程组的属性:
- 线程数:需要模拟的虚拟用户数。
- ramp-up time:模拟的虚拟用户数全部启动所需要的时间。
- 目的:为了模拟性能测试的场景,更接近用户的使用习惯(用户慢慢接入系统)
- 循环次数:
- 设置为固定次数n时:脚本运行时发送请求的次数为n
- 设置循环次数为“永远”时,脚本会一直运行下去,不停止
- 调度器:
- 一般与循环次数为“永远”的设置配合使用
- 持续时间设置为n时:脚本的请求发送的时间为n秒
- 延迟启动设置为n时:脚本的请求发送在等待n秒后再进行
- 延迟创建线程直到需要:当启动线程发送请求时,才分配资源;如果暂未启动该线程,则不分配。如果不勾选,在jmeter点击运行时立即分配(使用不多,了解即可,无法观察效果)
- 线程数m和循环次数n的关系:
- 如果同时配置,实际发送的HTTP请求数应该为m*n
- 虽然发送请求的次数相同,但是不能相互替换
- 线程数:代表并发用户数,体现服务器的负载量
- 循环次数:代表执行时间
-
HTTP请求
- 案例1:
- 案例2:
- 案例3:post
- 察看结果树:
- 出现乱码 1062行
-
参数化
- 定义:使用不同的测试数据,调用相同的测试方法进行测试
- 本质:实现测试数据与测试方法的分离
-
实现方法:
-
1、用户定义变量
- 配置方法1:配置元件中配置
- 添加路径:测试计划——线程组——配置元件——用户定义的变量
- 参数设置:
- 参数名:参数值
- 在HTTP取样器中应用:${参数名}
- 线程组下配置的用户定义的变量,在线程组下生效,与测试计划中配置的变量冲突时,以线程组下的为准
- 配置方法2:在测试计划中配置(全局生效)方法同上
- 配置方法1:配置元件中配置
-
2、用户参数
-
针对同一组参数,为不同用户访问时,分配不同的参数值
- 使用用户定义的变量时,不同的用户在访问时,读取的参数值完全相同,如果希望每个用户在访问时的变量不同,可以使用用户参数。
- 配置方法:
- 添加位置:线程组——前置处理器——用户参数
- 添加用户:可以添加多组用户(添加线程数,n)
- 添加参数:针对每个用户添加多个参数
- 添加HTTP请求,引用定义的变量名。格式为:${变量名}
-
-
3、CSV数据文件设置
- 使用用户参数时,每个用户可以取不同的数据,但是同一用户的多次循环时读取的数据是不变的。如果想让同一用户多次循环读取时的数据也不同,需要使用CSV数据文件设置的方式。
- (1)定义CSV数据文件
- (2)添加线程组
- (3)配置CSV数据文件设置
- 添加位置:线程组——配置元件——CSV数据文件设置
- 参数配置
- (4)添加HTTP请求
- 引用参数值时,使用时CSV数据文件中定义的变量名
- (5)查看结果树
-
4、函数
- 通过counter函数在生成动态变化的数值(自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义)
- 在HTTP取样器中,应用counter函数生成的函数字符串,就可以读取counter函数生成的数值。
- 如果counter参数设置为:TRUE,则每个用户分别从1开始计算,每循环一次加1
- 如果counter参数设置为:FALSE,则所有用户公用一个计数器,每发送一个请求时,取值加1
- 步骤:
- (1) 添加线程组,设置虚拟用户数和循环次数
- (2)生成_counter函数
- ( 3) 添加http请求,使用*counter函数 格式 :${_counter(FALSE,)}
- (4)添加查看结果树
- 练习:
-
相关文章:
JMeter性能测试(上)
一、基础简介 界面 打开方式 双击 jmeter.bat双击 ApacheJMeter.jsr命令行输入 java -jar ApacheJMeter.jar 目录 BIN 目录:存放可执行文件和配置文件 docs目录:api文档,用于开发扩展组件 printable-docs目录:用户帮助手册 li…...
自定义date工具类 DateUtils.java
自定义date工具类 DateUtils.java 简介 Date日期类型的工具类。 api 日期格式化 format(Date date);日期格式化 format(Date date, String pattern);计算距离现在多久,非精确 getTimeBefore(Date date);计算距离现在多久,精确…...
Linux(Ubuntu)安装docker
2017年的3月1号之后,Docker 的版本命名开始发生变化,同时将 CE 版本和 EE 版本进行分开。 Docker社区版(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce 提供了简单的安装…...
Apache Poi 实现Excel多级联动下拉框
由于最近做的功能,需要将接口返回的数据列表,输出到excel中,以供后续导入,且网上现有的封装,使用起来都较为麻烦,故参考已有做法封装了工具类。 使用apache poi实现excel联动下拉框思路 创建隐藏单元格&a…...
常见的 HTML<meta> 标签的 name 属性及其作用
HTML中的 <meta> 标签可以通过 name 属性提供元数据,这些元数据可以用于指定有关文档的信息,以及控制浏览器和搜索引擎的行为。name 属性通常与其他属性一起使用,如 content、charset、http-equiv 等,以提供更具体的元数据信…...
【网络安全】理解报文加密、数字签名能解决的实际问题
文章目录 前言1. 防止报文泄露 —— 加密体系的出现1.1 理解非对称加密体系的实施难点1.2 加密体系的实际应用 2. 防止报文被篡改 —— 数字签名的出现2.1 数字签名的原理2.2 数字签名的实施难点2.2 数字签名的实际应用 —— 引入摘要算法 3. 实体鉴别 —— CA证书 后记 前言 …...
linux中安装nodejs,卸载nodejs,更新nodejs
卸载nodejs 卸载node sudo apt-get remove nodejs清理掉自动安装的并且不需要软件包 sudo apt autoremove查看node相关的文件 sudo whereis node如果有文件需要手动删除文件 删除该文件命令 sudo rm -rf /usr/local/bin/node在此查看node -v 是未找到,说明你已经…...
浅谈Python网络爬虫应对反爬虫的技术对抗
在当今信息时代,数据是非常宝贵的资源。而作为一名专业的 Python 网络爬虫程序猿,在进行网页数据采集时经常会遭遇到各种针对爬虫行为的阻碍和限制,这就需要我们掌握一些应对反爬机制的技术手段。本文将从不同层面介绍如何使用 Python 进行网…...
代理池在过程中一直运行
Hey,爬虫达人们!在爬虫的过程中,要保持代理池的稳定性可不容易。今天就来和大家分享一些实用经验,教你如何让代理池在爬虫过程中一直运行!方法简单易行,让你的爬虫工作更顺畅. 在进行爬虫工作时࿰…...
基于Java+SpringBoot+Vue前后端分离党员教育和管理系统设计和实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...
【flutter直接上传图片到阿里云OSS】
flutter直接上传文件到阿里云需要获取凭证,通过调用阿里云获取凭证的接口能拿到下面这些参数 {"StatusCode": 200,"AccessKeyId": "STS.NSsrKZes4cqm.....","AccessKeySecret": "7eGnLZaEFsRCGYJAnrtdE9n....."…...
【MySQL系列】表的内连接和外连接学习
「前言」文章内容大致是对MySQL表的内连接和外连接。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、内连接二、外连接2.1 左外连接2.2 右外连接 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,前面篇章学习的…...
C语言日常刷题 3
文章目录 题目答案与解析1234、5、6、 题目 1.已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; ,正确的调用语句是( ) A: fun(c,&d); B: fun(c,d); C: fun(&c,&d…...
.net6中, 用数据属性事件触发 用httpclient向服务器提交Mes工单
MES开发中, 客户往往会要求 工单开始时记录工艺数据, 工单结束时将这些工艺数据回传到更上一级的WES系统中. 因为MES系统和PLC 是多线程读取, 所以加锁, 事件触发是常用手段. using MyWebApiTest.PLC; using MyWebApiTest.Service; using MyWebApiTest.Service.Entry; using M…...
sin(A)的意义
若存在矩阵A,则sin(A)表示对于矩阵A的每一个元素,进行对应的函数运算。 如:...
ctfshow-web14
0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 首先看到这个,swith,那么直接输入4,则会打印$url的值 然后访问一下 查看一下,发现完整的请求是http://c7ff9ed6-dccd-4d01-907a-f1c61c016c15.challenge.ctf.sho…...
数据结构—循环队列(环形队列)
循环队列(环形队列) 循环队列的概念及结构循环队列的实现 循环队列的概念及结构 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。…...
vue3 实现按钮权限管理
在做后台管理系统时,经常会有权限管理的功能,这里来记录一下关于按钮权限管理的实现方法 1、自定义指令 v-permission。新建js文件用来写指令代码。 export default function btnPerms(app) {app.directive(permission, {mounted(el, binding) {if (!p…...
C语言练习4(巩固提升)
C语言练习4 选择题 前言 面对复杂变化的世界,人类社会向何处去?亚洲前途在哪里?我认为,回答这些时代之问,我们要不畏浮云遮望眼,善于拨云见日,把握历史规律,认清世界大势。 选择题 …...
将AI融入CG特效工作流;对谈Dify创始人张路宇;关于Llama 2的一切资源;普林斯顿LLM高阶课程;LLM当前的10大挑战 | ShowMeAI日报
👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 将AI融入CG特效工作流,体验极致的效率提升 BV1pP411r7HY 这是 B站UP主 特效小哥studio 和 拓星研究所 联合投稿的一个AI特…...
Vue2学习笔记のVue中的ajax
目录 Vue中的ajaxvue脚手架配置代理方法一方法二 插槽 hello, 这篇文章是Vue2学习笔记的第四篇,也是第四章:Vue中的ajax。 Vue中的ajax vue脚手架配置代理 方法一 在vue.config.js中添加如下配置: devServer:{proxy:"http://localho…...
C# 使用NPOI操作EXCEL
1.添加NOPI 引用->管理NuGet程序包->添加NOPI 2.相关程序集 3....
分布式 - 服务器Nginx:一小时入门系列之 return 指令
文章目录 1. return 指令语法2. return code URL 示例3. return code text 示例4. return URL 示例 1. return 指令语法 return指令用于立即停止当前请求的处理,并返回指定的HTTP状态码和响应头信息,它可以用于在Nginx中生成自定义错误页面,…...
【Linux】ext4和xfs扩大,缩小lv后,无法识别如何操作
虚拟机系统异常,挂载到其他环境如何修复系统盘 1、环境 UOS 1060E x86环境 模拟异常环境: 1060e系统,使用lvm缩小磁盘后,出现异常,将异常磁盘挂载到其他服务器中,但存在问题发现有uuid相同的问题。 为…...
基于HarmonyOS ArkUI实现音乐列表功能
本节将演示如何在基于HarmonyOS ArkUI的List组件来实现音乐列表功能。 本文涉及的所有源码,均可以在文末链接中找到。 活动主页 华为开发者论坛 规则要求具体要求如下: 第1步:观看<HarmonyOS第一课>“营”在暑期•系列直播&#x…...
Android系统启动流程 源码解析
Android系统启动流程 本文链接:https://blog.csdn.net/feather_wch/article/details/132518105 有道云脑图:https://note.youdao.com/s/GZ9d8vzO 1、整体流程 Boot RoomBootLoaderidle kthreadinit init ServiceManagerzygote zygote SystemServerap…...
【头歌】构建哈夫曼树及编码
构建哈夫曼树及编码 第1关:构建哈夫曼树 任务描述 本关任务:构建哈夫曼树,从键盘读入字符个数n及这n个字符出现的频率即权值,构造带权路径最短的最优二叉树(哈夫曼树)。 相关知识 哈夫曼树的定义 设二叉树具有n个带权值的叶子结点{w1,w2,...,wn},从根结点到每个叶…...
创建本地镜像
通过前面文章的阅读,读者已经了解到所谓的容器实际上是在父镜像的基础上创建了一个可读写的文件层级,所有的修改操作都在这个文件层级上进行,而父镜像并未受影响,如果读者需要根据这种修改创建一个新的本地镜像,有两种…...
网络编程套接字(2): 简单的UDP网络程序
文章目录 网络编程套接字(2): 简单的UDP网络程序3. 简单的UDP网络程序3.1 服务端创建(1) 创建套接字(2) 绑定端口号(3) sockaddr_in结构体(4) 数据的接收与发送接收发送 3.2 客户端创建3.3 代码编写(1) v1_简单发送消息(2) v2_小写转大写(3) v3_模拟命令行解释器(4) v4_多线程版…...
Android Mvvm设计模式的详解与实战教程
一、介绍 在开发设计模式中,模式经历了多次迭代,从MVC到MVP,再到如今的MVVM。发现的过程其实很简单,就是为了项目更好的管理。 设计模式严格来说属于软件工程的范畴,但是如今在各大面试中或者开发中,设计模…...
潍坊恒信建设集团网站/软文推广广告
概念: 专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 作用: 如果我们使用全局总线要让所有的组件…...
阿拉伯文网站怎么做/个人在线网站推广
IT系统应用于企业管理:架构模式,领域分析,项目管理。非常好的一本书,第一次读完一遍后想立即再读一遍的书。同类的书中也是最好的那类。第一章,大型网站架构演化初始阶段的网站架构应用服务和数据服务分离使用缓存改善…...
江门企业做网站/全国疫情最新消息今天实时
【Jenkins】Jenkins 构建SVN项目 按需求创建任务 添加svn地址...
做外贸网站要花多少钱/seo软件推广哪个好
ios打包和调试 Mac系统安装XCode方便调试 在App Store下载并安装Xcode。注意,xcode版本低的话,也会影响打包的。推荐使用XCode9. 如果你的OS版本不满足安装xcode的版本要求,你可以寻找对应版本的xcode下载链接,然后在safari打开…...
做个小程序多少钱/企业网站如何优化
目录一、linux安装jdk二、linux安装tomcat三、linux安装idea2020四、linux安装mysql一、linux安装jdk 7.在 /etc/profile 文件中配置环境变量: 10.让环境变量 的文件生效: source /etc/profile 然后在控制台输出环境变量: echo $PATH 如下&…...
往国外卖货的平台/网站优化公司怎么选
Xmind是一个很好的思维导图工具,是学习研究总结的好帮手。 Xmind功能很丰富,这里只是简要列出几个比较有用的技巧。 1.善用属性 选中一个xmind元素(专业名词叫【主题】)后,一般在右下角会出现“属性”。如果你不想老是…...