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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 代表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进行规格选择与性能压测。
目录
相关文章
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
141 3
|
20天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
45 3
|
18天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
35 1
|
23天前
|
JavaScript 测试技术 API
Jest进阶:测试 Vue 组件
Jest进阶:测试 Vue 组件
|
24天前
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
36 2
|
2月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
63 4
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
248 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【9月更文挑战第10天】随着软件应用的不断扩展,性能测试成为确保系统稳定运行的关键环节。本文通过对比Apache JMeter和Locust,探讨了如何在Python环境中利用这两款工具挖掘更多性能测试潜力。JMeter是一款成熟且功能强大的开源工具,支持多种协议,适用于各种应用的测试;而Locust则基于Python,通过简单脚本模拟HTTP请求,更适合Web应用测试。
95 3
|
14天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
49 3
下一篇
无影云桌面