Jmeter学习之三_知识梳理


背景

简单学习了Jmeter的两个用例
感觉可以继续深入学习一下Jmeter了.
所以想着趁体检入职之前继续学习完善一下. 希望能够继续提高

Jmeter的相关知识

1. 什么是Jmeter?
ApacheJMeter ,是一个100%纯Java的开源软件,旨在加载测试功能行为和测量性能。它最初设计用于测试Web应用程序,但后来扩展到其他测试功能。
相较于世面上一些其他性能测试工具,Jmeter是为数不多的既好用又开源免费的测试工具。 2. Jmeter主要元件
1、测试计划:是使用 JMeter 进行测试的起点,它是其它 JMeter测试元件的容器 2、线程组:代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在Sampler中定义,它被线程组包含。 3、配置元件:维护Sampler需要的配置信息,并根据实际的需要修改请求的内容。 4、前置处理器:负责在请求之前工作,常用来修改请求的设置 5、定时器:负责定义请求之间的延迟间隔。 6、取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTP Request Sampler、FTP Request Sample、TCP Request Sample、JDBC Request Sampler等,每一种不同类型的sampler 可以根据设置的参数向服务器发出不同类型的请求。 7、后置处理器:负责在请求之后工作,常用获取返回的值。 8、断言:用来判断请求响应的结果是否如用户所期望的。 9、监听器:负责收集测试结果,同时确定结果显示的方式。 10、逻辑控制器:可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
————————————————
版权声明:本文为CSDN博主「Dreamchaser追梦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46101869/article/details/122134619 执行顺序: 测试计划>>>线程组>>>配置元件>>>前置处理器>>>定时器>>>取样器>>>后置处理器>>>断言>>>监听器 作用域: 辅助组件(除测试计划、线程组、取样器之外的组件)作用于父组件、同级组件,以及同级组件下的所有子组件

Jmeter的设置规范

Jmeter 程序设计通用规范
(1)、Jmeter 程序遵循易用易懂原则 比如配置元件、监听器尽可能往外放
尽量少用控制器,尽量减少层次结构
在代码逻辑较多时,尽量采用测试片段进行代码公用(方便维护修改)
采用简单控制器进行有效的逻辑化 (2)、注意 Jmeter 本身性能,部分性能不佳的组件在运行测试时尽可能屏蔽、少用 比如脚本语言中的 BeanShell,尽量用 Groovy 替代
比如 Css/Jquery 提取器的高效书写,避开低效的监听器等
运行时去掉一些调试组件、打印信息、日志信息等(影响性能测试结果) (3)、文件路径建议统一采用相关路径,避开迁移的代码修改 (4)、合理设置断言器,保持业务压测的准确性 (5)、容易修改的常量,多处使用的常量,记得进行变量进行参数化
————————————————
版权声明:本文为CSDN博主「小鹿快跑~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45138120/article/details/124056704

关于线程组

(1)线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数

(2)Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。

(3)循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”,
那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。 (4)Same user on each iteration:相同用户迭代,一般用在有 Cookie 的场景时生效 (5)Delay Thread creation until needed:延迟创建线程直到需要,默认不勾选,测试开始时,所有的线程就被创建完。勾选此项,延迟线程创建,直到需要才创建 (6)调度器配置 持续时间(秒): 脚本持续运行的时间,如果同时设置有循环次数(循环次数 * 线程加速时间),则谁先到达则谁先生效
启动延迟(秒):脚本延迟启动的时间

关于性能参数

jmeter的线程数(member of threads)相当于并发用户数,并发用户数就是虚拟用户数(virtual user),简称VU。

