【Jmeter入门】一文带你熟悉Jmeter原理和结构体系

1248 篇文章 11 订阅
682 篇文章 4 订阅

Jmeter作为一款开源的轻量级应用,常被用于性能、接口、自动化等测试中。

它具有安装方便、功能强大、界面操作简单、测试结果可视化、测试脚本无需编程、高扩展等优点,是测试童鞋工作中的常用工具。

本文将梳理Jmeter的原理和结构体系,介绍Jmeter八大元件及其用法。通过理论知识和实际应用举例相结合,带领新手快速入门Jmeter。

Jmeter原理

Jmeter不仅可以作为性能测试工具,还可以作为接口测试工具。作为不同类型的工具,Jmeter的原理也有所不同,具体如下:

作为性能测试工具

Jmeter通过线程组驱动多个线程的方式运行,来模拟真实用户对Web服务器的访问压力。实现过程如下图所示

Jmeter作为Web服务器和浏览器之间的代理网关,能够录制浏览器的请求、响应Web服务器生成测试脚本。在测试脚本的基础上,Jmeter通过线程组模拟真实用户的访问。

作为接口测试工

Jmeter向服务器提交请求,从服务器取回请求返回的响应结果,实现过程如下图所示:

作为发起请求的客户端,Jmeter是组装请求报文结构的容器,例如:请求行、请求头、请求数据等,并可将响应结果进行可视化展示。

对于接口的复杂逻辑,Jmeter有丰富的元件进行支持,如前/后置处理、响应断言、也可以自行开发插件。

组装请求报文要求对各种协议有一定的了解,例如HTTP(S)、TCP、SOAP、DUBBO等常见协议。

Jmeter结构体系与元件

Jmeter结构体系

把Jmeter的结构体系拆分为三维空间,无论是性能测试还是接口测试,都会按图中的体系结构运行,部分细节有所不同,结构图如下:

各个步骤的具体含义如下:

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

  • X1:根据协议,通过“采样器”模拟用户请求(如采样器:HTTP请求),“断言”检查服务器响应是否正确,随后“监听器”收集结果信息;

  • X2:“前置处理器”“配置元件”“后置处理器”会完善测试脚本部分,包括参数化、关联等,都是为取样器提供数据支持;

  • X3:“控制器”控制测试脚本业务逻辑,多种控制器组合可灵活控制执行顺序;

  • X4:性能测试中常用“定时器”制作集合点,模拟用户并发;

  • X5:一个“线程组”代表一个用户;性能测试中要模拟负载场景,某些情况下要测试同时提交时是否会出现数据丢失的问题,也需要多个线程同时运行;

  • Y1:此部分负责模拟用户请求;

  • Y2:可以理解为检查点,负责验证结果正确性;

  • Z:负责结果的收集,“监听器”不仅可以放在线程组之内,而且还可以放在线程组之外。

Jmeter八大元件说明

八大元件名称

1、取样器:模拟用户的请求操作,如HTTP请求、WebService请求、Java请求等,添加路径为:【测试计划】→【线程组】→【取样器】

2、断言:验证结果的正确性,如响应断言,添加路径为:【测试计划】→【断言】

3、监听器:收集测试结果信息,如查看结果树、聚合报告,添加路径为:【测试计划】→【监听器】

4、前置处理器:为请求发送前的环境及参数做准备,添加路径为:【测试计划】→【前置处理器】

5、配置元件:为取样器提供预备数据。由取样器发出请求,如CSV(文件中读取测试数据)、函数助手(提供了众多的函数动态生成数据)、HTTP请求默认值(为影响范围内的元件提供默认值)。

另外,配置元件可以影响其范围内的所有元件,添加路径为:【测试计划】→【配置元件】

6、后置处理器:处理服务器的返回结果,比较常用的是正则表达式提取器(用于从response中获取pageId),添加路径为:【测试计划】→【后置处理器】

注:上述【前置处理器】、【配置元件】、【后置处理器】都是为取样器提供数据支持的。

(7)逻辑控制器:控制多个请求发送的循环次数及顺序等,仅对其子节点中的取样器生效。登录一次邮箱,即可查看多封邮件,仅一次控制器即可实现一次登录的场景;多次提交单据,可用循环控制器实现该场景。

逻辑控制器可以任意组合来实现不同需求,添加路径为:【测试计划】→【线程组】→【逻辑控制器】

(8)定时器:Jmeter的请求是无延时的,加入定时器可控制多个请求发送的时间频次,常用于模拟用户思考、模拟请求同一时刻发送的场景。

需要注意的是,定时器对其作用范围内的每一个取样器有效,在作用范围内的每一个取样器之前执行,添加路径为:【测试计划】→【线程组】→【定时器】

Jmeter测试计划要素

如果想要实施一个测试计划,需要注意以下要素:

要素一:脚本中只能存在一个测试计划

要素二:测试计划中至少有一个线程组。线程组是任何测试计划的起点,所有控制器和取样器必须在线程组下。

要素三:至少有一个取样器(测试目的就是要模拟用户请求,没有取样脚本则毫无意义)。

要素四:至少有一个监听器(收集测试结果信息,从中分析执行结果和性能)。

注:其它元件都是为要素服务的。线程组中的取样器的执行顺序默认是从上到下执行。交替控制器、随机控制器、随机顺序控制器和循环控制器等可以改变取样器的执行顺序。

应用举例

此处以利用Jmeter实现【登录】【提交单据】两个目的为例,为大家简单介绍Jmeter的应用方法,具体步骤如下图:

1、登录环节运用到"JSR233 PreProcessor"对登录密码处理,"正则表达式提取器"对取样器返回的值做处理,把取到的值作为下一个请求的参数;

2、提交单据环节运用到“简单控制器”“循环控制器",循环提单次数由“用户定义的变量number控制”,提单的单据编码由“随机变量”控制;

3、配置元件中的“HTTP Cookie管理器”、“HTTP信息头管理器”、“HTTP请求默认值”定义了线程中所有HTTP请求(取样器的一种)的通用配置,用以减少重复工作;

4、监听器中的“断言结果”、“查看结果树”、“聚合报告”可以查看脚本执行结果,并根据结果进行数据分析。


END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值