性能测试(7)——Jmeter元件与组件

简介: 代表jmeter工具菜单中的一个子菜单(功能),比如HTTP请求、事务控制器、响应断言等,就是一个元件。元件下的子组件,比如逻辑控制器中有事务控制器,仅一次控制器,循环控制器等,这些都是元件,但它们被归类到逻辑控制器中,逻辑控制器就是组件。

元件与组件简介

jmeter元件: 代表jmeter工具菜单中的一个子菜单(功能),比如HTTP请求、事务控制器、响应断言等,就是一个元件。
jmeter组件: 元件下的子组件,比如逻辑控制器中有事务控制器,仅一次控制器,循环控制器等,这些都是元件,但它们被归类到逻辑控制器中,逻辑控制器就是组件。


九大元件:

(一)取样器

取样器用来模拟用户操作,向服务器(被测系统)发出http请求、webservice请求或者java请求等。可以把http请求元件看成是一个没有界面的浏览器,它可以发送http请求,接收服务器的相应数据。

(二)逻辑控制器

逻辑控制器(Logic Controller)可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
循环控制器可以设置请求的循环次数或永远循环(如果选中永远的话)、事务控制器可以将多个请求放在同一个事务中。如果选中Gegerate parent sample,则聚合报告中只显示事务控制器的数据,而不会显示其中的各个请求的数据,反之则全部显示。

(三)前置处理器

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

(四)后置处理器

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

(五)断言

断言用来验证结果是否正确,用过LoadRunner的应该会知道检查点这个功能,可以帮助判断请求是否成功返回且是否符合要求,在jmeter中不叫检查点,叫做断言。就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。jmeter断言元件有多个,比如响应断言、XML断言、BeanShell断言;较常用的是响应断言;对于复杂的断言还可以通过BeanShell脚本来完成(BeanShell是类java的脚本语言,实际上BeanShell是一个小巧的java源码解释器。可以直接调用java程序)。
断言的访问路径:【测试计划】-【断言】或者 【测试计划】-【线程组】-【断言】

(六)定时器

为了足够真实地模拟用户负载,有时会需要模拟这些请求在同一时刻发送,就好像把大家
集合在一条起跑线上,然后一声令响,同时起跑。那么此时就需要一个集合的功能,jmeter中可以通过定时器来完成这个需求。当然了,定时器可不只有这一个功能,定时器种类有很多,每一种代表了不同的功能。
定时器访问路径:【测试计划】-【线程组】-【定时器】

(七)测试片段

控制器上一种特殊的线程组,它与线程组处于一个层级。与线程组不同的就是:测试片段不会执行。
它是一个模块控制器或者被控制器应用时才会被执行。
方便管理测试用例,按照不同的功能模块进行划分。因为版本不断的被迭代,接口越来越多,可以有效管理我们的测试用例。
每个版本一个jmx脚本,里面包含多个测试片段,然后通过控制管理器进行调用。(可以打开几个jmeter进行来跑脚本)
测试片段访问路径:【测试计划】-【线程组】-【测试片段】
然后在测试片段添加一些请求,相当于你的测试用例,然后保存。

(八)配置元件

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

(九)监听器

jmeter的测试结果需要添加监听器来收集,jmeter结果收集程序的设计模式就是监听器模式。jmeter的监听器有两个任务:
(1) 添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用。
(2) 展示结果,jmeter可以以表格及图形的形式展现结果,方便测试人员分析测试结果。在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如察看结果树,可以在其中看到请求与响应的数据)。
监听器访问路径:【测试计划】-【监听器】或者 【测试计划】-【线程组】-【监听器】
【取样器】、【断言】、【监听器】组合在一起就可以完成发送请求、验证结果及记录结果三项。


元件作用域

  1. 取样器:元件不和其他元件相互作用,因此不存在作用域的问题;
  2. 逻辑控制器:元件只对其子节点中的取样器和逻辑控制器作用;
  3. 其他六大元件:除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用;
  4. 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等);

元件执行顺序

同一作用域下不同元件

  1. 配置元件
  2. 前置处理器
  3. 定时器
  4. 取样器
  5. 后置处理器
  6. 断言
  7. 监听器

不同作用域下相同元件:
从上到下依次执行

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
7月前
|
关系型数据库 MySQL Java
【JMeter】(3)---MySQL压测
【JMeter】(3)---MySQL压测
174 0
|
7月前
|
JSON Java 测试技术
【JMeter】(2)---HTTP压测
【JMeter】(2)---HTTP压测
97 0
|
5月前
|
消息中间件 弹性计算 Java
使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践
使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践
|
7月前
|
XML 前端开发 测试技术
使用 jMeter 对 SAP Spartacus 进行并发性能测试
使用 jMeter 对 SAP Spartacus 进行并发性能测试
73 0
|
3月前
|
测试技术 UED
PTS压测问题之资源准备好慢如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
245 1
|
3月前
|
JSON 网络协议 Java
使用Jmeter进行功能和性能测试
使用Jmeter进行功能和性能测试
|
29天前
|
设计模式 IDE 测试技术
深入理解自动化测试框架Selenium的核心组件
【2月更文挑战第30天】 在快速迭代的软件开发过程中,自动化测试已成为确保产品质量和加快上市速度的关键。本文将深入探讨Selenium这一广泛使用的自动化测试框架,剖析其核心组件以及它们如何协同工作以提供高效、灵活的测试解决方案。我们将从Selenium架构的基础出发,详细解读WebDriver API、Selenium Grid、以及各种语言绑定等关键部分,并讨论如何通过这些组件进行有效的UI测试。
|
3月前
|
SQL 测试技术 数据安全/隐私保护
密码组件校验规则该如何测试?
密码组件校验规则该如何测试?
|
8月前
|
关系型数据库 MySQL Java
jmeter--压测数据库
jmeter--压测数据库
|
3月前
|
前端开发 JavaScript API
React 生态系统:路由、状态管理、调试、测试、组件库、文档……
React 生态系统:路由、状态管理、调试、测试、组件库、文档……
41 0