一、并发用户数(UV):指的是现实系统中操作业务的用户;
并发用户数、注册用户数、在线用户数三者区别。 ①并发用户数一定会对服务器产生压力;
②在线用户数只是“挂”在系统上,对服务器不产生压力;
③注册用户数指数据库中存在的用户数; 二、处理能力(TPS):(Transactions Per Second)每秒处理的事务数目。是衡量系统性能的一个非常重要的指标。一个事务是指一个客户端向服务器发送请求然后服务器做出反应的过程。
TPS 的过程包括:客户端请求服务端、服务端内部处理、服务端返回客户端。 三、QPS(Queries Per Second):每秒能够响应的查询次数,也即是最大吞吐能力(吞吐量)。
例如,访问一个页面会请求服务器 3 次,那么访问这一个页面就会产生一个TPS,三个QPS。
注意:对于一个页面的一次访问,形成一个 Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。
例如,访问一个 Index 页面会请求服务器 3 次,包括一次 html,一次 css,一次 js,那么访问这一个页面就会产生一个“T”,产生三个“Q”。 四、响应时间(RT):指的是业务从客户端发起到客户端接受的时间。 响应时间是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。响应时间是指执行一个请求从开始到最后收到响应数据所花费的总体时间,总之,是对请求做出相应所需要的时间。
网络传输时间:N1+N2+N3+N4
应用服务器处理时间:A1+A3
数据库服务器处理时间:A2
响应时间=N1+N2+N3+N4+A1+A3+A2 五、吞吐量(Throughput):服务器每分钟处理的请求数。
一个系统的吞吐量与请求对cpu的消耗,内存,io 使用等紧密相关,单个请求对CPU消耗越高,外部系统接口、io影响速度越慢,系统吞吐能力越低,反之越高。
————————————————
版权声明:本文为CSDN博主「时光Timely」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Smtime826/article/details/126700095

Jmeter的变量作用域

Jmeter 变量作用域和规则
(1)、前一个组件定义的变量,在后续所有组件的执行过程中有效 例如在取样器 JSR223 Sampler中定义一个变量:vars.put(“var”,“我是变量”),在后续组件中都可以引用
(2)、变量分为线程变量、线程组变量、全局共享变量 线程变量的修改一般只对本线程有效,只会影响本线程的下一次迭代,不会跨线程 例如修改A线程,只影响A线程的之后迭代(设置线程循环),但不会影响B线程 线程组变量的修改会对整个线程组生效,在线程组内跨线程(比如像 csv配置元件中的线程组共享) 全局的变量的修改会对所有线程组生效(比如像 csv配置元件中的全局共享,全局 Counter 计数器等) (3)、变量的定义尽量往外层放置,最好不要放置在业务逻辑中,理解起来比较反常(动态变量(设置一些后置处理器)除外)
————————————————
版权声明:本文为CSDN博主「小鹿快跑~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45138120/article/details/124056704

监听器相关

主要监听器的场景使用比较
(1)、开发调试:是指我们编写脚本或者脚本还在调试阶段,这一阶段我们对 Jmeter 的性能没有要求 (2)、轻量级压测:我们的脚本已经初步完成,并想通过多线程和多次迭代简单的验证一下脚本 (3)、负载压测:脚本已经完成,准备对业务系统进行长时间压测 (4)、UI 模式下结果输出两大常用组件:结果树监听器 + 总结报告监听器,采用这两种监听器,我们可以处理90%以上的场景

断言,定时器

JMeter中的断言用于验证测试结果是否符合期望。断言是测试脚本中的一部分,并且在测试运行期间对响应数据或其他指标进行检查。下面是JMeter中常用的几种断言类型的总结:

响应断言(Response Assertion):用于验证响应结果是否与期望值匹配。可以使用不同的模式(包含、匹配、相等等)对响应文本、响应代码、响应头等进行检查。

JUnit 断言(JUnit Assertion):这种断言允许你使用JUnit库的断言方法(如assertEquals、assertTrue等)来验证响应结果。

JSON 断言(JSON Assertion):用于验证API接口返回的JSON响应是否符合预期的结构或内容。可以检查JSON对象、数组、属性等。

XML 断言(XML Assertion):用于验证XML响应是否符合预期的结构或内容。可以检查XML元素、属性、命名空间等。

HTML 断言(HTML Assertion):用于验证HTML响应是否符合预期的结构或内容。可以检查HTML元素、属性、文本等。

匹配断言(Match Assertion):用于通过正则表达式匹配来验证响应内容是否符合预期。可以检查响应文本、响应头等。

BSF 断言(BSF Assertion):这种断言允许你使用脚本语言(如JavaScript、Groovy等)来自定义验证逻辑。

