Jmeter基础(工具认识)(二)

三、元件作用域和执行顺序

jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同。

jmeter的testplan通过图形化的方式表达脚本,域代码方式的脚本不同,图形方式表达的脚本中无法使用变量和函数等描述元件的作用域,因此jmeter主要依靠test plan中元件的相对位置、

父子关系以及元件本身的类型来决定test plan中各元件的执行顺序;某个原件在test plan中的位置不同,可能导致该元件的行为有很大的差异。(新版jmeter都可以自主选择语言,对号入座即可)

 

1、元件的作用域

jmeter中共有8类可被执行的元件(testplan和thread group不属于元件),其中,sampler(取样器)是不与其他元件发生交互的作用的元件,Logic Controller

(逻辑控制器)只对其子节点的sampler有效,而其他元件需要与sampler等元件交互。

Config Elements(配置元件):影响其范围内的所有元件

Pre-porcessors(前置处理器):在其作用范围内的每一个sampler元件之前执行

Timer(定时器):对其作用范围内的每一个sampler有效

Post-porcessors(后置处理器):在其作用范围内的每一个sampler元件之后执行

扫描二维码关注公众号,回复: 1443550 查看本文章

Assirtions(断言):对其作用范围内的每一个sampler元件执行后的结果执行校验

Listener(监听器):收集其作用范围内的每一个sampler元件的信息并且呈现出来

在jmeter中,元件的作用域是靠test plan的树形结构中元件的父子关系来确定的,其原则如下:

1)sampler不与其他元件相互作用,因此不存在作用域问题

2)Logic Controller只对其子节点中的sampler和Logic Controller作用

3) 除sampler和Logic Controller外的其他元件,如果是某个sampler的子节点,则该元件仅对其父节点作用

4) 除sampler和Logic Controller外的其他元件,如果其父节点不是sampler,则其作用域是该元件父节点下的其他所有后带节点(包括子节点,子节点的子节点等)

子节点。

JMete执行顺序逻辑如下。

(1)配置元件(如果存在)。

(2) 前置处理器(如果存在)。

(3) 定时器(如果存在)。

(4) 取样器(如果存在)。

(5) 后置处理器(如果存在且取样器的的结果不为空)。

(6) 断言(如果存在且取样器的结果不为空)。

(7) 监听器(如果存在且取样器的结果不为空)。

注意:Pre-porcessors、Post-porcessors和Assirtions等元件仅对Sampler作用,如在它们作用域内没有任何Sampler,则不会被执行,如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在test plan中的上下顺序依次执行。

四、Jmeter相关元件详解

Jmeter的元件较多,熟悉常用的元件,其他的了解,需要使用时详细了解,使用思维导图进行的编辑,当做辅助工具查看。

五、Jmeter运行及优化

在使用Jmeter进行性能测试时,工具本身也会占用资源影响性能,首先是图像化运行时耗用的资源多于非UI的资源占用,另外JMeter工具基于Java的,在jvm方面也可以优化,同时当一些测试场景时需要虚拟大量用户时,单个机器性能无法满足,就需要分布式的控制多个远程节点的Jmeter方式进行测试。

其他Jmeter性能的优化参考:https://blog.csdn.net/loadrunn/article/details/51315702

使用非UI方式运行

执行

使用UI模式进行压力测试时,Jmeter本身会占用很多资源,影响测试,使用非UI的命令行方式运行测试脚本时大大缩减了所需要资源(一下举例都是在windows环境下,linux相同原理)

在命令行第一次执行

在命令行窗口,进入到Jmeter的bin目录下,在该目录下输入命令

Jmeter –n –t d:\a2_JMeter项目\jiekkouScript.jmx –l listener.jtl

执行成功返回结果信息如下图

以上命名就是执行jiekouScript.jmx测试脚本,执行结果保存到listener.jtl

文件中

查看Jmeter命令,在该路径下直接输入Jmeter –h,查看帮助,查看常使用的方法,我们刚输入的命令格式就在下面展示

在命令后经常带有参数,查看参数的用法可以直接使用jmeter -? 查看参数的具体使用,结合上面的常用语法使用就会明白,下面贴出常用参数的简单解释:

命令参数

命令释义

-n

设置命令行格式

-t

指定JMX脚本路径,参数为JMX的脚本路径,若非在同目录需要全路径或者相对路径

-l

指定结果文件路径(jtl或者cvs),参数为文件路径,不存在时会自动创建

-j

指定执行日志路径

参数为日志路径,路径不存在不会自动创建,同时将日志输出到控制台

-r

设置分布式(远程)执行,服务器列表由 Jmeter_home\jmeter.properties中的remote_hosts指定

-R

指定远程服务器(分布式)列表,参数为服务器列表,配置形同remote_hosts指定,会覆盖

-g

指定测试结果生成报表路径,只能是报表,参数为cvs文件

-e

设置测试完成后生成报表

-o

指定测试报表生成文件夹,文件夹必须为空或者不存在

-H

代理服务器域名称或者IP

-P

指定代理服务器端口 参数为服务器的端口

-L

定义日志级别,参照log4j

-s

以服务器方式运行,就是我们所说的远程方式,启动节点的Agent

-X

停止远程执行

查看结果

执行结束后,在命令行窗口显示一个结果概要,如下图

 

解析:

summary为请求数目,指在多少时间内增加了多少请求数目,由此算出后面的每秒到达的请求数24.9/s也就是每秒完成请求数(吞吐量),以及平均数、最大数、最小数等信息,Err显示请求报错数,该测试结果过只能提供参考信息,当然还要关注CPU、IO、事务响应时间、点击率、错误率等信息进行具体分析,如果在命令窗口不直观,依然可以在Jmeter图形界面打开测试结果

聚合报告->所有数据写入一个文件->选择声场的jtl文件地址,就可在GUI页面展示测试结果。

Jmeter的性能参数配置

在Jmeter.bat文件中,设置

-Xms:设置初始堆大小

-Xmx:设置最大堆大小

-Xmn:设置年清代大小

Xmn一般是Xmx的1/2

Xms和Xmx一样大

Jmeter远程控制

环境搭建和配置

在远程服务器安装Jmeter,要确保Jmeter版本和Jdk版本要一致,避免不必要的麻烦;

启动远程的Jmeter服务,启动完成后会显示端口和IP,避免端口冲突,可重新修改端口;修改端口在关闭Jmeter服务情况下修改,jmeter.properties,修改如下两项配置,即可自定义端口号:

server_port=1029

server.rmi.localport=1029

就可以修改端口;

在管理机上,配置jmeter.properties下的remote_hosts,多个远程中间用逗号分隔;

脚本在本地管理机上就可以,但是如果有依赖cvs文件,需要把cvs拷贝到远程机器上的对应路径下;

远程机器上的jmeter都启动,然后执行

参考博客:

https://www.cnblogs.com/suntingme/p/5995721.html

执行

执行通在单个的非UI环境下执行相同

 

需要补充知识:

Beanshell脚本

抓包工具使用

Http请求

请求的转发和重定向辨别

正则表达式

猜你喜欢

转载自blog.csdn.net/qq_24126893/article/details/80108981