• Jmeter-测试计划,线程组,取样器,逻辑控制器,断言和监听器


    一 测试计划

    是使用jmeter测试的起点,是其他测试元件的容器,一个完整的测试计划包括多个线程组,逻辑控制器,取样器,监听器,配置元件

     

    用户定义的变量: 测试计划上可以添加用户定义的变量。一般添加一些系统常用的配置,比如直接${变量名}, eg: ${IP},${Port}。

    如果测试过程中想切换环境,切换配置,一般不建议在测试计划上添加变量,因为不方便启用和禁用,一般是直接添加用户自定义变量组件。如: 

     

     

     二 线程组:测试里每个任务都需要线程去处理,所有任务必须在线程组下面创建

     1.线程数:设置发送请求的用户数,即并发数

    2.Ramp-Up: 如果参数为2,则表示线程数在2秒内初始化完毕,每秒启动的线程数为:线程数/2

    3.循环次数:请求的重复次数,如果参数设置为10,线程数为200,则总的请求数为200*10

    4.栗子:200个用户在10秒之内访问百度网页,这样可以设置线程数为200,Ramp-Up为10,这样就表示200个用户在10秒内访问网页,也就是说1秒内有20个用户同时访问百度网页

    注意:如果同一个线程组下面的http请求端口号,地址信息是一样的,则可以在现成组下面添加http请求默认值设置。

    三 取样器

    可以认为所有的测试任务都由取样器承担,如:http请求,ftp请求,JDBC请求;取样器告诉jmeter发送一个请求到指定服务器,并等待服务器的请求。取样器会按照其顺序执行,还可以用逻辑控制器来改变取样器运行的重复次数。

    备注:请求的协议,服务器名称或ip, 请求方式, 向服务器请求的路径,请求的参数 

             

    四 逻辑控制器

    可以控制jmeter发送请求的测试逻辑,它与sampler结合使用可以模拟复杂的请求序列,其中的控制器是可以组合使用,里面包括:

    1. 循环控制器:设置请求的循环次数或永远循环,可用于压力测试

    2. 事务控制器:将多个请求放在同一事务中。选中Gegerate parent sampler, 则聚合报告中只显示事务控制器的数据,不会显示其中各个请求的数据,反之则全部显示

    3. 简单控制器:测试用例顺序执行

    独立运行每个线程组: 用于控制测试计划中的多个线程组的执行顺序。如上图,线程组1和线程组2的线程是并行执行的,执行过程线程的执行顺序是不可预料的。
    如果勾选了独立运行每个线程组,可以保证线程组1的执行一定在线程组2之前,线程组1执行完毕,才会执行线程组2。

    线程组中的取样器的执行顺序: 默认是从上到下执行。交替控制器、随机控制器、随机顺序控制器和循环控制器等可以改变取样器的执行顺序。

    函数测试模式(Functional Testing) 如果选中了此选项,监听组件如“查看结果树”配置了保存到一个文件中,那么jmeter会将每次的请求结果保存到文件中。一般不建议勾选。

    五 断言 (Assertion)

    它的作用和loadrunner中的检查点类似,对取样器返回的结果给出判断,是否正确。 用户可以使用断言来检查从服务器获得的响应内容,用来判断请求相应的结果是否如用户所期望的。

    使用断言的目的:在request的返回层面增加一层判断机制;因为request成功了,并不代表结果一定正确。

    使用断言的方法:

    在选择的Sampler下添加对应的断言;配置好响应的检查内容(根据断言情况而定,有的断言控制面板不需要添加任何内容,如XML Assertion)。

    添加一个断言结果的监听器(从监听器中添加),通过“断言结果”可以看到是否通过断言;对于一次请求,如果通过的话,断言结果中只会打印一行请求的名称;

      如果失败,则除了请求的名称外,还会有一行失败的原因(不同类型的断言,结果不同)。

    PS:一个Sampler可以添加多个断言,根据你的检查需求来添加相应的断言,当Sampler下所有的断言都通过了,那么才算request成功。

    1. 响应断言:

    apply to:适用范围

    Main sample and sub-samples: 作用于父节点取样器及对应子节点取样器

    Main sample only:仅作用于父节点取样器

    Sub-samples only: 仅作用于子节点取样器

    JMeter Variable:  作用于jmeter变量(输入框内可输入jmeter的变量名称)

    要测试的响应字段:要检查的项

                    响应文本:响应服务器返回的文本内容,http 协议排除header部分

                    响应代码:匹配响应代码,比如http请求中,“200”代表成功

                    响应信息:匹配响应信息,处理成功返回“成功”或者“OK”字样

                    Response Headers: 匹配响应头中的信息

                    URL样本

                    Ignore status:忽略返回的响应报文状态码

    模式匹配规则:

               包括:返回结果包括你指定的内容

               匹配:(好像跟Equals查不多,弄不明白有什么区别)   

               Equals:返回结果与你指定结果一致

               Substring:返回结果是指定结果的字串

               否:不进行匹配

    要测试的模式: 即填写你指定的结果(可填写多个),按钮【添加】、【删除】是进行指定内容的管理

    2. 断言持续时间:

    用于判断服务器的响应时间

    作用对象:服务器

    APPly to:  适用范围

             Main sample and sub-samples: 作用于父节点取样器及对应子节点取样器

             Main sample only:仅作用于父节点取样器

             Sub-samples only: 仅作用于子节点取样器

    Duration to assert:持续断言

    Duration in milliseconds:响应时间设置(单位:毫秒),如果响应时间大于设置的响应时间,则断言失败,否则成功!

    3. Beanshell断言

    当某些断言不能满足使用时,比如多个断言或的情况,可以使用Beanshell Assertion来进行处理。Beanshell是一种松散类型的脚本语言,一直完全符合java语法的Java脚本语言。

    Name: 断言的名字

    Comments:注释(对这个断言进行一个解释,备注)

    Reset bsh.interpreter before each call: 在每次调用Bean Shell之前重置bsh.interpreter类(bsh.interpreter是Bean Shell脚本语言的一种类,也可以理解为一种解析器)

    Parameters(String Parameters and String []bsh.args):String参数(String []bsh.args是主类main函数的形式参数,是一个String 对象数组,可以用来获取命令行用户输入进去的参数)

    Script file:脚本文件(可以填入脚本文件路径)

    Script(see below for variables that are defined):参照下文定义的变量(使脚本文件参照定义的变量来运行)

    栗子:“code:200”或者“code:800034”都认为断言成功时,可以使用如下方法来进行处理:

    4. Json 断言

    在Json Path中添加匹配规则,在Expect value中填写期望值

    Assert JSON Path exists: $.

    新增一个 JSON Assertion,在 $. 后面加入需要检查的json字段; 
    比如截图中我察看的是“result”; 
    Expected Value:是要检查的json结果;

    下图是我的察看结果树的截图: 
    察看结果树

    我测试用例中正常的result是11;
    如果JSON Assertion 的Expected Value设置result值为11;
    则断言结果是请求的名称,察看结果树的结果是绿色的;
    如果是JSON Assertion 的Expected Value设置result值为12;
    则断言结果是这样的:

    这里写图片描述

     5. xpath断言

    XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。

    作用对象:针对返回信息为XPAth的数据类型进行断言

    XML Parsing Options:XML解析选项

             Use Tidy(tolerant parser):使用Tidy(容错解析器),默认选择quiet(不显示)

             Quiet:不显示

             Report errors:错误报告

             Show warnings:显示错误

             Use Namespaces:使用名称空间

             Validate XML:验证XML(文件包/数据)

             Ignore Whitespace:忽略空格(允许你指定语法分析器可以忽略哪个空格,而哪个空格重要的)

             Fetch external DTDs: 获取外部DTDs

    XPath Assertion: 输入框中写入xpath断言,点击Validate验证其正确性

             True if nothing matches:确认都不匹配

    6. 比较断言(compare  assertion)

    这是一种比较特殊的断言元件,针对断言进行字符串替换时使用;

    作用对象:需要替换的字符串

    Select Comparison Operators:选择比较运算符

    Compare Content:可以选择比较的内容类型(true/false或者自定义,编辑)

    Compare Time:比较时间(可以设定比较的时间,单位为秒,默认为-1)

    Comparison Fitters:比较修改工具

    regular expression substitutions:替换正则表达式

    Regex String:要替换的字符串(可从断言结果中选择)

    substitutions:替换的字符串(替换结果)

    六 监听器(结果分析)

    1. 察看结果树

    添加察看结果树,放的位置不同,察看的结果也不同。在线程组下添加察看结果树,察看线程组下所有请求的结果;放在具体某个请求下,只查看此请求的结果;若放在某个控制器节点下,则查看此控制器下节点执行的结果。

    参数说明: 

    (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务 

    (2)注释:控制器注释信息,非必填项 

    (3)文件名:载入文件名 

    (4)Log/Display Only: 仅日志错误、Success ;勾选中显示对应的日志信息
    (5) Configure:定义report中自己所关心的数据项。
    (6) 取样器结果:
             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:返回头信息
    (7)请求 - 数据获取方式、路径、地址等以及传递的参数、cookie
    (8)响应数据 - 响应加载的页面html

    2. 聚合报告 (Aggregate report)

     记录这次却被行测试总请求数、错误率、用户响应时间(中间值、90%、最少、最大)、吞吐量等,用以帮助分析被测试系统的性能,如果大家都是做web应用的性能测试,例如只有一个登录的请求,那么在Aggregate Report中,会显示一行数据,共有10个字段,含义分别如下。

    参数说明:

    • Label          取样器别名,如果勾选Include group name  ,则会添加线程组的名称作为前缀
    • # Samples  取样器运行次数
    • Average     请求(事务)的平均响应时间
    • Min            请求的最小响应时间
    • Max           请求的最大响应时间
    • Std. Dev    响应时间的标准方差
    • Error %     事务错误率
    • Throughput    吞吐量 也就是TPS
    • Received KB/sec  每秒收到的千字节
    • Sent KB/sec         每秒发送的千字节
    • Avg. Bytes       响应平均流量

    3. 汇总报告(summary report)

     Summary Report 为测试中的每个不同命名的请求创建一个表行。这与聚合报告类似,只是它使用更少的内存。

    参数说明:

    • Label          取样器别名,如果勾选Include group name  ,则会添加线程组的名称作为前缀
    • # Samples  取样器运行次数
    • Average     请求(事务)的平均响应时间
    • Min            请求的最小响应时间
    • Max           请求的最大响应时间
    • Std. Dev    响应时间的标准方差
    • Error %     事务错误率
    • Throughput    吞吐量 也就是TPS
    • Received KB/sec  每秒收到的千字节
    • Sent KB/sec         每秒发送的千字节
    • Avg. Bytes       响应平均流量

    4. 汇总图(Aggregate Graph)

     

  • 相关阅读:
    [leetcode]43. Multiply Strings
    [leetcode]387. First Unique Character in a String
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
  • 原文地址:https://www.cnblogs.com/wz123/p/10243239.html
Copyright © 2020-2023  润新知