请根据你的测试需求选择适合的断言类型,并合理配置断言参数,以确保在测试运行期间正确验证响应结果。

定时器

JMeter中的定时器(Timer)用于控制线程发出请求的时间间隔。它可以模拟真实的用户行为,使测试更加真实和可靠。下面是JMeter中常用的几种定时器的介绍:

固定定时器(Constant Timer):固定定时器会在每次请求之间添加一个固定的时间延迟。你可以设置延迟的毫秒数,例如设置为1000表示每个请求之间间隔1秒。

随机定时器(Random Timer):随机定时器会在每次请求之间添加一个随机的时间延迟。你可以设置延迟的最小值和最大值,每次请求之间的延迟将在这个范围内随机选择。

负载模拟定时器(Poisson Random Timer):负载模拟定时器基于泊松分布模拟用户请求的间隔时间。你可以设置请求的速率(单位:请求/秒),定时器会根据速率随机计算出每次请求之间的延迟时间。

Gaussian 定时器(Gaussian Random Timer):Gaussian定时器基于高斯分布模拟用户请求的间隔时间。你可以设置请求的平均间隔时间和标准差,定时器会根据这些参数生成随机的间隔时间。

使用这些定时器,你可以根据自己的需求模拟各种用户行为场景,控制请求的时间间隔,以更真实地模拟负载和压力测试。在JMeter的测试计划中,将定时器置于需要设置延迟的线程组或请求上,以实现相应的效果。

取样器

一个没有取样器的测试计划是没有意义
Jmeter 测试计划的执行是以取样器为核心驱动 8.3、JSR223 Sampler
用于在性能测试脚本中执行脚本。它可以使用多种脚本语言(如 Java、JavaScript、Groovy 等)来执行脚本;使用时需要安装对应的脚本引擎。
JSR223 Sampler 常用于测试动态内容、复杂的业务逻辑、复杂的数据操作等。它可以方便地与其他 JMeter 元素(如 HTTP 请求、JDBC 请求等)配合使用,以达到更好的性能测试效果 Script language 语言(Language):要使用的JSR223脚本代码语言的类型
将参数传递给脚本(String 与 String [])(Parameters passed to script(exposed as ‘Parameters’ (type String) and ‘args’ (type String[])) 参数(Parameters):传递参数,可将GUI脚本中创建的Parameters参数传递至Beanshell脚本中。在Beanshell脚本中引用是使用bsh.args【x】进行实例化 浏览(Browse):选择文件位置
脚本文件(覆盖脚本)(Script file(overrides script))
文件名(File Name):导入Beanshell脚本运行文件。文件名存储在脚本变量名中。
脚本(Script)
编写脚本处。(Beanshell语法)
内置变量vars:提供了对JMeter中的变量的读/写方法
内置变量ctx:拿到有上下文context的权限,ctx可以访问很多对象。比如:获取前一个取样器执行结果、获取当前线程所有变量等
用法: 1. JSR223 Sampler 可以获取上一个元素的返回结果,并在脚本中使用。例如,如果在 JSR223 Sampler 前面的元素是 HTTP 请求,则可以在脚本中使用 prev.getResponseDataAsString() 方法来获取 HTTP 请求的响应数据。 2. JSR223 Sampler 还可以设置变量,用于在其他 JMeter 元素中使用。例如,可以在脚本中使用 vars.put(“variableName”, “variableValue”) 方法来设置变量,然后在其他元素中使用 ${variableName} 变量来引用这个变量的值 3. 此外,JSR223 Sampler 还可以通过设置「缓存脚本」选项来优化性能,使脚本在多次运行时不必每次都编

部分资料取自网络, 是一个一边整理,一边学习的过程. 关注我的小公众号一起学习进步

Jmeter学习之三_知识梳理的更多相关文章

  1. Jmeter 接口测试知识梳理——应用基础篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter 接口测试知 ...

  2. Jmeter 接口测试知识梳理——持续集成篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter + Ant ...

  3. Jmeter 接口测试知识梳理——环境搭建篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! 环境搭建篇 很多文章介绍 ...

  4. JMeter学习-036-JMeter调试工具之三---Debug Sampler

    前面两篇文章分别讲述了 HTTP Mirror Server 和 Debug PostProcessor 的脚本调试实例.此文主要讲述第三种调试工具:DebugSampler,其主要是查看JMeter ...

  5. JMeter学习-037-JMeter调试工具之四-BeanShell+jmeter.log

    前面三篇文章分别讲述了 HTTP Mirror Server . Debug PostProcessor 和 Debug Samper 的脚本调试实例.此文主要讲述第四种调试方法,通过 BeanShe ...

  6. JMeter学习-011-JMeter 后置处理器实例之 - 正则表达式提取器(三)多参数获取进阶引用篇

    前两篇文章分表讲述了 后置处理器 - 正则表达式提取器概述及简单实例.多参数获取,相应博文敬请参阅 简单实例.多参数获取. 此文主要讲述如何引用正则表达式提取器获取的数据信息.其实,正则表达式提取器获 ...

  7. JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

    前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). ...

  8. c#知识梳理

    转:http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html 本文是一个菜鸟所写,本文面向的人群就是像我这样的小菜鸟,工作一年也辛辛苦苦 ...

  9. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  10. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

