【Jmeter】- 01 - Jmeter基础入门及体系结构

目录

Jmeter简介

名词解释

Jmeter体系结构图

Jmeter的基本原理

JMeter组成部分

Jmeter运行原理

Jmeter远程运行架构图

Jmeter测试计划要素

JMeter工具目录介绍

Jmeter安装使用

总结


Jmeter简介

JMeter是一款开源桌面软件,用来模拟用户负载来完成性能测试工作。JMeter可以对web进行测试,提供web录制功能,可以扩展JMeter功能来满足特定的测试需求。

 

名词解释

元件:代表JMeter工具菜单中的一个子菜单,比如HTTP请求,事务控制器,响应断言等,就是一个元件。

组件:一组元件的集合(一个或者多个)。比如逻辑控制器中有事务控制器、循环控制器等,这些都是元件,但是它们把归类到逻辑控制器中,逻辑控制器就是组件。

 

Jmeter体系结构图

 

Jmeter的基本原理

Jmeter的基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言验证结果的正确性,通过监听器来记录测试结果。

  1. 如果取样器中有参数化的需求,可以通过X2中的配置元件或者前置处理器来完成。
  2. 如果有关联需求,可通过后置处理器来完成。
  3. 如果想要设置运行场景,如模拟多少用户,运行多长时间,可以设置线程组
  4. 如果想要模拟并发场景,可以利用定时器来设置。
  5. 如果想要控制业务的执行逻辑,如登录操作只运行一次,可以使用控制器来完成。

 

JMeter组成部分

  X1 【取样器】

用来模拟用户操作,向服务器(被测试系统)发出Http请求、WebService(SOAP/XML-RPC Requests)请求或者Java请求等。

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

X1 【断言】

用来验证结果是否正确,类似于LoadRunner中的检查点。可以帮助我们来判断请求是否成功返回且是否符合要求。就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。常用的是响应断言,对于复杂的断言可以通过BeanShell脚本来完成。

断言的访问路径:【测试计划】—— 【断言】

X1 【监听器】

收集JMeter的测试结果,JMeter结果收集程序的设计模式就是监听器模式。JMeter的监听器有两个任务:

1.添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用。

2.展示结果,JMeter可以以表格及图形的形式展示结果,方便测试人员分析测试结果。在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如查看结果树,我们可以在其中看到请求与响应的数据)

监听器的访问路径:【测试计划】—— 【监听器】,详情如下图:

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

X2 【前置处理器】

在取样器发送请求之前做一些环境或参数的准备工作,例如:在对数据进行操作前需要建立一个数据库连接,那么前置处理器可以完成这个工作。

前置处理器的访问路径:【测试计划】—— 【前置处理器】

X2 【配置元件】

取样器提供预备数据、然后由取样器发出请求;还可以用来记录服务器的返回数据,比如:Http Cache Manager,自动记录服务器返回的Cache信息。

性能测试中为了模拟大量用户操作往往需要参数化,JMeter中的参数化可以通过配置元件来完成,比如:CSV Data Set Config,可以帮助我们从文件中读取数据。另外JMeter也提供了从多函数来帮助我们生成动态数据。

 配置元件的访问路径:【测试计划】—— 【配置元件】,:

X2 【后置处理器】

一般放在取样器之后,用来处理服务器的返回结果。(专门用来对响应数据做处理的元件,JMeter中的关联也是通过后置处理器来完成)

比如一个Web程序在登录后返回一个SessionID,这个SessionID在登录之后的业务过程中会做为验证条件,验证用户是否合法登录了。我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢? 首先我们要知道这个SessionID从哪里来?——它是由服务器返回的。我们需要用什么工具获取它?JMeter提供了元件,比如正则表达式提取器,它支持正则表达式的方式来提取数据。

访问路径:【测试计划】——【后置处理器】,:

  1. X3 【控制器】

逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

比如在收邮件时,只需要登录一次邮箱就可以查看多封邮件,这个场景在JMeter中只需要使用控制器中的“一次控制器”就可以控制登录的次数。

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

