Jmeter性能测试配置

news2024/11/18 21:49:24

Jmeter检查点/断言

在上一章节中,我们通过调试脚本,通过人工验证脚本可以完成业务功能,
但在性能测试中,我们希望能通过自动验证脚本是否完成业务功能,在Jmeter
中我们可以通过检查点,也就是断言来实现自动验证脚本的正确性。

断言组件:
Jmeter通过断言组件完成断言、自动验证的功能。
断言组件通过获取服务器响应数据,然后根据断言规则去匹配响应数据;
正常匹配脚本不会出现任何问题或者提示,如果匹配不到,就会出现异常情况,
此时Jmeter就会判断这个事务失败,那么我们在察看结果树中看到的请求名称
是红色字体。

通过右击单个请求-添加--断言,可 以看到Jmeter的断言元件非常多,一
般常使用的是响应断言(Response Assertion)。

响应断言既是对服务器的响应数据进行规则匹配。

响应断言界面如下:

响应断言界面介绍:
名称、注释、Apply之前在讲正则表达式提取器的时候介绍过,不做重复讲解。
要测试的响应字段:针对响应数据的不同部分进行匹配,包含如下7个部分。
响应文本:服务器返回的响应文本内容,HTTP协议排除Header部分
Document(text):对文档内容进行匹配。
URL样本:匹配URL链接。
响应代码:匹配响应代码,如”200”。
响应信息:匹配响应信息,如"0K"。
Response Headers:匹配响应中的头信息。
Ignore Status:一个请求有多个响应断言,当第一个断言设置该选项,那么如果第一个断言失败后,第二个断言成功,事务还是成功状态。
模式规则匹配:包含如下5个部分。
包括:响应内容包括需要匹配的内容,支持正则表达式。
匹配:响应内容要完全匹配需要匹配的内容,大小写不区分,支持正则表达式。
Equals:响应内容要完全与需要匹配的内容相同,区分大小写,不支持正则表达式
Substring:响应内容包含需要匹配的内容,区分大小写,不支持正则表达式。
否:选择Equals、Substring时匹配的是字符串,大小写敏感,选择此项类似降级。
要测试的模式:填入需要匹配的字符串或者正则表达式。

Jmeter事务

Jmeter能够做到把每个请求统计成一个事务,但事务一般是用户宏观上的概
念,所以系统把多个请求统计成一个事务, 在Jmeter中可以通过逻辑控制器下的事务控制器来完成此要求。

逻辑控制器概念:
逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要
和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

逻辑控制器分类:
a)控制测试计划执行过程中节点的逻辑执行顺序,如:循环控制器(Loop
Controller)、如果控制器(If Controller)等;
b)对测试计划中的脚本进行分组、方便]Meter统计执行结果以及进行脚本的
运行时控制等,如:吞吐量控制器(Throughput Controller)、事务控制器
(Transaction Controller)等。

我们需要做Jmeter的事务操作,所以需要用到事务控制器。

事务控制器界面如下:

Generate parent sample:如果事务控制器下有多个采样器(请求),勾选后,在察看结果树中不仅可以看到事务控制器,还可以看到每个采样器;并且事务控制器定义的事务是否成功取决于子事务是否都成功,任何一个失败代表整个事务失败。

Include duration of timer and per-post processors in generated sample:是否包括定时器、预处理和后期处理延迟的时间,选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间。

Jmeter集合点

在做性能测试过程中,我们会根据场景做狭义的并发,这个时候就需要用到
集合点,集合点能够尽量让虚拟用户同一时刻发送请求,在Jmeter中集合点是通过定时器来完成的。

定时器概念:
Jmeter定时器用来控制取样器的执行时机,有固定定时器,随机定时器等。
要实现集合点,一般我们需要用到同步定时器来进行控制。

同步定时器(Synchronizing timer)概念:
同步定时器用来保证取样器在同一-时刻向服务器发起负载,考虑到线程运行
的时间快慢与场景的需要,也提供了同步线程数量的设置。如下图界面:

同步定时器界面字段说明:

名称、注释与之前元件一样可以随意设置。