随机推荐

  1. 文心一言 VS 讯飞星火 VS chatgpt (25)-- 算法导论4.2 7题

    七.设计算法,仅使用三次实数乘法即可完成复数 a+bi和c+di 相乘.算法需接收a.b.c和d 为输入,分别生成实部 ac-bd 和虚部ad+bc. 文心一言: 可以使用如下算法来计算复数 a+bi ...

  2. three.js中帧缓存的使用

    目录 1. 概述 2. 示例 2.1. 代码 2.2. 解析 3. 参考 1. 概述 在网上查阅了一下three.js关于帧缓存的使用,感觉很多都是关于three.js中后处理通道的使用的.后处理通道 ...

  3. .NET技术分享日活动-202110

    2021年10月15日下午,个人组织举办了山东地区的第三次.NET技术分享日活动.围绕.NET.低代码Low Code.云原生 Cloud Native.大数据.算法等方向进行创新技术的实践分享. 本 ...

  4. C# 查找PDF页面指定区域中的文本并替换和高亮

    对PDF文档中的内容进行查找时,可针对文档全篇内容获取查找结果,也可在PDF指定页面中的特定范围内(矩形框区域)进行查找,对获取的查找结果可执行文本高亮或替换等操作,本文将对此作相关介绍(附VB.NE ...

  5. EDS从小白到专家丨打造你的专属“数据物流”系统

    "数据快递"如何支撑便捷就医?本期让我们来了解如何使用EDS打造专属的"数据物流"系统...... 本文分享自华为云社区<[EDS从小白到专家]第2期-E ...

  6. 共筑数字化未来,金山办公携手华为云完成文档中心和GaussDB适配

    摘要:金山办公携手华为云完成金山办公自主研发的"WPS文档中心系统"与华为云GaussDB相互兼容性测试认证,并获得华为云授予的<技术认证书>. 本文分享自华为云社区& ...

  7. 云小课|使用SQL加密函数实现数据列的加解密

    摘要:数据加密作为有效防止未授权访问和防护数据泄露的技术,在各种信息系统中广泛使用.作为信息系统的核心,GaussDB(DWS)数仓也提供数据加密功能,包括透明加密和使用SQL函数加密. 本文分享自华 ...

  8. web自动化测试(3):web功能自动化测试selenium基础课

    继上篇<web自动化测试(1):为什么选择selenium做自动化测试>,本文介绍如selenium使用 做UI自动化测试,需要什么技能 前端相关技术:HTML.XML.JavaScrip ...

  9. 开心档之C++ 数据结构

    C++ 数据结构 C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项. 结构用于表示一条记录,假设您想要跟踪图书馆 ...

  10. 路由分发 路由别名的名称空间 虚拟环境 HTTPresponse JsonResponse request对象获取文件 CBV源码剖析 模板语法传值特性 模板语法过滤器

    目录 路由分发 路由别名冲突 反向解析失败 方式一:名称空间 include 方式二:别名不冲突即可 虚拟环境 python -m venv venv_name 视图层之必会三板斧 HTTPrespo ...