X4 【定时器】

用于在模拟大量用户在同一时间处理系统业务,起到集合的功能(常用于并发测试)

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

X5 【线程组】

用于模拟大量用户负载,此元件中可以设置运行的线程数(就是模拟多用户,一线程就是一个用户)

访问路径:【测试计划】——【线程组】

测试片段(Test Fragment)

辅助组件,可以在脚本开发过程中用来备份元件,Test Fragment下的元件可以被模块控制器调用,可以利用他来模块化请求供模块化控制器调用

 

Jmeter运行原理

在Jmeter中是以线程的方式来运行,运行在JVM虚拟机上的Jmeter通过线程组来驱动多个线程运行测试脚本对被测服务发起负载,买个负载机上都可以运行多个线程组。Jmeter运行场景不仅可以以GUI方式完成,还可以使用命令行。命令行运行的方式对于负载机的资源消耗更小。

 

Jmeter远程运行架构图

控制机:运用多台Jmeter负载机进行性能测试,被选中作为管理机的那台机器即是控制机。Jmeter控制机也可以参与脚本的运行;同时它也担负着管理远程负载机指挥负载机运行的任务,并且收集远程负载机的测试结果。

  1. 负载机:向被测试应用服务器发起负载的机器,控制机同时也是一台负载机。若负载机想要被控制机控制需要运行一个客户端程序(Agengt:jmeter-server.bat)。启动后,控制机便可以把运行的脚本隐蔽的发送到远程负载机。但是如果运行的测试脚本有参数文件及依赖的jar包时,控制机并不能把他们发送到远程负载机,这种情况就需要手动copy了。不过也可以通过工具来实现自动copy。
  2. 远程运行逻辑:

远程负载机首先启动Agent程序,待控制机连接;

控制机连接上远程负载机;

控制机发送指令(脚本及启动命令)启动线程;

负载机运行脚本,回传状态(包括结果);

控制机手机结果并显示;

 

Jmeter测试计划要素

JMeter中一个脚本即是一个测试计划,也是一个管理单元,JMeter的请求模拟与并发数(设置线程数,一个线程代表一个虚拟用户)设置都子脚本文件中一起设置。

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

要素二:测试计划中至少要有一个线程组

要素三:至少要有一个取样器

要素四:至少要有一个监听器

 

JMeter工具目录介绍

 

  1. Bin:放置了各项配置文件(比如日志设置、JVM设置等)、启动文件(JMeter启动快捷方式,报告生成快捷方式,Heap Dump快捷方式等)、启动jar包、示例脚本等。
  2. Docs:放置了JMeter API离线文档,Web方式。
  3. Extras:JMeter辅助功能,提供与Ant、Jenkins集成的可能性,我们可以利用Ant与Jenkins来构建性能测试自动化构架。Ant可以利用xsl脚本把XML格式的测试结果以HTML方式展示。
  4. Lib:JMeter组件以jar包的形式放置在lib/ext目录下,需要扩展的JMeter组件的jar包放在此目录即可。JMeter支持运行Junit测试类,其测试包放在lib/junit目录下。
  5. licenses:JMeter licenses相关声明信息放在此文件夹,全部是文本文件。对测试没有任何实际意义。
  6. printable_docs:JMeter的离线帮助文件放置目录,是我们学习JMeter的绝好向导。
  7. LICENSE:License说明文件。
  8. NOTICE:版权声明。
  9. README:JMeter简明介绍。

Jmeter安装使用

  • 1、本机配置好Java环境变量
  • 2、官网下载压缩包,在任意目录下解压
  • 3、进入到Jmeter的bin目录下,双击jmeter.bat启动

 

总结

Jmeter运行逻辑如下三部分:

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

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

第三:收集结果,利用断言来验证测试结果,利用监听器来收集显示测试结果。

同时,Jmeter也支持远程运行,弥补单台机器负载不够的情况,远程运行时远程负载机需要运行Agent.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值