Jmeter性能测试配置

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.mzph.cn/news/10183.shtml

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

相关文章

【R3F】0.8drei使用

安装引用 npm install @react-three/drei@9.50 //这里是为了和之前版本对应控制器 通过 three/examples/jsm/controls/OrbitControls.js 引入使用 查看 通过 @react-three/drei 方式很简单直接添加上对应的节点就可以可以了 import {OrbitControls, TransformControls } from …

VR全景在酒店的发展状况如何?酒店该如何做营销?

现阶段,VR全景技术已经被酒店、民宿、旅游景区、房产楼盘、校园等行业所应用,每天都有不少人通过VR全景展示来了解酒店的设施环境,而酒店也可以借此机会,详细展示自身优势,更大范围吸引顾客。 VR酒店拥有真实、立体的全…

Git Gui相关术语

文章目录 Git Gui主界面相关术语- Amend Last Commit(修正最后一次提交)- Rescan(重新扫描)- Sign Off(签名)- Stage Changed Git Gui Commit菜单相关术语- Stage to Commit(暂存到提交&#xf…

C++ 左键实现 加线条,右键实现指定位置的点消失,现时删除线。

左键实现 加线条,右键实现指定位置的点消失,现时删除线。 // delpoint.cpp : 定义应用程序的入口点。 //#include "stdafx.h" #include "delpoint.h"#define MAX_LOADSTRING 100typedef struct tag_POINT{long x;long y;struct tag_…

opencv hand openpose

使用opencv c 来调用caffemodel 使用opencv 得dnn 模块调用 caffemodel得程序,图片自己输入就行,不做过多得解释,看代码清单。 定义手指关节点 const int POSE_PAIRS[20][2] { {0,1}, {1,2}, {2,3}, {3,4}, // thumb {0,5}, {5,6}, {6,7}…

Pytest框架 之【用例执行顺序】

今天在使用pytest执行用例过程中,使用了debug调试代码时,偶然发现,执行用例时不是自上而下的,pytest 中的用例执行顺序与unittest 是不一样的,pytest有默认的执行顺序,还可以自定义执行顺序。而在unittest框…

Linux 学习记录58(ARM篇)

Linux 学习记录58(ARM篇) 本文目录 Linux 学习记录58(ARM篇)一、GIC相关寄存器1. 系统框图2. 中断号对应关系 二、GICD寄存器1. GICD_CTLR2. GICD_ISENABLERx3. GICD_IPRIORITYRx4. GICD_ITARGETSRx5. GICD_ICPENDRx 三、GICC寄存器1. GICC_PMR2. GICC_CTLR3. GICC_IAR4. GICC_…

软工导论知识框架(二)结构化的需求分析

本章节涉及很多重要图表的制作,如ER图、数据流图、状态转换图、数据字典的书写等,对初学者来说比较生僻,本贴只介绍基础的轮廓,后面会有单独的帖子详解各图表如何绘制。 一.结构化的软件开发方法:结构化的分析、设计、…

Node.js学习笔记-02

三、node的异步I/O 四、异步编程 1、函数式编程 高阶函数 函数可以作为参数或者返回值。 偏函数用法 偏函数用法是指创建一个调用另外一个部分——参数或变量已经预置的函数——的函数的用法。 举个例子:在JavaScrip中进行类型判断时,我们通常会进…

企业网络安全与数据保护合规建设 ——从合规运营到香港上市

序言 《企业网络安全与数据保护合规建设 ——从合规运营到香港上市(一)》梳理了我国网络安全与数据保护领域近期主要立法情况,本文将着重分析拟赴港上市企业运营阶段的数据合规要点以期为拟赴港上市的相关企业提供有益的参考。 二 企业运营…

PatchMatchNet运行eth3d数据集重建 实操教程(图文并茂、超详细)、bash eval.sh脚本文件解释说明

文章目录 1 准备工作1.1 下载源码1.2 测试集下载1.2 配置环境2 eth3d 数据集 重建演示2.1 重建效果查看3 补充 测试列表定义4 Meshlab查看三维点云时 ,使用技巧总结1 Meshlab查看三维点云时 ,换背景颜色2 Meshlab查看三维点云时,点云颜色很暗淡,怎么调亮3 Meshlab和CloudCo…

Jenkins 还可以支持钉钉消息通知?一个插件带你搞定!

Jenkins 作为最流行的开源持续集成平台,其强大的拓展功能一直备受测试人员及开发人员的青睐。大家都知道我们可以在 Jenkins 中安装 Email 插件支持构建之后通过邮件将结果及时通知到相关人员。 但其实 Jenkins 还可以支持钉钉消息通知,其主要通过 Ding…

Log4j源码解析

Log4j源码解析 主要流程 Logger logger Logger.getLogger(Main.class); 1、通过Logger.getLogger(Class clazz) 或 Logger.getLogger(String name)进入。 2、加载LogManager进jvm, 执行静态代码块执行初始化, 创建出RepositorySelector实例及LoggerRepository实例(Hierarchy…

vue3响应式最大的特点

趋于面向对象编程,和Java很像,以前v-model可以使用,但是现在不是了。 let postsreactive({attrs:[],name:列表}) 任何东西,都先扔到一个对象里面 页面使用也不需要posts.name这样一堆点,直接{{name}}可以使用一个很方便的方法甩…

如何提高自动化测试覆盖率

实施自动化测试最重要的就是要保证其可用性,而不少同学写了不少自动化测试用例,但感觉到其可用性不高。究其原因,不是自动化测试本身的问题,是实施自动化测试的时候没有考虑周全。 第一,不合事宜地引入自动化测试 在公…

C语言实现扫雷

今天用C语言写一个扫雷的代码 扫雷其实和我们之前写的三子棋有点相似,首先是打印菜单,进行选择 我们还是像之前一样有三个文件,一个是game.h game.c test.c test.c实现我们的扫雷逻辑 gam.c实现我们的游戏需要的函数 game.h来声明 那么我们首…

轻量级Web报表工具ActiveReportsJS全新发布v4.0,支持集成更多前端框架!

ActiveReportsJS 是一款基于 JavaScript 和 HTML5 的轻量级Web报表工具,采用拖拽式设计模式,不需任何服务器和组件支持,即可在 Mac、Linux 和 Windows 操作系统中,设计多种类型的报表。ActiveReportsJS 同时提供跨平台报表设计、纯…

将Python远控隐藏在文档图片中的行动分析

1、概述 ** **近日,安天CERT通过网络安全监测发现了一起恶意文档释放Python编写的远控木马事件。通过文档内容中涉及的组织信息和其中攻击者设置的诱导提示,安天CERT判断该事件是一起针对阿塞拜疆共和国国家石油公司进行的定向攻击活动。此次事件中&…

godot引擎c++源码深度解析系列二

记录每次研究源码的突破,今天已经将打字练习的功能完成了一个基本模型,先来看下运行效果。 godot源码增加打字练习的demo 这个里面需要研究以下c的控件页面的开发和熟悉,毕竟好久没有使用c了,先来看以下代码吧。 //第一排 显示文本…

13、ffmpeg使用nvidia显卡对OAK深度相机进行解码和编码

基本思想:简单使用nvidia的硬件解码进行oak相机的编码和解码学习 一、在本机rtx3060配置好显卡驱动和cuda之后进行下面操作50、ubuntu18.04&20.04CUDA11.1cudnn11.3TensorRT7.2/8.6Deepsteam5.1vulkan环境搭建和YOLO5部署_ubuntu18.04安装vulkan_sxj731533730的…