Number of Simulated Users to Group by:
每次释放的线程数量。如果设置为0,等同于设置为线程组中的线程数量。
Synchronizing timer仅作用于同-个JVM中的线程,所以,如果使用并发测试,确保"Number of Simultaneous Users to Group by"中设置的值不大于它所在线程组包含的用户数。

Timeout in milliseconds:
如果设置为0,Timer将会等待线程数达到了" Number of Simultaneous Users to Group"中设置的值才释放。如果大于0,那么如果超过Timeout in milliseconds中设置的最大等待时间[毫秒为单位)后还没达到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程。
如果设置Timeout in milliseconds为0,且线程数量无法达到"Number of
Simultaneous Users to Group by"中设置的值,那么Test将无限等待, 除非手动终止。Timeout in milliseconds中设置的单位是毫秒。

同步定时器使用说明:
Synchronizing Timer是在每个sampler (采样器)之前执行的,而不是
之后,不管这个定时器的位置放在sampler之后,还是之前,执行请求A和请
求B前都会执行同步定时器如下左图所示:
 

当执行一个sampler之前时,和sampler处于相同作用域的定时器都会被执行;如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入,如上右图定时器仅仅对请求B起作用,即仅在请求B执行前执行定时器,和请求A无关

Jmeter参数化

在做性能测试过程中,一般我们需要模拟多个用户进行操作,为了满足实际
场景,模拟真实的用户行为,我们需要做到模拟的用户帐号或其它信息都是不同的,这时我们就需要用到参数化。在Jmeter中, 配置元件可以解决此问题。

配置元件概念:
JMeter配置元件可以用来进行参数化、初始化默认值和变量、存储服务器的
响应信息以及配置链接数据库等。JMeter参数化一般使用配置元件中的CSV Data
Set Config或者JDBC Connection Configuration来进行参数化

CSV Data Set Config元件:
该元件可以用来读取csv或dat文件的数据(一行一行读取),然后通过设置
把读取到的数据关联到Jmeter中的变量保存。csv文件可以使用execl表格工具去进行编辑。

JDBC Connection Configuration元件:
该元件可以用来进行数据库的连接,然后通过JDBC Request元件发送数据库
请求数据库中的表中的数据,再通过正则表达式提取器关联到Jmeter中的变量保存。

CSV Data Set Config界面如下:
 


界面字段说明:
名称、注释与之前元件一样可以随意设置。
Filename:指保存信息的文件目录,可以相对或者绝对路径,相对路径从Jmeter
的启动目录(***/bin)路径。
File Encoding:文件编码,默认为ANSI, 建议设置为utf-8,防止遇见乱码情况。

Variable Names:参数名称,每个名称中间用分隔符分割,分隔符使用下面的“Delimitet”中定义的,默认用逗号隔开,与参数文件的参数对应。如果设置的参数
名称多于参数文件中的参数,多余的参数取不到值;反之参数文件中的参数将没有
参数对应。
Delimitet:定义分隔符,用于分隔文件中的参数,及上述Variable Names中定义的
参数名称。
Allow Quoated data?:是否允许引用数据,设置为True,设置文件中的参数值都必
须用引号引起来,False则不需要
Recycle on EOF ?:遇到文件结束符时,是否从头开始循环读入,设置为True,则从
头开始继续循环
Stop Thread on EOF ?2:当Recycle on EOF设置为False并且Stop Thread on EOF为True,则读完csv文件中的记录后,停止运行
Sharing Mode:参数文件共享模式,有三个设置,说明如下:
All threads:参数文件对所有线程共享,包含同一测试计划中的不同线程组。
Current thread group:只对当前线程组中的线程共享。
Current thread:仅当前线程获取。

在实际性能测试过程中,比如测试发帖的场景,由于每次发送相同的内容会被论坛系统屏蔽,这时我们根据之前的方式做成参数化,如果我们希望每次发帖的内容是随机的,这时可以借助]meter随机数函数。

Jmeter随机数函数使用如下:
1、点击菜单栏-选项--函数助手对话框--“选择一个 功能”下拉框选择_ Random String,生成一个随机字符串;
2、设置Rondom String length,即设置生成随机字符串的长度;
3、设置Chars to use for random string generation,指定用哪些字符作为种子进行随机生成,支持中文、数字、字母等;
4、Name of variable in which to store the result (optional):函数名称(只是用来存储变量的名称,不可以${名称}使用), 可选项,如果填写,运行脚本后可在Debug Sampler中看到这个变量的值;
5、点击生成按钮,自动生成一个字符串, 把该字符串替换到需要用到随机数参
数的地方即可。

