初识Jmeter

1、Jmeter体系结构

元件:代表Jmeter工具菜单中的一个子菜单(功能),比如HTTP请求、事务控制器、响应断言等,就是一个元件。多个类似功能组件的容器(类似于类)

常见的元件类型有:
1.取样器
2.逻辑控制器
3.前置处理器
4.后置处理器
5.断言
6.定时器
7.测试片段
8.配置元件
9.监听器

元件的作用域:

JMeter中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。
提示:核心是取样器,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。
作用域原则:
1.取样器:元件不和其他元件相互作用,因此不存在作用域的问题;
2.逻辑控制器:元件只对其子节点中的取样器和逻辑控制器作用;
3.其他六大元件:除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用;
4.如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等);
提示:以上元件中还没开始学习,暂时理解jmeter这种树形结构结构影响作用域即可。

元件执行顺序:

1.配置元件(config elements)
2.前置处理程序(Per-processors)
3.定时器(timers)
4.取样器(Sampler)
5.后置处理程序(Post-processors)
6.断言(Assertions)
7.监听器(Listeners)
提示:
1.前置处理器、后置处理器、断言等元件功能对取样器起作用(如果在它们的作用域内没有任何取样器,则不会被执行)
2.如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

组件:一组元件的集合(一个或多个),比如逻辑控制器中有事务控制器,仅一次控制器、循环控制器等,这些都是元件,但他们被归类到逻辑控制器中,逻辑控制器就是组件。实现独立的某个功能(类似于方法)

X1~X5:负载模拟的一个过程,使用这些组件来完成负载的模拟

Y1:包含的是负载模拟部分,负责模拟用户请求。

Y2:结果验证部分,负责验证结果正确性。

Z:负责结果的手机,实践上只有一个组成部分——监听器,监听器不仅可以放在线程组之内,也可以放在线程组之外。

JMeter基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。如果取样器中有参数化的需求,可以通过X2中的配置元件或者前置处理器来完成。如果有关联需求,可以通过后置处理器来完成。如果我们想要设置运行场景,比如模拟多少用户,运行多长时间,就设置线程组。如果我们想要模拟并发场景,可以利用定时器来设置;如果我们想要控制业务的执行逻辑,比如登录只运行一次,我们可以用控制器来完成。

2、X1【取样器】

取样器:用来模拟用户操作,向服务器(被测试系统)发出Http请求、WebService(SOAP/XML-RPCRequest)请求或者Java请求等。我们可以把Http请求元件看成是一个没有界面的浏览器,它可以发送Http请求,接收服务器的响应数据。

取样器的访问路径:【测试计划】一【线程组】一【Sampler】

3、X1【断言】

断言:用来验证结果是否正确,用过LoadRunner的读者应该会知道检查点这个功能,可以帮助我们来判断请求是否成功返回且是否符合要求,在JMeter中我们不叫检查点,我们叫断言。说白了就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。

