Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...

打印 上一主题 下一主题

主题 792|帖子 792|积分 2376

​​
jmeter性能测试

1. Jmeter简介

Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要把握的工具之一。
本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试效果。
运行环境为Windows 10系统,JDK版本为1.8,JMeter版本为5.1。
2.Jmeter安装

  2.1、需要安装JDK
    JDK—java开发工具包
    JRE—java运行环境
    JVM—java假造机
  2.2、验证呆板是否安装好java环境
         java -version—检察版本号
         java 验证系统的环境变量path是否设置ok
  2.3、设置环境变量—目标:任意路径可以识别jmeter
    JMETER_HOME:D:\JMeter\apache-jmeter-5.1.1
    PATH:%JMETER_HOME%\bin
  2.3、杂项
    每一台呆板是否能创建多少个用户数—内存(物理内存)16G
    Jmeter—一个java历程—历程需要一定内存资源-堆内存
    jmeter-server—分布式启动时使用
    jmeter.bat—单台呆板启动
    jmeter永久中文设置—打开bin目录下jmeter.properties文件在37行左右修改为language=zh_CN

3.性能指标简介

  3.1性能指标四个字总结:多、快、好、省。
    多:对应的就是并发量
    快:延时、相应时间
    好:稳固性(长时间运行)
    省:资源使用率
  3.2、性能指标的描述:
    3.2.1、相应时间:对请求作出相应所需要的时间,是用户感知软件性能的主要指标(端到端的)
      相应时间包罗:
          1.用户客户端呈现时间
          2.请求\相应数据网络传输时间
          3.应用服务器处置惩罚时间
          4.数据库系统处置惩罚时间
     思考:相应时间多少公道?答:2、5、8秒原则
    3.2.2、并发用户数
      并发用户数的概念:系统用户数、在线用户数、并发用户数
      系统用户数:软件系统注册是用户总数
      在线用户数:(1)某段时间内访问的用户数,这些用户只是在线,(2)不一定同时做某一件事情
      并发:用于从业务的角度模仿真实用户访问同时访问
      并发数:同时访问系统的用户数
      在c/s大概b/s布局的应用,系统的性能主要有服务器觉得,服务器在大量用户同时访问时压力最大
      并发分为:
             严酷并发:秒杀
             广义并发:不同用户做不同的事情
      计算:
             均匀并发用户数的计算:c=nL/t
             c-是均匀的并发用户数
             n-是均匀每天访问用户数
             l-是一天内用户从登陆到退出的均匀时间
             t-是考察时间长度(一天内多长时间有用户使用系统
        并发用户数峰值计算:C^约等于C+3*根号C
    3.2.3.吞吐量
         性能测试:指单元时间内系统处置惩罚用户的请求数
         从业务角度看:吞吐量可以用:请求数/秒、页面数/秒、人数/天或处置惩罚业务数/小时等单元来权衡用户请求数/秒或页面数/秒来权衡
    从网络角度看:吞吐量可以用:字节/秒来权衡
    对于交互式应用来说,吞吐量指标反映的是服务器承受的压力他可以大概阐明系统的负载本领
    TPS:每秒事物数
    计算:当没有碰到性能瓶颈的时间吞吐量与假造用户数之间存在一定的联系,可以采用以下公式计算:
      F=VU*R/T=100*1/5=20
      此中F为吞吐量,VU表示假造用户个数,R表示每个假造用户发出的请求数,T表示每个假造用户 发出的请求数,T表示性能测试所用的时间
      没有经过初始化的性能环境等于没有作用的环境
    3.2.4.性能计数器
      性能计数器:是描述服务器或操作系统性能的一些数据指标
      比如:内存,CPU、磁盘等资源使用率等
    3.2.5.思考时间
    Think time:从业务角度来看,这个时间指用户进行操作时每个请求之间的时间隔断
    在做性能测试时,为了模仿这样的时间隔断,引入了思考时间这个概念,来更加真实的模仿用户的操作
    网络环境是影响性能指标的紧张因素之一;解决方法:连续运维:对linux系统注入网络延时的方法(比如数据库服务器在美国,应用服务器在加拿大和你直接2台服务器通过网线直连有很大区别)
  紧张:
    没有经过初始化的性能环境等于没有作用的环境
    网络环境是影响性能指标的紧张因素之一;解决方法:连续运维:对linux系统注入网络延时的方法(比如数据库服务器在美国,应用服务器在加拿大和你直接2台服务器通过网线直连有很大区别)
    数据库:数据库dump,假如数据敏感不能做导出,可以确认数据库表的数据格式,创造测试数据
4.什么是jmeter脚本

  4.1.概念:
         通俗:用户操作被测软件系统某场景的动作流程
         Jmeter:用户操作被测软件系统某场景的请求
         性能测试:紧张场景从1到N的变化
  4.2.怎么快速开发漂亮的脚本
         准确:最根本的要求,脚本能可以正常运行
         快速:借助技术手动快速高效完成脚本开发
         漂亮:脚本逻辑、维护性高
  4.3.开发脚本方案
         方案一:代理“剑”
         剑语:jmetery也有自己的dialing,录制脚本前,我们只要启动好代理,手动通过浏览器来录制,录制完毕停止代理
         1.提示:
                直接生存jmx文件
                需要人为调整脚本
                录制https需要设置
    2.Jmeter自带脚本录制工具
      测试计划-》新建线程组-》右击测试计划-》非测试媛姐-》HTTP代理服务器
           1.jmeter设置端口
           2.jmeter设置目标控制器选择测试计划>线程组
           3.打开浏览器,导入jmeter证书,证书在Jmeter的bin目录下ApacheJMeterTemporaryRootCA.crt
           4.设置浏览器代理,代理地址就是本机127.0.0.1,端标语就是HTTP代理服务器设置的端标语
           5.可点击HTTP代理服务器-》Requests Filtering设置排除没用的请求
           6.点击启动即可
  

       方案二:badboy录制(不怎么用了)
  方案三:Fiddler(可导出jmx文件) 
5.Jmeter主要元件

  JMeter的主要元件有测试计划、线程组、取样器、逻辑控制器、配置元件、前置处置惩罚器、后置处置惩罚器、监听器、定时器、断言
  此中共有8类可被执行的元件, test plan(测试计划)和 thread group(线程组)不属于可被执行的元件,而 sampler(取样器)是不与其他元件发生交互的作用的元件。
  5.1测试计划(Test Plan)  

    用来描述一个性能/接口测试脚本和场景设计,包含与本次测试所有干系的功能。也就是说,使用Jmeter进行测试的所有内容,都是与基于一个测试计划中在换个说法,一个测试计划就对应一个Jmeter测试脚本
    在Jmeter-Gui中,只能编辑一个测试计划,假如需要新创建一个测试计划,就要开启一个新的Jmeter-Gui窗口界面。
  5.2线程组Threads(Users))

    线程组元件是任何一个测试流程的起始点,在一个测试计划中的所有 元件都必须在某个线程组下。
    JMeter自带的线程组,如下图所示:


    (1)、setup thread group(setup线程组)
      一种特别范例的ThreadGroup的,可用于执行预测试操作。这些线程的举动完全像一个正常的线程组元件。不同的是,这些范例的线程执行测试前进行定期线程组的执行;雷同LoadRunner的init,测试开始时进行初始化的工作。
    (2)、teardown thread group(tearDown线程组)
      一种特别范例的ThreadGroup的,可用于执行测试后动作。这些线程的举动完全像一个正常的线程组元件。不同的是,这些范例的线程执行测试竣事后执行定期的线程组;雷同LoadRunnner的end,测试竣事时进行回收工作。
    (3)、thread group(线程组)
    这个就是我们通常添加运行的线程。通俗的讲一个线程组,可以看做一个假造用户组,线程组中的每个线程都可以理解为一个假造用户。
    固然三个线程组名字不一样,但是创建之后,页面都是一样的
    线程组概括阐明:
    1. 线程组是一个测试流程的起始点。
    2. 线程组中可以有多个线程。线程组也可以看作是一个假造用户组, 线程组中的每一个线程都可以理解为相当于一个“假造用户”。
    3. 线程组中一个取样器代表一个请求,一个请求等同于一个线程。
    4. 每个线程都会独立的运行测试计划,互不干扰,多个线程用于模仿 对服务器的并发访问。
    5. 线程组元件可以设置线程数、设置执行测试的次数等操作。






  【线程数】:假造用户数,控制多少用户并发
  【Ramp-Up时间】:启动所有线程需要的时间;
    1. 若是线程数过多,则会>该值启动完所有线程。
    2. 为0代表立即启动所有线程;一般不这么设置,因为在测试的开始就建立全部线程并立即发送访问请求,会引起不正常的初始访问峰值。
    3. 设置为T,N个线程时,JMeter将每隔T/N秒建立一个线程。T过大会降低访问峰值的负载:后面的线程还没启动,前面启动的部分线程已经竣事了。
    4. 网上提到设置公道的启动时间的方法:让初始吞吐量靠近均匀吞吐量,制止启动时间过小,同时最后一个线程启动时,第一个线程还未竣事,制止启动时间过大。
  【循环】:每个线程的循环次数。用来延伸单个线程的运行时间,从而保证当最后一个线程启动时,所有线程都在运行中,达到压测效果。
    1.若不勾选永久,设置为固定值。为达到最后一个线程启动时第一个线程还未竣事,循环次数的计算方法为:
    (1)假设线程数:5,ramp-up:10s,rt:0.2s
    (2)最后一个线程启动开始时间 S = 10 - 10/5 = 8s
    (3)第一个线程运行时间应该 > 8s
    (4)循环次数 a > 8/0.2 = 40,即循环次数最少为40次,此时整个测试理论运行时间 = 40*0.2 + 8 = 16s
  【耽误创建线程直到需要】:
    JMeter 所有的线程是一开始就创建完成的,只是递增的时间会按照上面的规则递增;
    假如选择了这个选项,则不会在一开始创建所有线程,只有在需要时才会创建。这样CPU 斲丧会更均匀,但是这时会有另一个隐患:稍微影响正在跑的线程;
    假如不选择,在启动场景时,JMeter 会用更多的 CPU 来创建线程,它会影响前面的一些请求的相应时间,因为压力机的 CPU 在做其他事情。
  举例:



      • 设置 线程数:100,Ramp-Up:1s, 循环:2。
        表示1秒内启动100线程并循环2次。
      • 设置 线程数:3,Ramp-Up:1s, 循环:永久,连续时间:5s。
        1s内启动3个线程,连续循环5s。


  【调度器】:
    连续时间(秒):测试计划连续多长时间,会覆盖竣事时间。
    启动耽误(秒):测试计划耽误多长时间启动,会覆盖启动时间。

  5.3取样器(sampler)



    • 取样器是用来模仿用户操作的,向服务器发送请求以及接收服务器的 相应数据。
    • 取样器是线程组内部的元件,也就是说取样器只能在线程组中添加。
    • 取样器(Sampler)是性能测试中向服务器发送请求,记录相应信息,记 录相应时间的最小单元。(取样器通常要进行这三个工作)
    • 取样器是按照测试计划树的顺序从上到下执行的。且取样器配合控制 器使用,可以修改取样器的执行顺序和次数。





 


   紧张:调试取样器,它是我们在开发脚本的时间调试用的。添加调试取样器后在察看效果树中能看到我们在脚本中所有参数化变量所取的值,这样有利于我们排错



 


   5.4逻辑控制器(Logic Controller)



    • 我们有编程底子的人都知道,提到逻辑主要就是条件和循环。
    • JMeter官网对逻辑控制器的表明是:Logic Controllers determine the order in which Samplers are processed.
    • 意思是说,逻辑控制器可以控制取样器(samplers)的执行顺序。
    • 由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

    jmeter提供了17种逻辑控制器,它们各个功能都不尽相同,大概可以分为2种使用范例
      1.控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller(循环控制器)、If Controller(假如if控制器)等;
      2.对测试计划中的脚本进行分组,方便JMeter统计执行效果以及进行脚本的运行时控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事务控制器)等
    5.4.1、循环控制器(loop Controller)--控制器下放http请求
      指定其子节点运行的次数,可以使用具体的数值,也可是设置为变量(截图描述更具体)
 

    5.4.2、简朴控制器(Simple Controller)
      简朴控制器是最根本的控制器,对jmeter测试运行没有任何影响,可用来定名某些操作
      这是Jmeter里最简朴的一个控制器,它可以让我们构造归整我们的采样器和其它逻辑控制器(即:分组功能),提供一个块的布局和控制,不具有任何的逻辑控制和运行时的功能;
 

    5.4.3、遍历循环控制器(ForEach Controller)
      输入变量前缀:在此中输入需要遍历的用户参数(User Parameter)
      Start index for loop(exclusive):循环指数开始(唯一)→ 遍历查询的变量范围,开始的值(这里假如不填写,默认从1开始,假如没有1开始的变量,执行时会报错)
      End index for loop(inclusive):循环指数竣事(包含)→ 遍历查询的变量范围,竣事的值
      输出变量名称:将遍历查询到的符合条件的用户参数赋值给输入变量(Vname),然后就可以在控制器下的取样器使用,格式为${输出变量名}
      Add”_”before number:输入变量名称中是否使用“_”进行隔断
      PS:这个控制器一般配合配置元件→ 正则表达式提取器来一起使用,可对页面上的某些元素进行重复处置惩罚
 

    5.4.4、包含控制器(Include Controller)
      作用:用于引用外部的Jmx文件;从而控制多个测试计划组合
 

    五、临界区控制器(critical section Controller)
    作用:临界区控制器确保其子节点下的取样器或控制器将被执行(只有一个线程作为一个锁)
 




    六、生命周期/运行周期控制器(Runtime Controller)
    作用:用于控制该控制器下的取样器/控制器的运行时间
 




    七、仅一次控制器(once only controller)
    作用:在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,登录场景经常会使用到这个控制器。
    注意:将Once Only Controller作为Loop Controller的子节点,Once Only Controller在每次循环的第一次迭代时均会被执行
 




    八、转换控制器(Switch Controller)
    作用:Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:
·     第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。
    · 第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。
    当Value为空时,默认执行第1个子节点元素
 




    九、当/判定控制器(While Controller)
    作用:运行其子节点下的取样器/控制器,直到条件为“假”
 




    十、事务控制器(transaction controller)
    作用:天生一个额外的采样器来测量其下测试元素的总体时间;值得注意的是,这个时间包含该控制器范围内的所有处置惩罚时间,而不但仅是采样器的
 



    十一、IF控制器(If Controller)
    条件(默认JavaScript)(Condition(default javascript)):使用JavaScript的函数或变量进行评估判定条件为真或假
    条件表明为变量表达式(interpret condition as variable expression):假如勾选该项,那么变量表达式会进行求值,并与“ture”或“false”进行比较,而无需使用JavaScript
    对所有子条件执行(evaluate for all children):假如勾选该项,则该controller在没一个子节点执行时执行一次;
    默认环境下,该控制器可以对包含在其下面的所有可运行的元素进行执行,但只在入口执行一次
 




    十二、吞吐量控制器(Throughput Controller)
    作用:控制其下的子节点的执行次数与负载比例分配,别被名字迷惑了,跟吞吐量没任何关系。jmeter自带的翻译这里是错误的,因为它并不能控制吞吐量(吞吐量的概念请访问百度);其实质作用是允许用户控制执行的频率;也有两种方式:
    百分比执行和总执行
    总执行(Total Executions):使控制器停止执行一定数目标测试计划
    百分比执行(Percent Executions):使控制器按一定比例执行迭代的测试计划
    流量(Throughput):对应上面的执行数目大概比例
    每个用户(Per User):每个用户
    假如勾选此项,将导致控制器计算是否应该执行在每个用户(每个线程)的底子上;假如不加以控制,那么将计算环球所有用户
 



    十三、Interleave Controller 瓜代控制器
    使用方法:倘使该控制器下有2个取样器A和B,瓜代执行A和B2个请求,即每次通报一个子请求到这个测试,按子元件的排列顺序
 



    十四、随机控制器(Random Controller)
    作用:雷同瓜代控制器,但该控制器随机选取某一个取样器请求并执行
 



    十五、随机顺序控制器(Random Order Controller)
    作用:随机执行其下的所有子结点
    与Random Controller不同的是,这个控制器会先将需要随机的内容均执行一遍,但序次不定
 



    十六、录制控制器(Recording Controller)
    作用:雷同代理服务器的作用,在测试执行期间记录测试样本
 



    十七、模块控制器(Module Controller)
    作用:测试控制器子节点下的某一个模块,而不是整个测试计划
·    模块控制器,用于跳转到选定的控制器位置并执行对应的控制器
·     应用场景: 业务逻辑的跳转
    配制阐明
·    Module to Run: 选择需要跳转到的目标控制器








   5.5、定时器(Timer)

  用户实际操作时,并非是连续点击,而是存在许多停顿的环境,例 如:用户需要时间阅读笔墨内容、填表、大概查找需要点击的链接 等。为了模仿用户实际环境,在性能测试中我们需要考虑操作时间。 若不认真考虑操作时间很大概会导致测试效果的失真。比方,估计的 可支持用户数大概会偏小。
  在性能测试中,访问请求之间的停顿时间被称之为思考时间。 那么怎样模仿这种停顿呢?我们可以借助JMeter的定时器元件实现。
  Jmeter中的定时器一般被我们用来设置耽误与同步(操作之间的等候时间)。定时器的执行优先级高于Sampler(取样器),在同一作用域(比方控制器下)下有多个定时器存在时,每一个定时器都会执行,假如想让某一个定时器进队某一Sampler有用,则可以把定时器加在此Saopler节点下。
  Jmeter自带的定时器,如下图所示:




  Constant Timer 固定定时器



   作用:通过ThreadDelay设定每个线程请求之前的等候时间(单元为毫秒)。注意:固定定时是有作用域的,放到线程组下其作用域是所有请求都会耽误固定器设置的时间,假如放到请求内,作用域是单个请求耽误时间(常用)。
Uniform Random Timer 匀称随机定时器
  


    作用:它产生的耽误时间是个随机值,而各随机值出现的概率均等。总的耽误时间等于一个随机耽误时间加上一个固定耽误时间,用户可以设置随机耽误时间和固定耽误时间。
    总耽误时间=指定范围内的随机时间+固定耽误时间。
Constant Throughput Timer 固定吞吐量定时器

Gaussian Random Timer 高斯随机定时器

JSR223 Timer JSR223定时器
Poisson Random Timer 泊松随机定时器
Synchronizing Timer 同步定时器
  
作用:用来设置聚集点,其作用是:阻塞线程,直到指定的线程数目到达后,再一起开释,可以瞬间产生很大的压力
  (1)Number of Simulated Users to Group by:模仿用户的数目,即指定同时开释的线程数数目,若设置为0,等于设置为线程组中的线程数目;
  (2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时开释指定的线程数;假如设置为0,该定时器将会等候线程数达到了设置的线程数才开释,若没有达到设置的线程数会不绝死等。假如大于0,那么假如凌驾Timeout inmilliseconds中设置的最大等候时间后还没达到设置的线程数,Timer将不再等候,开释已到达的线程。默以为0
  同步定时器(Synchronizing Timer)的超时时间设置要求:超时时间 > 请求聚集数目 * 1000 / (线程数 / 线程加载时间)
BeanShell Timer BeanShell脚本编写定时器
  参数阐明:
  Reset Interpreter:每次迭代是否重置解析器,默以为false;在长时间运行的脚本中建议设置为true。
  Parameters:BeanShell脚本的入参。入参可以是单个变量;也可以是数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。
  File Name:BeanShell脚本可以从脚本文件中读取。
  Script:在Script区直接写BeanShell脚本。
  增加一个Java Request请求,而且增加时间验证是否按照自己设定的定时运行脚本:
  Java Request ${__time(yyyy-MM-dd HH:mm:ss:SSS,)}
  增加效果检察树:效果显示按之前设置的每个1秒钟运行
Precise Throughput Timer 精准吞吐量定时器
  5.6前置处置惩罚器

  前置处置惩罚器是在取样器发出请求之前执行一些操作。即:假如将逼迫处置惩罚器附加到取样器原件,则他将在该取样器原件运行之前执行
  前置处置惩罚器蛀牙是用来处置惩罚,请求在实际发送之前的一些准备工作,比如取样器参数设置,环境变量设置,脚本预处置惩罚等操作
  比方当URL中有sessionID一类的session信息时,可以通过该处置惩罚器填充发出请求实际的sessionID
Jmeter自带的前置处置惩罚器,如下图所示



   5.6.1 HTML Link Parser(HTML链接解析器)
  HTML链接解析器,用于从前一个sampler返回的html页面中按照规则解析链接和表单,再根据此处置惩罚器所在的sampler中的规则进行匹配修改,而后该sampler会执行;
  
此处置惩罚器无配置,使用示比方下:
如下示例中执行阐明为:
1. 发送sampler“搜索”并返回HTML页面;
2. sampler“点击链接”中下的HTML链接解析器会将步骤1中返回的HTML页面根据“点击链接”这个sampler设置的规则进行解析并将解析效果发送给sampler“点击链接”;
3. sampler“点击搜索”发送;


 


 


   
  HTTP URL Re-writing Modifier(HTTP URL重写修改器)
  HTTP URL重写修改器,此处置惩罚器与HTTP Link Parser雷同,但专用于使用url重写来存储sessionId而非cookie的http request,在线程组级别添加此修改器则应用于所有sample,若为单个sample添加则只适用该sample;
  


   
  参数配置:
  Session Argument Name:会话参数名称,用于搜索sessionId,其他sample也可通过此参数来 调用其获取的sessionId;
  Path Extension:路径扩展,如url添加了分号作为分割,则勾选此项;
  Do not use equals in path extension:用于url不用等号来分割key和value的范例;
  Do not use questionmark in path extension:用于不带?的范例;
  Cache Session Id?:勾选此项则会存储在其挂载的sample上获取到的sessionId供后边的其他sample使用;
  URL Encode:是否使用url编码;
  
  User Parameters(用户参数)

  用户参数,用于做几组参数给线程组的各个线程使用,假如线程数多于用户参数组数,则多出来的线程则从第一组用户参数开始依次调用参数组;



   参数配置:
  Name:此前置处置惩罚器的名称;
  Update Once Per Iteration:标识是否每轮迭代更新一次元素;
  
  JDBC PreProcessor(数据库预处置惩罚器)

  数据库预处置惩罚器,用于在sample开始前查询数据库并获取一些值;




  参数配置:
  Variable Name of Pool declared in JDBC Connection Configuration:连接池名称,需与JDBC链接配置中的Variable Name相同(此预处置惩罚器需要一个JDBC Connection Configuration,此配置器在配置元件中);
  Query Type:数据库查询范例,根据需要自行选择;
  Query:数据库语句输入框,根据需要输入,注意结尾不要加”;”;
  Parameter values:参数名称,假如Query的语句中有”?”则此处填值,可以使用调用参数方式;
  Parameter types:参数范例,与Parameter values对应,设置参数范例,与sql字段范例相同;
  Variable names:设定此项可以获取固定列的所有值;
  Result variable name:随意设定一个名称,则此名称会被作为一个参数并对应Query出来的内容;可以使用参数调用的方法来获取此设置的名称对应的值;
  Query timeout(s):超时时间;
  Handle ResultSet:有四个选项,效果生存的方式;
  RegEx User Parameters(紧张)

  正则表达式,使用正则表达式为从另一个HTTP请求中提取的HTTP参数指定动态值




  参数配置:
  name:此前置处置惩罚器名称;
  Regular Expression Reference Name:调用的正则表达式提取器中的引用名称;
  Parameter names regexp group number:用于提取参数名称的正则表达式的组编号;
  Parameter values regex group number:用于提取参数值的正则表达式的组编号;
 
  Sample Timeout

  超时器,用于设定sample的超时时间,假如完成时间过长,此预处置惩罚器会调度计时器任务以中断样本;



   参数配置:
  name:超时器名称;
  Sample timeout:超时时间;
  JSR223 PreProcessor

  JSR223预处置惩罚器,用于调用脚本;




  参数配置:
  Name:名称,随意设定;
  Language:使用的JSR223语言,可根据需要选择;
  Parameters:通报给脚本的参数;
  Script file:脚本文件;
  Script compilation caching:存储编译的脚本,默认勾选;
  Script:要运行的脚本;
  脚本中可用参数阐明:
  vars:操作Jmeter变量
    a) vars.get(“name”):从jmeter中获得变量值
    b) vars.put(“key”,”value”):生存数据到jmeter变量中,假如变量不存在会自动创建
  props: 操作Jmeter属性
    a) props.get(“START.HMS”);  注:START.HMS为属性名
    b) props.put(“PROP1”,”1234”); 生存数据到Jmeter属性中,假如属性不存在会自动创建
  log: 记录日志
  比如log.info(“日志信息”); 具体检察: https://www.slf4j.org/api/org/slf4j/Logger.html
  ctx: 操作上下文,具体检察:
  http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html
  prev: 操作前一个请求。注意必须有前一个请求才可用,否则会报错,具体检察:
  http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html
  sampler: 操作当前请求。具体检察:
  http://jmeter.apache.org/api/org/apache/jmeter/samplers/Sampler.html
  BeanShell PreProcessor

  BeanShell预处置惩罚器,语法使用与BeanShell Sampler是一样的。但可使用的内置变量稍有不同;




  参数配置:
  Reset bsh interpreter beford each call:是否重新构造interpreter,即是否重新初始化
  Paraneters:BeanShell 脚本中的变量初始化时可以在这里指定值,这里接受变量与字符串数组,假如是字符串数组两个元素之间用空格隔开
  ScriptFile——File Name:指定运行的BeanShell脚本
  Script:编写BeanShell脚本,通过BeanShell可以访问ctx、vars、props、prev、sample、log。此中通过ctx可以访问Jmeter运行时状态,比如线程数和线程状态;通过vars访问界说的变量;通过props访问运行时设置;通过prev访问前一个取样器效果;通过sample访问当前取样器;通过log写日志
  5.7配置元件(Config Element)

  jmeter的配置元件(config element)用于提供对静态数据的配置支持,可以为取样器设置默认值和变量。配置元件有许多的功能,读取文件数据,设置公共请求参数,赋予变量值等,以便后续取样器使用(雷同于项目中配置文件的作用,如数据、地址、数据库链接等进行配置)
比方:性能测试中为了模仿打了用户操作我们往往需要做参数化,jmeter的参数化可以通过配置元件来完成,理由csv Data Set Config(CSV数据文件设置)可以将当地数据文件形成数据池(Data Pool),它可以帮助我们从文件中读取测试数据
别的jmeter也提供了众多的函数来帮我们生产动态数据,(通过函数助手可以检察到)
  底子须知:Jmeter各个元件的执行顺序为:配置元件->前置处置惩罚器->定时器->取样器->后置处置惩罚器->断言器->监听器。配置元件在Jmeter执行过程中,在相同作用域下肯定会被开始执行,使用过程中要严酷遵守作用域题目。
  5.7.1:信息头管理器
    信息头管理器用来传输取样器信息头。使用规则:特别需要注意使用的作用域题目,分为3种。
  1、假如整个测试计划下的所有取样器请求都同等,则在测试计划下添加,这样能做到整个测试计划下共享信息头。
  2、假如在同一线程组下,所有取样器的请求头都用到了相同的某个值如:token等,那就在线程组下添加信息头管理器,这样同一线程组下的所有取样器都能传入相同的请求头了。
  3、假如每个取样器的请求头不太同等,则在具体的取样器下添加。
  通过下图进行下简朴理解:



     注意点:
    (1)假如存在多个信息头管理器,则引用的信息头会进行叠加。如下例子:
    【测试计划下添加的信息头】填入信息:token:12345678
    【线程组1下添加的信息头】填入信息:Content-Type:application/json
    则HTTP请求1-1会叠加这两个值,如图:



 


    执行效果:



   (2)假如存在多个信息头管理器,而且信息头管理器有变量名称重复了,只是作用域不一样,则会引用作用域小的变量,如下例子:
  【测试计划下添加的信息头】填入信息:token:12345678
  【线程组1下添加的信息头】填入一个与上相同的变量信息:token:abcdefg
  则实际执行的时间,会引用作用域小的token,如图:



 


     执行效果:



   (3)假如存在多个信息头管理器,而且信息头管理器有变量名称重复了,作用域也一样,则会引用第一个信息头管理器的变量,如下例子:
  【测试计划下添加的信息头1】填入信息:token:12345678
  【测试计划下添加的信息头2】填入信息:token:abcdefgh
  则实际执行的时间,得看哪个信息头管理器放在前面就引用哪个信息头的变量,该处是将【测试计划下添加的信息头1】放在前面,所以是引用到了token:12345678。如下图:
 


 


   执行效果:引用的是前面的信息头



   5.7.2、Cookie管理器
  对于有些请求需要Cookie的时间,可以考虑加上这个配置元件,通常会在登录接口返回Cookie存储到客户端当地,使用该元件可以解决Cookie验证题目。
  使用方式:直接添加即可,一般是添加到测试计划大概线程组下。



   5.7.3:请求默认值
  假如多个请求存在相同的部分,那么就可以将这些相同的部分抽取到【请求默认值】,在填写具体请求的时间,就可以省略请求默认值得信息不填,同样需要非常注意作用域题目。
  例子:新建一个【HTTP请求默认值】,填写发起百度请求的信息,那么在实际发起百度请求的时间,就可以忽略这部分信息了。



 


 执行效果如下:



   5.7.4:用户界说的变量
  主要用于进行参数化设计,但只适用于数据量比较少的参数化,大数目标参数化就不适用了,紧张的事情每次都需要夸大下:需要注意作用域的题目。
  使用方法:添加元件后,填写变量信息即可,填写完后,就可以在作用域范围下的元件进行引用,如下图:



 


     执行效果:



   5.7.5CSV设置文件
  用于进行批量参数化,有两种方式,第一种是Jmeter自带的CSV配置文件,第二种是插件管理器安装的Random CSV Data Set Config。
  1、Jmeter自带的CSV配置文件:该元件只能按照提供的数据源文件按顺序取值。下面进行元件页面各项值的介绍。



   (1)文件名:选择提供数据的文件,要选择.csv格式的文件
  (2)文件编码:选择对文件的编码格式,一般选utf-8
  (3)变量名称:给获取到的数据源数据取变量,要取多个数据,就要用英文下分号";"隔断
  (4)忽略首行:选择True就是忽略数据源的首行,选择False就是不忽略
  (5)其他选项:一般默认即可。
下面实际使用:
(1)准备CSV源文件:
  


   (2)填写CSV参数化元件信息:



   (3)引用参数化的值



   执行效果:



   注意事项:该CSV参数化元件只能按顺序取值,即:脚本一次执行下,只能在数据源文件从上往下取值,下面我给请求添加循环数看看现象。



   执行效果:



 

  有时间我们想要每次执行请求都能随机取数据源的某一条数据,那么这时间就需要用到第二种CSV参数化配置文件:Random CSV Data Set Config
  2、Random CSV Data Set Config:该元件Jmeter不会自带,需要我们手动安装。
  (1)打开插件管理器



   (2)安装Random CSV Data Set



   使用介绍



   Filename:选择数据源文件路径
  File encoding:选择编码格式,一般选择UTF-8
  Delimeter:分隔符,默认即可
  Variable names:给变量定名
  Fist line is CSV header:假如第一行是表头,则勾选下
  其他没介绍到的默认即可,不用关心
  下面进行实际使用
  (1)信息配置:



   (2)执行效果:



 

 5.8后置处置惩罚器(Post Processors)

用于对sampler发出请求后得到的服务器相应进行处置惩罚,一般用来提取相应中的特定数据(雷同LoadRunner中的关联)。
比方:我们在做接口测试的时间,难免会碰到一个接口的请求参数是另一个接口的相应效果,这个时间就需要用到后置处置惩罚器来处置惩罚我们的请求参数,如系统登录成功后我们要回去sessionid,在后面业务操作中服务器会验证这个sessionid,获取sessionid的这个过程,就是用后置处置惩罚器中的正则表达式提取器来完成的
后置处置惩罚器常用于处置惩罚相应数据,提取某个值
路径:线程组(用户)->添加->后置处置惩罚器();我们可以清楚地看到JMeter5中共有11个后置处置惩罚器

Jeter自带的后置处置惩罚器,如下图所示。




   
  5.8.1CSS/JQuery提取器

CSS/JQuery提取器,是通过css选择器定位页面元素并读取数据 。
1、我们先来看看这个 CSS/JQuery提取器 长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > CSS/JQuery提取器,如下图所示: 
     



   关键参数如下阐明:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空;
  Apply to:
  Main sample only 仅适用于主要样本
  Sub-samples only 仅适用于子样本
  Main sample and sub-samples 主要样本和子样本
  JMeter Variable Name to use 用作Jmeter变量名称
  Name of created variable:引用名称 也就是jmeter里面的变量
  CSS Selector expression:CSS选择器表达式 CSS表达式
  Attribute:属性 要提取的元素的属性。示例:<input type="checkbox" name="colors" value="blue" id="blue">蓝色<br>,那么这里的属性就是value,因为我们要提取blue
  Match No.(0 for Random):匹配数字 0随机一个,否则索引(从1开始)
  Default Value: 缺省值 在无法提取内容的环境下放入变量的值。

CSS选择器或JQuery选择器是Jmeter支持的两种语法,下面临其两种语法进行简朴介绍




   1、新建测试计划,线程组下添加访问 博客园主页的取样器,如下图所示:




 2、然后再添加CSS/JQuery提取器,如下图所示:




 此中CSS选择器表达式就按如下图的方法获取,如下图所示:




 3、接着再添加一个取样器 用来确认是否提取到我们要提取的东西,提取出来的值用来传参,如下图所示:




 4、配置好以后,点击“生存”,运行JMeter,检察表格效果(可以看到提取的路径就是我们要提取博客园的新闻路径),如下图所示:





实例2
1、新建测试计划,线程组下添加随机变量和访问 JMeter主页的取样器,如下图所示:
线程组





随机变量



 取样器



 然后再添加CSS/JQuery提取器,如下图所示:




 接着再添加一个取样器 用来确认是否提取到我们要提取的东西,提取出来的值用来传参,如下图所示:




 配置好以后,点击“生存”,运行JMeter,检察表格效果(可以看到提取的路径就是我们要提取博客园的新闻路径),如下图所示:




 5.8.2 json提取器

JSON 提取器可以使用JSON-PATH语法从JSON格式的相应中提取数据。
该后处置惩罚器与正则表达式提取器非常相似。必须将其放置为HTTP Sampler或具有JSON相应的任何其他取样器的子级,可以以非常简朴的方式提取JSON文本内容。
1、我们先来看看这个JSON提取器长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > JSON提取器,如下图所示:  




   关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空;
    Update Once Per Iteration:标识是否每轮迭代更新一次元素;
    Apply to(应用范围):
    Main sample and sub-samples:应用于主sample及子sample
    Main sample only:默认的是这个,应用于主sample
    Sub-samples only:应用于子sample
    JMeter Variable Name to use:应用于变量定名的内容
    Name of created Variable:生存的变量名,后面使用${Variable names}引用
    JSON Path Expression:json表达式
    Match No.(0 or Random):匹配的值是哪一个,默认不填写是获取符合条件的第一个,这个与正则表达式的雷同(0为随机、N为获取第N个、-1获取所有)
    Compute comcatemation var(suffix_ALL):假如发现许多效果,插件将使用“,”分隔符将它们连接起来,并将其存储在名为<variable name>_ALL的var中
    Default Values:当没有获取到参数值时的默认值
  JSON path expression 语法



 实例
新建测试计划,线程组下添加气候预报接口取样器,如下图所示:



 然后再在取样器下添加JSON提取器,如下图所示:



 紧接着再添加一个取样器 度娘,用来获取提取的status,提取出来的值用来传参,如下图所示:



 配置好以后,点击“生存”,运行JMeter,检察表格效果,如下图所示:




 度娘请求效果: 


 5.8.3JSR223 后置处置惩罚步伐

我们先来看看这个JSR223 后置处置惩罚步伐长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > JSR223 后置处置惩罚步伐,如下图所示:





  关键参数阐明如下:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空;
  parameter:要通报到脚本文件或脚本的参数列表;
  file name:用于执行的脚本文件,若没有脚本文件,将执行脚本;
  Script:通报给JSR223执行的脚本;假如提供了脚本文件,则执行脚本文件,否则执行脚本。

5.8.4调试后置处置惩罚步伐

调试后置处置惩罚步伐,使用正则表达式为从另一个HTTP请求中提取的HTTP参数指定动态值,配合regular expression extractor使用。暂时没找到好的例子,后面想到补充。。
1、我们先来看看这个调试后置处置惩罚步伐长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > 调试后置处置惩罚步伐,如下图所示: 
 

  2、关键参数阐明如下:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空;
  Regular Expression Reference Name:调用的正则表达式提取器中的引用名称;
  Parameter names regexp group number:用于提取参数名称的正则表达式的组编号;
  Parameter values regex group number:用于提取参数值的正则表达式的组编号。
 5.8.5JDBC 后置处置惩罚步伐

JDBC 后置处置惩罚步伐,实际上JIBC PostProcessor就是一个JDBC Request,它与JDBC Request功能相同,都可以执行SQL语句。在测试的过程中大概会碰到这样的测试场景:我们用JDBC Request修改了一些数据,当测试完成后,我们希望还原到原先状态,此时我们可以用JDBC PostProcessor来完成,当然用JDBC Request也可以完成。具体的JDBC PostProcessor的使用参考宏哥关于JDBC Request的这篇文章:Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)。
我们先来看看这个JDBC 后置处置惩罚步伐长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > JDBC 后置处置惩罚步伐,如下图所示:
 



 5.8.6效果状态处置惩罚器


效果状态处置惩罚器,实际上在测试的时间我们也经常会碰到这样的测试场景:在一些测试用例失败之后我们需要进行一些操作,比方停止测试,这里可以使用效果状态处置惩罚器。
1、我们先来看看这个效果状态处置惩罚器长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > 效果状态处置惩罚器,如下图所示:
 

  2、关键参数阐明如下:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空;
  Language:语言,开发脚本选择的语言,使用的JSR223语言,可根据需要选择;
  Parameters:参数,通报给脚本的参数;
  File Name:文件名,当地开发的脚本文件(会覆盖在JMeter里编写的脚本);
  Script compilation caching:存储编译的脚本,默认勾选;
  Script:要运行脚本。编写脚本的区域。
 5.8.7XPath提取器


 Xpath提取器,假如请求返回的消息为xml或html格式的,可以用XPath提取器来提取需要的数据。
 1、我们先来看看这个 Xpath提取器长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > Xpath提取器,如下图所示: 





2、关键参数阐明如下:
  APPly to:作用范围(返回内容的断言范围)
           Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
           Main sample only:仅作用于父节点的取样器
           Sub-samples only:仅作用于子节点的取样器
           JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
  XML Parsing Options:要解析的XML参数
           UseTidy:当需要处置惩罚的页面是HTML格式时,必须选中该选项;假如是XML或XHTML格式(比方RSS返回),则取消选中;
           Quiet表示只显示需要的HTML页面,
      Report errors表示显示相应报错,
      Show warnings表示显示警告;
           Use Namespaces:假如启用该选项,后续的XML解析器将使用定名空间来分辨;
           Validate XML:根据页面元素模式进行查抄解析;
           Ignore Whitespace:忽略空白内容;
           Fetch external DTDs:假如选中该项,外部将使用DTD规则来获取页面内容;
Return entire XPath fragment of  text content:返回文本内容的整个XPath片段;
Reference Name:存放提取出的值的参数。
XPath Query:用于提取值的XPath表达式。语法参考:XPath
匹配数字:取第几个匹配效果,0随机,-1全部,1代表第一个,2代表第二个,....以此类推
Default Value:参数的默认值。
实例:
1、新建测试计划,线程组下添加1个取样器 气候预报,如下图所示:
 



 2、气候预报返回HTML,然后再添加xpath提取器,如下图所示:
举例://div[@class='w_city city_guonei']//a/@href
选取div下带有class属性为w_city city_guonei的href属性节点。
注释://div选取了div节点的所有子节点
@选取属性
/@href 从根节点选取所有的href属性





Xpath提取器设置
 



 继续添加GetWeatherInfo取样器,获取xpath提取到的参数,如下图所示:


配置好以后,点击“生存”,运行JMeter,检察表格效果(取样器访问博客园首页和访问度娘隔断3s),如下图所示:
 



 



 5.8.8XPath2 Extractor

Xpath2提取器,固然JMeter官方文档说可以使用XPath2查询语言从布局化相应(XML或(X)HTML)中提取值,但目前测试只支持从XML相应中提取值;从HTML中提取会报错,这个可以通过检察效果树中选择XPath2 Tester来验证。
 1、我们先来看看这个 Xpath2提取器长得是啥样子,路径:线程组 > 添加 > 前置处置惩罚器 > Xpath2提取器,如下图所示: 


  2、关键参数阐明如下:
  APPly to:作用范围(返回内容的断言范围)
           Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
           Main sample only:仅作用于父节点的取样器
           Sub-samples only:仅作用于子节点的取样器
           JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
  Return entire XPath fragment of  text content:返回文本内容的整个XPath片段;
  Name of created variable:存放提取出的值的参数。
  XPath Query:用于提取值的XPath表达式。
  Match No 匹配数字:取第几个匹配效果,0随机,-1全部,1代表第一个,2代表第二个,....以此类推
Default Value:参数的默认值。
Namespaces aliases list:定名空间别名列表。就是这个功能,能让使用定名空间比使用旧的XPath提取器更方便。关于定名空间含义,可以看官方文档:XML 定名空间,但是写的不够具体,具体的参考这里:XML 定名空间(XML Namespaces)介绍以及节点读取方法。由于XPath2对于表达式的要求比较严酷,对于带定名空间的XML(包罗默认的定名空间),使用不带定名空间前缀的表达式是查询不到效果的。
5.8.9BeanShell 后置处置惩罚步伐

 BeanShell 后置处置惩罚步伐,假如请求返回的消息为xml或html格式的,可以用XPath2提取器来提取需要的数据。这个估计是JMeter5.0新加的吧,具体用法和Xpath提取器的应该差不多的,可以参考上边Xpath提取器的用法。

 1、我们先来看看这个  BeanShell 后置处置惩罚步伐长得是啥样子,路径:线程组 > 添加 > 后置处置惩罚器 > BeanShell 后置处置惩罚步伐,如下图所示: 
 




  2、关键参数阐明如下:
  Reset bsh.Interpreter before each call: 每次迭代是否重置表明器
  Reset Interpreter :false
  Parameters to be passed to BeanShell(=>String Parameters and String []bsh.args) 参数通报,字符串大概数组
  Parameters:
  Script file(overrides script): 脚本文件
  File Name:
  Script(variables:ctx vars props prev data log): 脚本编辑()
实例:
列举一个简朴的例子,相应效果中有中文乱码,使用BeanShell 后置处置惩罚步伐来处置惩罚中文乱码。
1、新建测试计划,线程组下添加1个取样器 访问度娘,如下图所示:
 https://www.cnblogs.com/du-hong/p/13217399.html
 



 然后再添加BeanShell 后置处置惩罚步伐,设置脚本:prev.setDataEncoding("UTF-8"); ,如下图所示:




 3、配置好以后,点击“生存”,运行JMeter,禁用BeanShell 后置处置惩罚步伐,检察表格效果(中文乱码),如下图所示:
(1)禁用BeanShell 后置处置惩罚步伐,检察表格效果(有中文乱码)




 (2)启用BeanShell 后置处置惩罚步伐,检察表格效果(无中文乱码)


 5.9断言 (Assertions)

断言时自动化测试中最紧张且绕不开的一个概念,让自己的步伐尽大概像人一样去做判定,这是自动化测试需要实现的紧张功能
JMeter中的断言用于查抄测试中得到的相应数据等是否符合预期,Assertions一般用来设置查抄点,用以保证性能测试过程中数据交互与预期同等(它的作用和LoadRunner中的查抄点雷同)
JMeter中断言的原理:在Request的返回层面,增加一层判定机制,因为Request成功了,并不代码效果一定准确
一个Sampler可以添加多个断言,根据你的查抄需求来添加相应的断言,多个断言属于并的操作。当Sampler下所有的断言都通过了,那么才算是请求成功
JMeter自带的断言,如下图所示:




 5.10监听器(Listener)

JMeter中的监听器,是对测试效果进行处置惩罚和可视化 展示的一系列组件,可以大概显示取样器请求和相应的细节以及请求效果,包罗消息头,请求的数据,相应的数据
常用的监听器有图形效果、检察效果树、聚集报告等
1. 监听器放的位置不同,检察的效果也不同。 在线程组下添加监听器,检察线程组下所有请求的效果; 放在具体某个请求下,只检察此请求的效果; 若放在某个控制器节点下,则检察此控制器下节点执行的效果;
2. 该监听器保举做调试用,在实际运行压测时,应该禁用。因为大量 请求时,启用监听器时打印的日志比较多,会造成大IO斲丧,影响 压力机性能。
3. 不同的监听器,通过不同的方式,展示服务器相应信息,但是它们 原始效果数据都是一样的。 
 4. JMeter监听器有两种方式存储监听记录:
  1)默认生存方式:CSV格式。占用磁盘比较少,保举使用这种方式 生存。
  2) 生存方式:生存数据最全面,但是占用内存大。 JMeter自带的监听器,如下图所示:
 JMeter自带的监听器,如下图所示




5.10.1 察看效果树

察看效果树,显示取样器请求和相应的细节以及请求效果,包罗消息头,请求的数据,相应的数据。
(1)察看效果树,放的位置不同,检察的效果也不同。在线程组下添加察看效果树,检察线程组下所有请求的效果;放在具体某个请求下,只检察此请求的效果;若放在某个控制器节点下,则检察此控制器下节点执行的效果;
(2)该监听器保举做调试用,在实际运行压测时,应该禁用,因为大量请求时,启用该监听器时打印的日志比较多,会造成大IO斲丧,影响压力机性能。
1、我们先来看看这个 察看效果树 长得是啥样子,路径:线程组 > 添加 > 监听器 > 察看效果树,如下图所示: 







  2、关键参数阐明如下:
  名称:控制器的描述性名称,显示在左边节点上,并用于定名事务 
  注释:控制器注释信息,非必填项 
  文件名:载入文件名 
    Log/Display Only: 仅日志错误、Success ;勾选中显示对应的日志信息 
    Configure:界说report中自己所关心的数据项。 
  取样器效果: 
    Thread Name: 线组名称 
    Sample Start: 启动开始时间 
    Load time: 加载时长 
    Latency: 等候时长 
    Size in bytes: 发送的数据总大小 
    Headers size in bytes: 发送头大小 
    Body size in bytes: 发送数据的别的部分大小 
    Sample Count: 发送统计 
    Error Count: 错误统计 
    Response code: 返回码 
    Response message: 返回消息 
    Response headers:返回头信息 
   请求 
    数据获取方式、路径、地址等以及通报的参数、cookie 
  相应数据 
    相应加载的页面html
  3、作用
    1)检察请求效果,请求成功的测试通常为绿色;红色则代表失败。
    注:在没有对请求断言的环境下,显示绿色并不一定是成功,只代表相应码是200或300系列,显示红色阐明相应码是400或500系列。所以要想确定请求返回的是准确的,必须要加上断言,只有断言成功才会显示绿色。
    2)检察对应Sampler的测试效果的请求、相应数据。






      • 取样器效果:显示的是取样器干系参数(客户端参数与相应参数)
      • 请求:发送请求的具体内容
      • 相应数据:服务器返回的相应参数


5.10.2 汇总报告

  汇总报告,为测试中的每个不同定名的请求创建一个表行。这与聚合报告雷同,只是它使用更少的内存。提供了最简要的测试效果信息,同时可以配置将相应的信息生存至指定的文件中(支持xml、csv格式的文件)。
  单击Configure按钮,可以配置效果生存各种选项,具体这里不做阐明了。
  该监听器是笔者在调试jmeter项目时常用的监听器之一。
  1、我们先来看看这个 汇总报告 长得是啥样子,路径:线程组 > 添加 > 监听器 > 汇总报告,如下图所示: 




  2、关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空;
    Label 取样器别名,假如勾选Include group name ,则会添加线程组的名称作为前缀
    # Samples 取样器运行次数
    Average 请求(事务)的均匀相应时间
    Min 请求的最小相应时间
    Max 请求的最大相应时间
    Std. Dev 相应时间的标准方差
    Error % 事务错误率
    Throughput 吞吐量 也就是TPS
    Received KB/sec 每秒收到的千字节
    Sent KB/sec 每秒发送的千字节
    Avg. Bytes 相应均匀流量
5.10.3聚合报告

聚合报告,记录这次性能测试的总请求数、错误率、用户相应时间(中间值、90%、最少、最大)、吞吐量等,用以帮助分析被测试系统的性能。在聚合报告中,各个相应时间不能凌驾客户的要求,就是合格,比方不能凌驾相应时间2s,大于2s就是不合格的.
聚合报告应该是最具体的报告了,也是最为常用的报告。是大家在压测过程中最常用的监听器。
该监听器对于每个请求,它统计相应信息并提供请求数,均匀值,最大,最小值,中位数、90%、95%、错误率,吞吐量(以请求数/秒为单元)和以kb/秒为单元的吞吐量。
单击Configure按钮,可以配置效果生存各种选项,具体这里不做阐明了。
1、我们先来看看这个 聚合报告 长得是啥样子,路径:线程组 > 添加 > 监听器 > 聚合报告,如下图所示:
 

  2、关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空;
    Label :每个 JMeter 的 element(比方 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
    #Samples :表示测试中一共发出了多少个请求,假如模仿10个用户,每个用户迭代10次,那么这里就显示对应的 HTTP Request的执行次数是100 
    Average :均匀相应时间——默认环境下是单个 Request 的均匀相应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单元显示均匀相应时间 
    Median :50%用户的相应时间 
    90%Line :90%用户的相应时间 
    Min :最少相应时间 
    Max :最大相应时间 
    Error% :本次运行测试中出现错误的请求的数目/请求的总数 
    Throughput :吞吐量,默认环境下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示雷同 LoadRunner 的 Transaction per Second 数 
    接收/发送)KB/sec :每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

5.10.4 后端监听器

后端监听器,是一个异步侦听器,可以将数据推入到数据库中,提供了InfluxDB,graphite选项
1、我们先来看看这个 后端监听器 长得是啥样子,路径:线程组 > 添加 > 监听器 > 后端监听器,如下图所示: 





  2、关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空;
    Backend Listener implementation:BackendListenerClient类的实现,Jmeter默认提供如下两种实现,因为我们使用的influxdb作为长期存储
    org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
    org.apache.jmeter.visualizers.backend.graphite.InfluxdbBackendListenerClient 因为我们使用的influxdb作为长期存储,所以后续只介绍InfluxdbBackendListenerClient
    Async Queue size:异步队列大小 队列值包含异步处置惩罚时的度量标准。除非有一些特定的性能题目,否则最好不要从默认的5000。
  3、我们使用InfluxdbBackendListenerClient






      • influxdbMetricsSender:org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
      • influxdbUrl:influx数据库的url。example : http://influxHost:8086/write?db=jmeter
      • application:被测试的应用名称。此值也作为名为“application”的标记存储在“events”中
      • measurement:使用默认的”jmeter“就行
      • summaryOnly:为true的环境下,只输出所有请求的聚集数据报告,为flase的环境下,输出每条数据的详谍报告、
      • samplersRegex:正则表达式将与样本名称匹配并发送到后端。默认匹配所有
      • testTitle:测试名称。默认的设置为 Test name。该值作为名为“text”的字段存储在“事件”度量中。 JMeter在测试的开始和竣事时自动天生一个注释,其值以'started'和'ended'结尾
      • percentiles:要发送到后端的百分位数,多个值已;分割
      • TAG_WhatEverYouWant:自界说标签。您可以根据需要添加任意数目标自界说标签。对于它们中的每一个,只需创建一个新行并在其名称前加“TAG_”



5.10.5汇总图

汇总图,我们可以看到表格显示的效果与图形效果,看着挺复杂,其实稍微翻译一下就知道,绝大多数都是对图形的设置。
1、我们先来看看这个 汇总图 长得是啥样子,路径:线程组 > 添加 > 监听器 > 汇总图,如下图所示: 




   2、关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空;
    Column settings






      • Columns to display  选择要在图表中显示的列
      • Rectangles color      单击右侧颜色矩形打开弹出对话框,选择自界说颜色。(就是点击

        )








      • Foreground color     允许更改值文本颜色
      • Value font  允许界说文本的字体设置
      • Draw outlines bar?   在条形图上绘制或不绘制界限线
      • Show number grouping?     是否显示Y轴标签中的数字分组
      • Value labels vertical?          更改值标签的方向。(默以为水平)
      • Column label selection       按效果标签过滤


  Title
    图表的头部界说图表的标题
  Graph size
    根据当前JMeter窗口大小的宽度和高度计算图形大小。使用“ 宽度”和“ 高度”字段界说自界说大小。单元是像素。
  X Axis settings
    界说X轴标签的最大长度(以像素为单元)
  Y Axis settings
    为Y轴界说自界说最大值。
  Legend
    界说图表图例的放置和字体设置
5.10.6断言效果

 断言效果,对相应的请求添加断言。对取样器进行断言后,我们希望知道断言效果;此元件可以帮助我们显示断言效果(察看效果树元件中也可以看到)。斲丧了大量资源(内存和CPU),性能测试时间不建议使用。
作用:用于查抄测试中得到的相应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期同等,一般与效果树结合使用。
1、我们先来看看这个 断言效果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 断言效果,如下图所示: 
 



   2、关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空。
 5.10.7比较断言可视化器

比较断言可视化器,和比较断言配合使用。
1、我们先来看看这个 比较断言可视化器 长得是啥样子,路径:线程组 > 添加 > 监听器 > 比较断言可视化器,如下图所示: 
 



   2、关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空。
 5.10.8天生概要效果

天生概要效果,该测试元素可以放置在测试计划中的任何位置。天生到目前为止对日志文件和/或标准输出的测试运行的摘要。显示了运行总计和差异总计。在适当的时间界限每n秒(默以为30秒)天生一次输出,因此将同步在同一时间运行的多个测试。
1、我们先来看看这个 天生概要效果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 天生概要效果,如下图所示:  
 

   2、关键参数阐明如下:
    Name:名称,可以随意设置,乃至为空;
    Comments:注释,可随意设置,可以为空。
 5.10.9 图形效果

图形效果,通过图形展示出本次性能测试数据的分布。 图形效果一般作为聚合报告的分析辅佐
1、我们先来看看这个 图形效果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 图形效果,如下图所示: 




  2、关键参数阐明如下:
  名称:控制器的描述性名称,显示在左边节点上,并用于定名事务 
  注释:控制器注释信息,非必填项 
  文件名:载入文件名 
  Throught:吞吐量,可以理解成TPS(TPS表示每秒通过的事物数,QPS表示每秒查询接口数。jmeter中假如只有单接口,那么TPS=QPS。假如是多接口的混淆场景,只有在事物控制器下执行,才能将其理解为TPS)






      • 样本数目。在这里,我们可以把样本数目简朴理解成是jmeter一共向服务器发起了多少次请求;
      • 最新样本。jmeter最后一次发送请求的相应时间。单元是毫秒;
      • 均匀。所有请求相应时间的均匀值。单元是毫秒;
      • 偏离。标准方差,学过统计学的同学应该知道这个概念。假如你对这个概念一无所知也没有关系,偏离越小就代表测试的总体效果与均匀值越靠近;
      • 吞吐量。被测系统每分钟能处置惩罚的请求个数,这是判定服务器性能优劣的紧张指标(也可以说是最紧张的指标)。在上面的图形效果报表里我们可以看到系统的吞吐量是138.985每分钟,这就代表着系统每分钟可以处置惩罚138.985个请求;
      • 中值。就是相应时间的中间值,学术一点中值指的是有50%的值大于这个值,别的50%的值小于这个值。蒙圈了吧?实际上中值指的是假如有9个数,那么我们从小到大排列这些数,排在第5个的数就是这一组数的中值。那么假如有10个数呢?10个数的话第5个和第6个数的均匀值就是这组数字的中值;


 5.10.10 JSR223 Listener

SR223 Listener,允许将JSR223脚本代码应用于示例效果。
1、我们先来看看这个 SR223 Listener 长得是啥样子,路径:线程组 > 添加 > 监听器 > JSR223 Listener,如下图所示: 




   2、关键参数阐明如下:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空;
  Label 取样器别名,假如勾选Include group name ,则会添加线程组的名称作为前缀
  # Samples 取样器运行次数
  Average 请求(事务)的均匀相应时间
  Min 请求的最小相应时间
  Max 请求的最大相应时间
  Std. Dev 相应时间的标准方差
  Error % 事务错误率
  Throughput 吞吐量 也就是TPS
  Received KB/sec 每秒收到的千字节
  Sent KB/sec 每秒发送的千字节
  Avg. Bytes 相应均匀流量
5.10.11邮件观察仪

邮件观察仪, 假如测试运行从服务器收到太多失败的相应,则可以将邮件步伐可视化工具设置为发送电子邮件,这个不错,起到及时通知效果,下面我使用的是163 SMTP进行测试。可以实现。
1、我们先来看看这个 邮件观察仪 长得是啥样子,路径:线程组 > 添加 > 监听器 > 邮件观察仪,如下图所示: 




2、配置好以后,点击“Test Mail”,提示发送邮件成功。如下图所示




 3、去收件箱检察,如下图所示:




 5.10.12相应时间图

相应时间图,相应时间图形监听器。有点和我们之前介绍的Aggregate Graph雷同
1、我们先来看看这个 相应时间图长得是啥样子,路径:线程组 > 添加 > 监听器 > 相应时间图,如下图所示: 


2、关键参数阐明如下:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空;
  2.1 Graph setting 图片设置
  2.2 Interval:横坐标的刻度
  2.3 Title 标题 默认
  2.4 Line setting 线条设置 默认
  2.5 Graph size 图片尺寸 默认
  2.6 X Axis 横坐标 默认
  2.7 Y Aixs 纵坐标
  2.8 Scale maximum value 纵坐标长度
  2.9 increment scale 纵坐标的刻度 ;Legend 字体设置 默认


  • Interval (ms)                   X轴隔断的时间(以毫秒为单元)
  • Sampler label selection   按效果标签过滤。可以使用正则表达式
  • Title                                 在图表的头部界说图表的标题
  • Line settings                    界说线条的宽度
  • Graph size                       根据当前JMeter窗口大小的宽度和高度计算图形大小。使用“ 宽度”和“ 高度”字段界说自界说大小。单元是像素。
  • X Axis settings                 自界说X轴标签的日期格式
  • Y Axis settings                 为Y轴界说自界说最大值(以毫秒为单元)
  • Legend                            界说图表图例的放置和字体设置
5.10.13生存相应到文件

生存相应到文件,我们可以看到表格显示的效果与图形效果,看着挺复杂,其实稍微翻译一下就知道,绝大多数都是对图形的设置。
1、我们先来看看这个 生存相应到文件 长得是啥样子,路径:线程组 > 添加 > 监听器 > 生存相应到文件,如下图所示: 


2、关键参数阐明如下:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空;
  文件名称前缀:设置相应文件所在路径(路径必须已存在)和文件前缀
  Save Failed Responses only:只生存失败的相应
  Save Successful Responses only:只保留成功的相应
  Don't add number to prefix:不添加数字到文件名前缀
  Don't add suffix:不添加文件后缀,即扩展名(注:默认环境下,jmeter会根据服务器返回的效果自动天生合适范例的文件,比如服务器返回json格式的内容,jmter会自动天生.json文件)
  Add timestamp:添加时间戳到文件前缀
  Minimum Length of sequence number :最小序列号,不填默认从1开始。
5.10.14简朴数据写入器
简朴数据写入器,对用来记登科样器相应效果,不会以图形方式显示。配合NON GUI模式使用。
1、我们先来看看这个 简朴数据写入器 长得是啥样子,路径:线程组 > 添加 > 监听器 > 简朴数据写入器,如下图所示: 





2、关键参数阐明如下:
Name:名称,可以随意设置,乃至为空;
Comments:注释,可随意设置,可以为空。
5.10.15用表格检察效果

用表格检察效果,这个listener用来显示每个请求的相应头信息,我觉得它最好用的一点就是可以按先后顺序显示每个请求的开始时间、耗时、相应状态等,方便进行效果分析。
1、我们先来看看这个 用表格检察效果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 用表格检察效果,如下图所示:





2、关键参数阐明如下:
  Name:名称,可以随意设置,乃至为空;
  Comments:注释,可随意设置,可以为空。
  Sample # : 一个系列号,我们线程用户设置了5,这里就有5个号
  Start Time:每个用户的开始时间,我们设置了1秒进5个用户,所以,每个用户进入时间不同,这里准确到毫秒。
  Thread Name:线程名称,注意1-1,1-5,第一个1我也不知道表示什么,后面的1到5很好理解,就是用户1到用户5.
  Label:就是Http reques的名称
  Sampler Time:运行这个Sampler所斲丧的时间,有时间也等于Duration time
  Status:执行效果标记,成本绿勾,失败红叉。
  Bytes:请求的相应文件大小
  Sent Byte:发送HTTP请求的数据包大小
  Latency:这个字面意思是埋伏时间,不是耽误,暂时不好理解和表明。一个网络术语
  Connet Time: 连接到服务器斲丧的时间。
5.10.16BeanShell Listener

BeanShell Listener,通过BeanShell 监听器可以访问JMeter提供的属性和变量
1、我们先来看看这个 BeanShell Listener 长得是啥样子,路径:线程组 > 添加 > 监听器 > BeanShell Listener,如下图所示: 





2、关键参数阐明如下:
Name:名称,可以随意设置,乃至为空;
Comments:注释,可随意设置,可以为空。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表