在性能测试过程中,经常会遇见脚本开发时与测试执行时的服务器地址不一样,如果我们把服务器地址写死,修改起来就很麻烦,为了解决环境切换修改脚本的问题,我们常把访问地址进行参数化,当执行性能测试的环境变化后,我们只需要把参数对应的值改动一下就可以了。
右击线程组--配置文件--用户定义的变量.打开界面如下:
 


配置好URL和PORT变量后,在其它元件中使用${URL}引用变量即可。

如果是手动开发Jmeter脚本,在GUI界面添加多个请求的时候,由于都是测试同一服务器,所以每个请求编写的过程中一些公共的部分比如服务器IP、端口等每次都需要重新写一遍,这个时候可以使用Jmeter提供的HTTP请求默认值,把重复的内容分离出来,只需要定义一次。
HTTP请求默认值使用:
添加方法:线程组-->右键添加-->配置元件--> HTTP请求默认值。
和采样器的HTTP请求界面大致相同,配置好之后,之后写HTTP请求不需要填写该部分,采用该处的默认值。如下图所示:

 总结:

感谢每一个认真阅读我文章的人!!!

 我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

   Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

 

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

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

相关文章

19.2:纸牌问题

给定一个整型数组arr,代表数值不同的纸牌排成一条线 玩家A和玩家B依次拿走每张纸牌 规定玩家A先拿,玩家B后拿 但是每个玩家每次只能拿走最左或最右的纸牌 玩家A和玩家B都绝顶聪明 请返回最后获胜者的分数 方法一:暴力解法 自然智慧。 pack…

【NLP入门教程】二十三、循环神经网络(RNN)| 小白专场

本教程旨在为初学者提供一份全面而系统的NLP入门指南,探索NLP的核心概念、方法和技术。无论你是计算机科学的新手,还是对自然语言处理领域感兴趣的研究人员,本教程都将为你提供所需的基础知识和实用技能。 专栏地址:&#x1f4d5…

【蓝图】p40-p43对象引用、变量有效性、实现键盘控制物体自转、简单点名系统

p40-p43对象引用、变量有效性、实现键盘控制物体自转、简单点名系统 p40对象引用、变量有效性p41实现键盘控制物体自转创建bool值控制旋转实现通过键盘控制自转 p42p43简单点名系统Get All Actors Of Class(获得场景中所有该类的actor演员)getFor Each L…

TEE GP(Global Platform)安全认证产品

TEE之GP(Global Platform)认证汇总 一、安全认证产品介绍 选择SECURITY和TEE SECURITY,然后SEARCH,可以看到TEE对应的安全认证产品。 二、HUAWEI ITRUSTEE V3.0 ON KIRIN 980 三、SAMSUNG TEEGRIS V4.1 参考: GlobalPlatform Certification…

【linux】暗夜精灵9自动升级BIOS后,无法进入双系统

1、问题描述 暗夜精灵9自动升级BIOS后,无法进入双系统,甚至没有“多重引导菜单” 2、解决方法 1)进入BIOS 惠普暗夜精灵9进入BIOS的按键是F10 2)设置启动项 需要设置三处 功能键延时:5秒 安全启动模式:关闭 UEFI模式下的开机顺序:ubuntu3)设置显卡切换 如果NVIDIA…

TCL(Tool Command Language)学习(三)-----字符串操作

一、比较 : string compare 格式 : string compare ?-nocase? ?-length int? string1 string2 把字符串 string1 和字符串 string2 进行比较 ,返回值为 -1、0或 1 ,分别对应 string1 小于、等于或大于string2。如果有 -len…

全球百年品牌,最高已改变25次

摘要:今天,我们看到的那些持久的公司并不是真正持续了100年的公司。在100年的时间里,他们改变了25次、5次或4次,如果不改变,他们就无法生存。 近期市场调研中,许战海咨询发现国内市场已经进入无限内卷的竞争阶段。如何在内卷的竞争中保持可持…

Android OpenGL ES Camera2 实现实时抠图效果