JMeter2.11版本的断言元件有13个,比如响应断言、XML断言、BeanShell断言;较常用的是响应断言;对于复杂的断言还可以通过 BeanShell脚本来完成(BeanShell是类Java的脚本语言,实际上BeanShell是一个小巧的Java源码解释器,可以直接调用Java程序,具体有关BeanShell的内容请到官网http://www.beanshell.org/了解)。

[断言的访问路径是:【测试计划】-【断言】。

4、X1【监听器】

JMeter的测试结果需要添加监听器来收集,JMeter结果收集程序的设计模式就是监听器模式。

JMeter的监听器有两个任务。(1)添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用。(2)展示结果,JMeter可以以表格及图形的形式展现结果,方便测试人员分析测试结果。我们在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如察看结果树,我们可以在其中看到请求与响应的数据)。

JMeter监听器共有19个元件,访问路径是:【测试计划】-【监听器】。

【取样器】、【断言】、【监听器】组合在一起就可以帮我们完成发送请求、验证结果及记录结果三项工作。

5、X2【前置处理器】

在测试脚本开发过程中,我们在请求发送前可能会做一些环境或者参数的准备工作,那么我们可以在前置处理器中来完成这些工作。比如,我们在对数据库进行操作前需要先建立一个数据库连接,那么前置处理器就可以完成这个功能。前置处理器访问路径:【测试计划】-【前置处理器】。

6、X2【配置元件】

性能测试中为了模拟大量用户操作我们往往需要做参数化,Jmeter的参数化可以通过配置元件来完成,比如CSVData SetConfig,它可以帮助我们从文件中读取测试数据。另外JMeter也提供了众多的函数(通过函数助手可以查看到)来帮我们生成动态数据。当然配置元件的作用不仅于此,它还可以用来记录服务器的返回数据,比如HttpCacheManager,自动记录服务器返回的Cache信息。简而言之它为取样器提供预备数据,然后由取样器发出请求。取样器访问路径:【测试计划】-【配置元件】。

7、X2【后置处理器】

后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个Web应用程序,我们登录后会返回一个SessionID,这个SessionID在登录之后的业务操作过程中会作为验证条件,验证用户是否合法登录了。我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢? 首先我们要知道这个SessionID从哪里来?它是由服务器返回的。接着我们要获取它,用什么工具获取呢?JMeter帮我们提供了元件,比如正则表达式提取器,它支持正则表达式的方式来提取数据。
后置处理器就是专门用来对响应数据做处理的元件,JMeter的关联就是通过后置处理器来完成的。
访问路径:【测试计划】-【后置处理器】。

【前置处理器】、【配置元件】、【后置处理器】都是为取样器提供数据支持的,取样器关注的是业务逻辑。

8、X3【控制器】

我们在收邮件时,只需要登录一次邮箱即可以查看多封邮件。如果这个场景我们要在JMeter中实现,我们需要控制登录的次数,如何实现呢?JMeter逻辑控制器(后续说到控制器时默认为逻辑控制器)中的仅一次控制器即可以完成。当然了,控制器不只有这一个,还有很多其他的控制器来完成我们的各种需求。打游戏有攻略,各种招式完全超乎设计人员想象;控制器用法也有攻略,组合在一起也能够完成各种奇葩需求。

控制器的访问路径:【测试计划】-【线程组】-【逻辑控制器】。

9、X4【定时器】

为了足够真实的模拟用户负载,我们有时会需要模拟这些请求在同一时刻发送,就好像把大家集合在一条起跑线上,然后一声令响,同时起跑。那么我们此时需要一个集合的功能,JMeter中可以通过定时器来完成这个需求。当然了,定时器可不只有这一个功能,定时器种类有很多,每一种代表了不同的功能,基本能够满足我们的所有幻想。

访问路径:【测试计划】-【线程组】-【定时器】。

10、X5【线程组】

性能测试需要模拟大量用户负载的情况,线程组就是用来完成这个工作的,在此元件中我们可以设置运行的线程数(就是模拟多少用户,一线程一用户)。线程组的设置十分简单,除了设置线程数以外,还可以设置运行时长,定时运行等。另外第三方插件(JMeter Plugin)的扩展也让JMeter的场景设计更加丰富。
访问路径:【测试计划】-【Threads(Users)】。

11、Jmeter测试计划要素

JMeter中一个脚本即是一个测试计划,也是一个管理单元。JMeter的请求模拟与并发数(设置线程数,一个线程代表一个虚拟用户)设置都在脚本文件中一起设置。不像LoadRunner把脚本与虚拟用户设置分开。测试计划要素如下。

(1)要素一:脚本中测试计划只能有一个

Jmeter测试计划类似LoadRunner Controller中的测试场景,同一时刻场景故然只能有一个,JMeter脚本在GUI中显示时是树型结构,测试计划是根节点,根节点当然只能有一个。

(2)要素二:测试计划中至少要有一个线程组
JMeter负载是通过线程组驱动的,所以计划中至少要出现一个线程组,也许你只运行一个线程。JMeter测试计划支持多个线程组。我们可以在计划下面建立多个线程组,类似LoadRunner中的Group方式的场景(没接触过LoadRunner的读者可以自行忽略有关LoadRunner的说法),把不相关联的业务分布在不同的线程组(LoadRunner中的不同Group)。所以我们可以把JMeter计划理解成LoadRunner中的Group方式场景。
(3)要素三:至少要有一个取样器
测试的目的就是要模拟用户请求,没有取样脚本就毫无意义,没有意义就不用谈论对错了。

(4)要素四:至少要有一个监听器
测试结果用来衡量系统性能,我们需要从结果中分析系统性能。
其他元件都是为这些要素服务的,到底当前元件下能够添加哪些种类的元件呢?用户不用担心,JMeter做了严格控制。【添加】菜单后列出的组件列表即是我们可以在线程组下添加的组件种类,组件节点下列出了可以添加的元件。

12、【小结】

第一,利用取样器模拟用户请求;如果需要做一些数据及环境的准备,那么就使用配置管理器;如果需要对响应的数据做处理,使用后置处理器。

第二,控制运行;使用线程组来设置运行场景,利用逻辑控制器来控制业务(实际就是控制取样器)。

第三,收集结果,利用断言来验证测试结果,利用监听器来收集显示测试结果。同时JMeter也支持远程运行,弥补单台机器负载不够的情况。远程运行时远程负载机要运行Agent(jmeter-server.bat来启动)。

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

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

相关文章

技术资产管理:智能复用评估

技术资产管理:智能复用评估 关键词:技术资产管理、智能复用评估、技术复用、资产价值评估、技术资源优化 摘要:本文聚焦于技术资产管理中的智能复用评估这一关键议题。首先阐述了技术资产管理及智能复用评估的背景,明确目的、范围、预期读者等内容。接着详细介绍核心概念与…

【计算机毕业设计案例】基于SpringBoot的大学生综合素质测评系统设计与实现基于SpringBoot的学生身体素质测评管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【计算机毕业设计案例】基于SpringBoot的水族馆鱼类商品销售与经营管理系统基于SpringBoot的水族馆商品销售与经营管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

无线网络仿真:6G网络仿真_(19).6G网络仿真未来趋势

6G网络仿真未来趋势 1. 6G网络仿真概述 6G网络仿真是在6G网络研究和开发中不可或缺的一部分。通过仿真,研究人员可以验证理论模型、评估网络性能、测试新算法和技术,以及预测未来网络的行为。6G网络仿真不仅涵盖了传统的无线通信仿真技术,还引…

无线网络仿真:6G网络仿真_(20).6G网络仿真实践项目

6G网络仿真实践项目 项目背景 随着5G技术的普及和6G技术的研究不断深入,无线网络仿真成为研究和开发6G网络的关键工具之一。6G网络仿真不仅能够帮助研究人员验证新的通信协议和算法,还能为网络规划和优化提供有价值的参考。本节将详细介绍一个具体的6G网…

无线网络仿真:Wi-Fi网络仿真_(3).仿真软件介绍与使用

仿真软件介绍与使用 在进行无线网络仿真时,选择合适的仿真软件至关重要。本节将详细介绍几种常用的Wi-Fi网络仿真软件,包括NS-3、OMNeT和MATLAB,并提供具体的使用方法和示例代码。 NS-3 仿真软件 NS-3(Network Simulator 3&#x…

无线网络仿真:6G网络仿真_(15).6G网络仿真参数设置

6G网络仿真参数设置 在进行6G网络仿真时,参数设置是至关重要的一步。合理的参数设置不仅能够确保仿真的准确性,还能有效提升仿真的效率。本节将详细讨论6G网络仿真的参数设置,包括物理层参数、链路层参数、网络层参数和应用层参数。我们将结合…

智能编程平台:低代码开发实践

智能编程平台:低代码开发实践关键词:智能编程平台、低代码开发、开发实践、可视化编程、自动化代码生成摘要:本文围绕智能编程平台的低代码开发实践展开。首先介绍了低代码开发的背景和相关概念,包括目的、预期读者、文档结构等。…

大数据浪潮下,ClickHouse的破局之道

大数据浪潮下,ClickHouse的破局之道:从原理到实践的实时分析加速指南 引言:当大数据分析遇到“慢”的瓶颈 深夜11点,电商数据分析师小周盯着电脑屏幕皱起眉头——他要统计“双11”当天10亿条用户行为数据中的Top10热门商品,用Hive跑查询已经等了40分钟,结果还没出来。而…

大数据建模中的向量化处理:SIMD指令优化计算

大数据建模中的向量化处理:SIMD指令优化计算——从"单柜台结账"到"流水线工厂"的效率革命 关键词 SIMD指令集、向量化处理、数据并行、指令级并行、缓存友好、大数据建模、CPU优化 摘要 在大数据建模场景中,计算效率是制约模型训练速…

别再重复造轮子!AI应用架构师:企业AI中台可复用组件库建设,附开发规范

别再重复造轮子!AI应用架构师:企业AI中台可复用组件库建设,附开发规范 关键词:AI中台、可复用组件库、开发规范、企业AI应用、架构设计、AI技术整合、组件化开发 摘要:本文深入探讨企业AI中台可复用组件库的建设。从…

这3个内幕曝光,了解洁净室专用电话机的技术内核!

“看似简单的【洁净室专用电话机】,选错细节可能导致交叉污染风险、通讯中断、降级失败。” 作为制药厂、实验室洁净室工程的常用通讯设备,一部功能可靠的洁净室专用电话机至关重要。它不仅关乎信息传递的效率,更直接关系到洁净环境的维持与合规性。然而,许多用户甚至采购商…

计算机毕设 java 基于协同过滤算法的就业推荐系统的设计与实现 基于协同过滤算法的智能就业推荐平台 求职与企业招聘匹配系统

计算机毕设 java 基于协同过滤算法的就业推荐系统的设计与实现(配套有源码、程序、MySQL 数据库、论文),本套源码可先查看功能演示视频,文末有联xi 可分享c系统核心功能涵盖注册登录、个人中心、多角色管理(管理员、用…

【毕业设计】基于Java的学生身体素质测评管理系统基于SpringBoot的学生身体素质测评管理系统(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

计算机毕设 java 基于智能机器人的智能答疑系统的设计与实现 基于智能机器人的交互式答疑平台 师生问答与知识交流系统

计算机毕设 java 基于智能机器人的智能答疑系统的设计与实现(配套有源码、程序、MySQL 数据库、论文),本套源码可先查看功能演示视频,文末有联xi 可分享传统答疑模式存在响应不及时、交流效率低、资源共享不足等问题,影…

【信号处理】通过 “最近邻匹配” 和 “球面线性插值(SLERP)” 两种方式将 GNSS 位姿(位置 + 四元数)插值到激光雷达时间戳附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

【单相STATCOM】单相STATCOM在单相系统中补偿无功功率,并减轻谐波附Simulink仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

Unity3D 绿色家园 垃圾分类

基于 Unity3D 引擎开发,系统包含垃圾分类解说、“你是什么垃圾”、宣传短片播放和返回首页四个模块。用户可点击不同颜色的垃圾桶图标查看图文与语音解说,输入垃圾名称即可快速查询分类及相关信息;短片播放支持快进、后退、音量调节、进度控制…

必学!提示工程领域认证及进阶的要点全解析

必学!提示工程领域认证及进阶要点全解析——从入门到精通的终极指南 关键词 提示工程(Prompt Engineering)、大语言模型(LLM)、Prompt Design、认证体系、链式思考(CoT)、应用场景、未来趋势 摘…

【单悬臂梁】基于梯度缺陷ANCF梁单元的单悬臂梁在重力作用下的弯曲MATLAB仿真,采用显式时间步进算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…