性能测试(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进行规格选择与性能压测。
目录
相关文章
|
2月前
|
JSON Java 测试技术
面向初学者的JMeter实战手册:从环境搭建到组件解析
Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。
93 0
|
1月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
284 23
|
3月前
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
9月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
311 3
|
6月前
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
122 1
Jmeter如何对UDP协议进行测试?
|
8月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
323 3
|
8月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
201 1
|
8月前
|
JavaScript 测试技术 API
Jest进阶:测试 Vue 组件
Jest进阶:测试 Vue 组件
|
8月前
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
92 2
|
10月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
321 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存