前面文章人像抠图 + OpenGL ES 还能这样玩?没想到吧,我们介绍了利用人像抠图算法生成的 mask 图,然后结合 OpenGL 可以产生一些有趣的效果。 抠图技术应用很广泛,比如很多手机的相机自带“人像留色”滤镜:人体区域保留彩色,人体区域之外灰度化。所以人像留色的关键技术在…

Unity下如何实现低延迟的全景RTMP|RTSP流渲染

技术背景 Unity3D可以用于创建各种类型的的应用程序,包括虚拟现实、培训模拟器等。以下是一些可以使用Unity3D全景播放的场景: 虚拟现实体验:全景视频可以用来创建逼真的虚拟环境,使用户能够感受到身临其境的感觉;培…

Spring中的Bean配置

bean配置 基础配置 别名配置 作用范围配置 1、为什么bean会默认为单例? 如果不为单例,则每一次调用bean,Spring的bean容器中,会出现多个该类的对象,这会造成容器的冗余。 2、适合交给容器进行管理的bean 表现层对象…

Ansys Zemax | 确保自由曲面设计的可制造性

本文专门介绍使用单点金刚石车床加工自由曲面的主要可制造性参数,解释了可制造性参数如何与仪器参数相关联,并展示了如何在 OpticStudio 中检查和控制这些可制造性参数。此外,还解释了如何处理其考察区域外的自由曲面的行为。例如&#xff0c…

MYSQL练习四

练习四 某公司的mis数据库中有部⻔表(dept)和员工表(employee)表结构及其数据如下: 表结构 dept表结构 employee表结构 表数据 dept表数据 employee表数据 完成以下SQL编写: 编写脚本,创建…

Eureka注册中心 与 OpenFeign调用接口

需求 一个应用通过接口,调用另一个应用的接口。使用OpenFeign来实现接口调用。 说明 通过OpenFeign(本文接下来简称Feign)调用远程接口,需要Eureka注册中心的支持。 OpenFeign调用接口的逻辑如下: 提供接口的应用…

617. 合并二叉树

题目 题解一:递归 /*** 递归* param root1* param root2* return*/public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {//结束条件if (root1 null) {return root2;} //结束条件if (root2 null) {return root1;}//两节点数值相加TreeNode me…

C++模拟实现stack

1.前言 stack 遵循的原则是先进后出,那到底是用list 还是 vector呢?其实都可以,但是队列queue就不一样了,他甚至不可以支付vector,因为效率太低了。 但是库里面用了一种新的类型,deque,它的实现…

【数据结构】实验五:栈

实验五 栈 一、实验目的与要求 1)熟悉栈的类型定义和基本操作; 2)灵活应用栈解决具体应用问题。 二、实验内容 1、判断回文数,回文是指正读反读均相同的字符序列,如“1221”和“12321”均是回文,但“…

揭秘全球最危险的11大网络间谍组织

根据安全研究人员的说法,下述这些都是全球最臭名昭著的,并且由民族国家资助的组织。 几十年前,当黑客入侵刚刚出现的时候,其大多是网络“发烧友”的“杰作”,他们痴迷于学习有关计算机和网络的一切知识。现如今&#x…

2023年Q2京东黑电行业热门类目数据分析报告(京东大数据)

随着家电行业的日趋成熟,黑电市场也愈加繁荣,黑色家电包括电视、音响、家庭影院、摄像机、游戏机等等带给人们娱乐的电器。 目前来看电视机在黑电行业的占有份额较大,而前面我们已经分析过电视市场,接下来我们继续一起来分析除电视…

实现PC端微信扫码native支付功能

目录 实现PC端微信扫码 简介 实现步骤 1. 获取商户号 2. 生成支付二维码 3. 监听支付结果 4. 发起支付请求 5. 处理支付回调 示例代码 结论 Native支付 Native支付的工作原理 Native支付的优势 Native支付的应用和市场地位 开通使用微信 native 支付流程 步骤一…

LaTeX Error: File `tabu.sty‘ not found.

虽然Miktex可以自动下载和安装没有的库,但有些时候也有可能会直接报错: LaTeX Error: File tabu.sty not found. 解决方法就是打开控制台。然后手动下载: