zoukankan      html  css  js  c++  java
  • JMeter基础---全组件目录

    https://blog.csdn.net/paidaxing_dashu/article/details/102677738

    组件介绍
    1)线程组
    2)配置元件
    3)定时器
    4)前置处理器
    5)取样器
    6)后置处理器
    7)逻辑控制器
    8)断言
    9)监听器
    10)函数

    概述


    1)线程组
    序号 名称 含义
    原生线程组有:
    1) setUp线程组 无论何种情况下,最先执行的线程组,页面配置同线程组
    2) tearDown线程组 无论何种情况下,最后执行的线程组,页面配置同线程组
    3) 线程组 最常用的
    可安装插件新增:安装参考 参考案例
    4) bzm - Arrivals Thread Group 到达线程组,模拟用户在一段时间内的操作次数,达到这个负载。
    5) bzm - Free-Form Arrivals Thread Group 自由格式到达线程组,类似到达线程组,可以同时添加多个到达(迭代)设置。
    6) jp@gc - Stepping Thread Group 步进线程组,阶梯式加压/阶梯式减压,因为可以设置查看加/减压的整个过程。
    7) bzm - Concurrency Thread Group 并发线程组,步进线程组的替代方案。
    8) jp@gc - Ultimate Thread Group 最终线程组,可以灵活的添加多种不同的负载方式同时运行。
    返回目录

    2)配置元件
    序号 名称 含义
    原生配置元件有:
    1) CSV Data Set Config CSV 数据文件设置,用来导入外部文件数据,参数化脚本
    参数化操作,数据驱动,注意事项
    2) JDBC Connection Configuration JDBC连接配置,连接数据库使用的。参考案例
    3) 计数器 可以用来统计迭代次数,数字格式可以自己设置。参考案例
    4) Random Variable 数据变量,可以按照指定格式随机输出数字字符。参考案例
    5) 用户定义的变量 自定义一系列变量,方便使用。参考案例
    6) FTP请求缺省值 FTP Request Defaults,用于设置FTP请求的默认值。参考案例
    HTTP属性管理系列五个:参考案例
    7) HTTP Cache Manager HTTP 缓存管理器,提供缓存功能,模拟浏览器行为
    8) HTTP Cookie 管理器 用来存储浏览器产生的用户信息
    9) HTTP信息头管理器 可以添加HTTP请求头 ,设置不同的请求类型
    10) HTTP授权管理器 HTTP Authorization Manager,用于设置自动对一些需要NTLM验证的页面进行认证和登录,NTLM是WinNT早期版本的标准安全协议
    11) HTTP请求默认值 HTTP Request Defaults,设置HTTP请求使用的默认值
    LDAP系列:
    12) LDAP Extended Request Defaults LDAP扩展请求默认值,为LDAP扩展测试设置默认值
    13) LDAP请求默认值 为LDAP测试设置默认值
    不常用:参考案例
    14) Java请求默认值 Java Request Defaults,为Java测试设置默认值。参考案例
    15) DNS Cache Manager DNS缓存管理器,提供静态表来管理host,
    16) Keystore Configuration 密钥库配置,配置密钥库的加载方式以及它将使用的密钥。
    17) TCP取样器配置 为TCP取样器提供默认数据
    18) 登陆配置元件/素 为提取器添加或重载用户名和密码
    19) 简单配置元件 可以在提取器中添加或重载任意值,主要是供开发人员在开发新的JMeter组件时使用的基本GUI
    可安装插件新增:安装参考
    20) jp@gc - Lock File Config
    21) jp@gc - Variables From CSV File
    返回目录

    3)定时器
    一般用来设置延迟与同步。优先级高于取样器(提取器)

    在默认情况下,jmeter发送每个请求之间是没有延时的,如果采用默认的方式,如果线程数足够大,瞬间就会将服务器压死。再则,实际的业务中,请求之间是有一定时间的停顿的。

    所以在请求之间设置合理的延时是必须的,也是更接近用户真实业务情况。在jmeter中,定时器组件提供了系列不同类型的延时控制。合理使用定时器组件,可以让性能测试更接近真实,更能挖掘出系统的瓶颈和评估系统的性能指标。

    定时器的作用域:

    定时器是在每个请求之前执行的,无论定时器位置是在提取器前面还是后面
    在执行一个请求之前,所有当前作用域内的定时器都会被执行
    如果只是希望定时器仅仅应用于其中一个提取器,则把定时器作为子节点加入
    序号 名称 含义
    原生定时器有:
    1) Constant Throughput Timer 常数吞吐量定时器,控制每分钟请求数量。参考案例
    2) Synchronizing Timer 同步定时器,并发数设置用它。参考案例
    控制延迟的组件:
    3) BeanShell Timer BeanShell定时器可用于生成延迟
    4) JSR223 Timer 可使用JSR223脚本语言生成延迟
    控制时停的组件:参考案例
    5) Constant Timer 固定定时器,用于添加相同固定的延迟
    6) Uniform Random Timer 统一随机定时器,模拟不同的延迟长度。这有助于在网页上模拟现实的用户行为。
    7) Poisson Random Timer 泊松随机定时器,该定时器暂停每个线程请求一段随机时间,大部分时间间隔发生在特定值附近。总延迟是泊松分布值和偏移值之和。
    8) Caussian Random Timer 高斯随机定时器,可以让每个线程在请求之间暂停一段随机时间。总延迟是高斯分布值加偏移值之和。
    可安装插件新增:安装参考
    9) jp@gc - Throughput Shaping Timer
    5.1版本新增的组件
    10) Precise Throughput Timer(准确的吞吐量定时器)
    返回目录

    4)前置处理器
    处理一些请求前的准备工作,比如参数设置,环境变量设置等。前置处理器用于修饰其范围内的取样器。

    序号 名称 含义
    原生前置处理器有:
    1) 用户参数 允许用户指定特定于各个线程的用户变量的值。
    2) JDBC PreProcessor JDBC预处理程序,使您可以在样本运行之前运行一些SQL语句。参考案例
    3) RegEx User Parameters 正则表达式用户参数,允许使用正则表达式从一个HTTP请求中提取指定动态值并传递到另一个HTTP参数。
    4) Sample Timeout 取样器超时,如果完成时间过长,此前置处理器会调度计时器任务以中断样本。
    5) HTML 链接解析器 此修饰器解析来自服务器的HTML响应并提取链接和表单
    6) HTTP URL 重写修饰符 此修饰器与HTML链接分析器的工作方式类似,不同之处在于它具有比HTML链接分析器更易于使用的特定目的,并且效率更高。
    需要运行代码的组件:
    7) BeanShell PreProcessor BeanShell预处理程序,允许在采样之前应用任意代码。
    8) JSR223 PreProcessor JSR223预处理程序,允许在采样之前应用JSR223脚本代码。
    可安装插件新增:安装参考
    9) jp@gc - Inter-Thread Communication PreProcessor 作用是跨线程组传递数据,类似函数_setProperty 和 _property,需要配合后置处理器jp@gc - Inter-Thread Communication PostProcessor来使用。参考案例
    10) jp@gc - Raw Data Source PreProcessor 原始数据源预处理器,参考案例
    返回目录

    5)取样器
    模拟用户在客户端发起的请求

    取样器执行JMeter实际的工作。每个取样器( 测试活动 除外)生成一个或多个样本结果。样本结果具有各种属性(成功/失败,经过时间,数据大小等),并且可以在各种监听器中查看。

    序号 名称 含义
    原生取样器有:
    1) HTTP Request 参考案例
    2) JDBC Request 此取样器允许您将JDBC请求(SQL查询)发送到数据库。参考案例
    3) JUnit Request 当前实现支持标准JUnit约定和扩展。
    4) FTP请求 从ftp上下载文件,和上传文件到ftp中。参考案例
    5) Java请求 java请求和jp@gc - Dummy Sampler(虚拟取样器)作用差不多,可以用来模拟一个接口的请求和返回。参考案例
    6) Debug Sampler 调试取样器,就是用来查看我们后置处理器提取的数据是否正确。参考案例
    7) AJP/1.3 Sampler
    8) Access Log Sampler 访问日志采样器,AccessLogSampler旨在读取访问日志并生成http请求。
    JMS系列组件:
    9) JMS Point-to-Point JMS 点到点,此取样器通过点到点连接(队列)发送并可选地接收JMS消息。与发布/订阅消息不同,它通常用于处理事务。
    10) JMS Publisher JMS 发布,JMS发布将消息发布到给定目标(主题/队列)。
    11) JMS Subscriber JMS 订阅,JMS订阅将订阅给定目标(主题或队列)中的消息。
    LDAP系列组件:
    12) LDAP Extended Request LDAP扩展请求,此取样器可以将所有8个不同的LDAP请求发送到LDAP服务器。它是LDAP取样器的扩展版本,因此配置起来比较困难,但可以更接近真实的LDAP会话。
    13) LDAP请求 此取样器允许向LDAP服务器发送不同的LDAP请求(添加,修改,删除和搜索)。
    需要代码的组件:
    14) JSR223 Sampler 使用JSR223脚本代码来执行一个样本或创建/更新变量所需的一些计算。
    15) BeanShell Sampler 使用BeanShell脚本语言编写取样器。
    不常用:
    16) SOAP/XML - RPC Request
    17) OS Process Sampler OS进程取样器,OS进程取样器是一个可用于在本地计算机上执行命令的取样器。
    18) Test Action 测试活动,测试活动取样器是一个适用于条件控制器的取样器。测试元件不是生成样本,而是暂停或停止所选目标。参考案例
    19) SMTP Sampler SMTP取样器可以使用SMTP/SMTPS协议发送邮件。可以为连接(SSL和TLS)以及用户身份认证设置安全协议。如果使用安全协议,则将对服务器证书进行验证。
    20) TCP取样器 TCP取样器打开与指定服务器的TCP/IP连接。然后发送文本,并等待响应。
    21) Mail Reader Sampler 邮件阅读者取样器,可以使用POP3(S)或IMAP(S)协议读取(可选删除)邮件消息。
    可安装插件新增:安装参考
    22) jp@gc - Dummy Sampler 虚拟取样器,参考案例
    23) jp@gc - HTTP Raw Request HTTP原始请求,
    24) jp@gc - UDP Request
    返回目录

    6)后置处理器
    请求是用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们势必要对这些响应数据进行处理,后置处理器就是用来完成这项工作的。

    序号 名称 含义
    原生后置处理器有:
    1) 正则表达式提取器 将响应数据进一步提取供后面使用。提取文本内容参考案例
    2) XPath Extractor 该测试元素允许用户使用XPath查询语言从结构化响应-XML或(X)HTML中提取值。提取页面元素属性值
    3) JSON Extractor 可以使用JSON-PATH语法从JSON响应中提取数据。该后处理器与正则表达式提取器非常相似。参考案例
    4) JDBC PostProcessor JDBC后置处理程序使您可以在样本运行后立即运行一些SQL语句。如果JDBC样本更改了某些数据,并且您希望将状态重置为JDBC样本运行之前的状态,那么这将非常有用。参考案例
    5) Debug PostProcessor 调试后置处理程序,作用和调试取样器一样。参考案例
    6) CSS/JQuery Extractor 允许用户使用CSS选择器语法从服务器HTML响应中提取值。参考案例
    7) Result Status Action Handler 结果状态处理器,此测试元件允许用户在相关取样器发生故障后停止线程或整个测试。
    需要代码的组件:
    8) BeanShell PostProcessor
    9) JSR223 PostProcessor
    可安装插件新增:安装参考
    10) jp@gc - Inter-Thread Communication PostProcessor 作用是跨线程组传递数据,类似函数_setProperty 和 _property,需要配合前置处理器jp@gc - Inter-Thread Communication PreProcessor来使用。参考案例
    11) jp@gc - XML Format Post Processor
    返回目录

    7)逻辑控制器
    控制器用于在线程组内通过Sampler(提取器)实现各种测试逻辑,可以定义提取器执行的条件

    序号 名称 含义
    原生逻辑控制器有:
    控制如何循环执行的:
    1) Loop Controller 循环控制器,控制在其下面的子元素循环执行。参考案例
    2) ForEach Controller 遍历一组相关变量的值。参考案例
    3) While Controller 循环执行其下面的测试元件,直到写入的条件为False。 参考案例
    4) Alternate controller 交替控制器,交替执行其下面的测试元件。参考案例
    5) Random Controller 随机控制器,每次循环随机执行一个。参考案例
    6) Random Order Controller 随机顺序控制器,其下面的测试元件全部执行,但是顺序是随机的
    控制执行条件的:
    7) 如果(if)控制器 If控制器允许用户控制其下方的测试元件(其子元件)是否运行。
    8) Switch Controller Switch控制器的作用类似于交替控制器,它在每次迭代时运行一个子元件,但控制器运行顺序不是按排列顺序,而是按switch value定义。
    9) Throughput Controller 吞吐量控制器,控制该控制器下采集器执行的频率。参考案例
    10) Runtime Controller 运行时长控制器,控制其下面的测试元件运行执行的时间
    11) Once Only Controller 仅一次控制器,控制在其下面的测试原件仅执行一次(如果它的父级是循环控制器的话,每一次循环都会执行一次)
    12) Critical Section Controller 临界部分控制器,确保这个控制器下的测试元素在一个线程中执行
    功能性:参考案例
    13) Simple Controller 简单控制器,使用率最高的控制器之一,没有特殊作用,就是单纯的为提取器和其他逻辑控制器做区分
    14) Transaction Controller 事务控制器,生成一个额外的采集器,用于测量嵌套在其内的测试元素执行的总时间
    15) Module Controller 模块控制器,执行到该模块控制器时,会执行该控制器指定的目标控制器
    16) Include Controller 包含控制器,加载一个外部的JMX文件,配合测试片段元件使用
    17) Recording Controller 录制控制器 ,是一个存放位置,在使用HTTP代理服务器的时候,所有录制的采样都被保存在录制控制器下
    可安装插件新增:安装参考
    18) bzm - Weighted Switch Controller 加权开关控制器,按照设置的权重比来执行该子元素。 参考案例
    19) jp@gc - Parameterized Controller 参数化控制器,如果需要使用不同的参数执行相同动作的重复序列,则可以使用“参数化控制器”插件 参考案例
    返回目录

    8)断言
    断言就是让程序代替人工,去判断程序响应数据是否达到预期结果
    程序更安全,高效,功能强大
    序号 名称 含义
    原生断言)
    1) 响应断言 对服务器的响应内容进行断言。参考案例
    2) Compare Assertion 比较断言,
    3) MD5Hex断言 针对参数类型为MD5Hex加密的参数的断言
    4) Size Assertion 对响应内容的大小进行断言
    5) SMIME Assertion
    8) XML Schema Assertion
    9) XML断言
    10) XPath Assertion
    12) 断言持续时间 断言响应时间的。
    10) HTML Assertion
    11) JSR223 Assertion
    12) BeanShell 断言
    返回目录

    9)监听器
    序号 名称 含义
    可安装插件新增:安装参考
    基本数据展示:参考案例
    1) 察看结果树 显示全部请求的响应和请求数据,无论成功或是失败。压力测试不要用。
    2) 用表格察看结果 表格式的察看结果树,为每个样本创建一行,使用大量内存。用于快速估计被测系统的行为。 压力测试不要用
    3) 断言结果 帮助我们显示断言的结果,不显示通过的断言。压力测试不要用。
    4) Comparison Assertion Visualizer 比较断言可视化器 ,
    5) Backend Listener 后端监听器,后端侦听器是一个异步侦听器。
    6) jp@gc - Console Status Logger 外部插件,控制台状态记录器
    7) jp@gc - Page Data Extractor 外部插件,页面数据提取程序
    8) jp@gc - Transaction Throughput vs Threads 外部插件,吞吐量和线程关系图
    聚合数据展示:参考案例
    9) 聚合报告 聚合报告为测试中的每个不同命名的请求创建一个表行。展示请求响应时间,吞吐量等数据结果。
    10) Summary Report 汇总报告,这是为测试中的每个不同名字的请求创建一个表行。和聚合报告类似,只是它使用更少的内存。
    11) Aggregate Graph 汇总图,汇总图与聚合报告类似。主要区别在于汇总图提供了一种生成条形图并将图形保存为PNG文件的简便方法。
    12) 图形结果 图形结果监听器生成一个简单的图形,用于绘制所有取样时间。压力测试不要用。
    13) Generate summary results 生成概要结果,该组件可以让结果在CMD(Windows 系统下)窗口显示。
    14) jp@gc - Graphs Generator 外部插件,图形生成器,生成多种指标数据图,为当前测试结果生成CSV / PNG。
    15) jp@gc - Synthesis Report (filtered) 外部插件,可过滤的聚合报告,综合报告是摘要报告和汇总报告之间的混合。
    文件写出:参考案例
    16) Simple Data Writer 简单数据写入器,没有图形化显示结果,更加高效的执行保存测试结果。
    17) 保存响应到文件 用来存储服务器响应数据。
    18) jp@gc - Flexible File Writer 外部插件,灵活的文件编写器,更灵活的简单数据录入。
    代码自定义和系统管理:
    19) JSR223 Listener
    20) BeanShell Listener
    21) jp@gc - PerfMon Metrics Collector 外部插件,接收的CPU使用率,存储器消耗,磁盘和网络利用率度量,并提供报告。
    22) jp@gc - AutoStop Listener 外部插件,自动停止监听,配置为如果响应时间超过某个值或错误百分比率高于定义的限制,则测试将停止执行。参考案例
    23) jp@gc - Composite Graph 外部插件,组合式监听,合并来自脚本中配置的其他侦听器的所有信息。 参考案例
    24) 邮件观察仪 设置在一定情况给不同人员发送邮件通知。参考案例
    跟随测试时间的指标监控:参考案例
    25) jp@gc - Active Threads Over Time 外部插件,测试时间和活动线程关系图
    26) jp@gc - Connect Times Over Time 外部插件,测试时间和连接时间关系图
    27) jp@gc - Bytes Throughput Over Time 外部插件,测试时间和字节吞吐量关系图
    28) jp@gc - Hits per Second 外部插件,测试时间和点击量关系图
    29) jp@gc - Response Codes per Second 外部插件,测试时间和响应代码关系图
    30) jp@gc - Response Latencies Over Time 外部插件,测试时间和响应延迟关系图
    31) jp@gc - Transactions per Second 外部插件,测试时间和事务数关系图
    32) jp@gc - JMXMon Samples Collector 外部插件,测试时间和JMX性能指标关系图
    33) jp@gc - DbMon Samples Collector 外部插件,测试时间和SQL读写性能的关系图
    跟随响应时间的指标监控:参考案例
    34) Response Time Graph 响应时间图,以图形的形式显示取样器的响应时间结果,单位是毫秒。
    35) jp@gc - Response Times Over Time 外部插件,响应时间和测试时间关系图
    36) jp@gc - Response Times Distribution 外部插件,响应时间柱状分布图
    37) jp@gc - Response Times Percentiles 外部插件,响应时间百分比
    38) jp@gc - Response Times vs Threads 外部插件,响应时间和活动线程数关系图
    返回目录

    10)函数
    Jmeter 中使用函数,打开内置函数功能模块
    选择要调用的函数,传参数,生成调用格式
    哪里需要粘哪里
    是程序中的封装单元(最小的),封装一些功能实现 易读,易维护 实现功能复用
    启动方式:

    菜单(选项)–>函数助手对话框
    Ctrl+Shift+F1
    工具栏倒数第二个 图标"记事本"

    函数的格式:.

    ${__functionName(var1,var2,var3)}

    1) ${} 函数引用固定格式和参数化相同
    2) __functionName匹配被调用的函数名称;
    3) 用圆括号包含函数的形参,例如${__time(YMD)},不同函数要求的参数也不同;
    4) 有些JMeter函数不要求参数,则可以不使用圆括号,例如${__threadNum};
    1
    2
    3
    4
    5
    6
    内容 **Jmeter中的函数列表按照字母的顺序展示依次为:**
    字母 函数 含义
    B base64Decode
    base64Encode
    BeanShell
    C changeCase
    char
    chooseRandom
    counter
    CSVRead
    D dateTimeConvert
    digest
    doubleSum
    E env
    escapeHtml
    escapeOroRegexpChars
    escapeXml
    eval
    evalVar
    F fifoGet
    fifoPop
    fifoPut
    fifoSize
    FileToString
    G groovy
    I if
    intSum
    isDefined
    isPropDefined
    isVarDefined
    iterationNum
    J javaScript
    jexl2
    jexl3
    L log
    logn
    longSum
    lowercase
    M machineIP
    machineName
    MD5
    P P
    property
    R Random
    RandomDate
    RandomFromMultipleVars
    RandomString
    regexFunction
    S samplerName
    setProperty
    split
    StringFromFile
    strLen
    strReplace
    substring
    T TestPlanName
    threadGroupName
    threadNum
    time
    timeShift
    U unescape
    unescapeHtml
    uppercase
    urldecode
    urlencode
    UUID
    V V
    X XPath
    返回目录

    学习地址:

    Jmeter官方文档:http://jmeter.apache.org/usermanual/component_reference.html#ForEach_Controller
    Jmeter外部插件集:
    https://www.cnblogs.com/baihuitestsoftware/articles/7798032.html
    全栈测试笔记:
    https://www.cnblogs.com/UncleYong/p/10779268.html#_label6
    blazemeter:
    https://www.blazemeter.com/jmeter/
    虫师:
    https://www.cnblogs.com/fnng/
    飞天小子:
    https://www.cnblogs.com/Zfc-Cjk/category/1164772.html
    老张:
    https://www.cnblogs.com/imyalost/category/846346.html
    乔治Maksimenko博客:
    https://www.blazemeter.com/blog/how-to-use-the-arrivals-thread-group-and-the-free-form-arrivals-thread-group/
    Noga Cohen博客:
    https://www.blazemeter.com/blog/performance-testing-vs-load-testing-vs-stress-testing/
    书籍:

    《全栈性能测试修炼宝典JMeter实战》

    ————————————————
    版权声明:本文为CSDN博主「paidaxing_dashu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/paidaxing_dashu/java/article/details/102677738

  • 相关阅读:
    Qt 学习之路 2(39):遍历容器
    Qt 学习之路 2(38):存储容器
    JS 格式化日期
    springboot 核心注解
    Java 生成随机数 Random、SecurityRandom、ThreadLocalRandom、Math.random()
    验证码 easy_captcha
    读过的书籍
    typora 常用快捷键
    kafka 遇到的问题
    老男孩Linux 运维
  • 原文地址:https://www.cnblogs.com/wuzm/p/12730988.html
Copyright © 2011-2022 走看看