zoukankan      html  css  js  c++  java
  • 【Jmeter学习】Jmeter简易教程

    http://www.51testing.com/html/54/n-854654.html

    Jmeter目录

    1、jmeter目录解析

    • bin 包含启动、配置等相关命令

    • docs 官方本地文档目录

    • extras 辅助库

    • lib 核心库,包含JMeter用到的各种基础库和插件

    • licenses 包含non-ASF软件的许可证

    • printable_docs 可打印版本文档目录

    • LICENSE JMeter许可说明

    • NOTICE JMeter简单信息说明

    • README.md JMeter官方基本介绍

    下面我们重点看一下bin目录

    bin目录下我们最关注几个文件:

    • jmeter.properties JMeter核心配置文件,各种配置基本在这完成

    • log4j.conf JMeter日志配置管理

    • jmeter.log JMeter运行日志记录,什么输出信息、警告、报错都在这里进行了记录

    • jmeter.sh linux下jmeter启动文件

    • shutdown.sh Linux下jmeter关闭文件

    • stoptest.sh Linux下jmeter测试停止文件

    • jmeter-server Linux下jmeter服务器模式启动文.件

    注:每一个.sh文件都对应一个.cmd文件,.cmd是Windows下的对应功能的文件。

    2、安装插件管理

    从http://www.jmeter-plugins.org/install/Install/ 下载插件管理包,

    将下载的包放至jmemter解压根目录的lib/ext下即可。

    页面组件

    测试计划(Test Plan ):

    用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就说性能测试的所有内容是于基于一个计划的。

    下面看一下一个计划下面都有哪些主要的功能模块(右键单击“测试计划”弹出菜单)。

    线程 用户(Threads Users)

    虽然有三个添加线程组的选项,名字不一样, 创建之后,其界面是完全一样的。之前的版本只有一个线程组的名字。现在多一个setUp theread Group 与terDown Thread Group

    1) setup thread group  

      一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。

    2) teardown thread group.  

      一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。

      可能你还是不太理解他们与普通的线程组有什么不同。 如果您用过junit,想必你不会对setup ,teardown这2个字眼陌生。 即时没用过,也没关系。 熟悉loadrunner的应该知道,loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块。 那么这里 setup thread group 和 teardown thread group 就是分别指这两部分。  其实从本质上来看,他们并没有什么不同。

    3) thread group(线程组).

         这个就是我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。

    测试片段(Test Fragment)

      测试片段是在2.5版本之后新加的一个选项。

      测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。

    取样器(Sampler)

        取样器(Sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler ,如 HTTP Request Sampler 、 FTP  Request Sample 、TCP  Request Sample 、JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。 

    逻辑控制器(Logic Controller)

      逻辑控制器,包括两类元件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。

    配置元件(Config Element)

      配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改Sampler的默认数据。 

    定时器(Timer)

       定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。

    前置处理器(Per Processors)

        用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。

    后置处理器(Post Processors)

      用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath  Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据。

    断言(Assertions)

       断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。

    监听器(Listener)

       这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。 图行结果、查看结果树、聚合报告。都是我们经常用到的元件。

    Jmeter配置元件

    HTTP Cookie Manager 用来存储浏览器产生的用户信息

    Clear Cookies each Iteration:每次迭代请求,清空cookies,GUI中定义的任何cookie都不会被清除。
    Implementation:默认HC4CookieHandler
    Cookie Policy:将用于管理Cookie的cookie策略
     
    HTTP Header Manager 信息头管理

    常用请求头

    HTTP Cache Manager 缓存管理器(模拟浏览器行为)

    Clear cache each iteration
    每次请求清除缓存
    Use Cache Control/Expires header when processing GET requests
    如果选择了“ 使用Cache-Control / Expires头 ”选项,则会根据当前时间检查Cache-Control / Expires值。如果请求是GET请求,并且时间戳在将来,则采样器将立即返回,而不从远程服务器请求URL。这是为了模拟浏览器行为

    HTTP Request Defaults (请求默认值)

    basic
    基本信息,默认http请求的值,如server、ip、port、Protocol甚至path、parameters,都可以设置
    下面新增的http请求,只需要填写请求的关键数据即可,如path、parameters
    注:请求默认值中可以设置代理服务器!设置成功之后可以用fidder或者其它的抓包工具反向抓取jmeter的请求!

    请求默认值中设置了代理,那么后面所有的请求都会被抓取。所以也可以在单独的请求中设置代理

     
    JDBC Connection Configuration (数据库配置元件)

    Variable Nam

    数据库连接池的名称,因为一个测试计划可以有多个JDBC Connection Configuration,每个可以取不同的名称。在jdbc request中通过这个名称选择合适的连接池进行使用。

    Connection Pool Connetion:连接池参数配置,基本保持默认,根据需要进行修改;
    Max Number of Connections: 最大连接数;如果做性能时,建议填0,如果默认为10,最大只能连接10个线程;
    Max Wait(ms):最大等待时间,单位毫秒;
    Time Between Eviction Runs(ms):有空闲的线程数,释放不使用的线程;
    Auto Commit:自动提交,默认为true,如修改数据库时,自动commit;
    Transaction isolation:事务隔离(默认);
    Connection Validation by pool:验证连接池;
    Test While idle:
    Soft Min Evictable Idle Time(ms):
    Validation Query:
    Database Connection Configuration:数据库连接配置:
    Database URL:数据库连接url;jdbc:mysql://localhost:3306/dbname,ipaddr:3306
    JDBC Driver class:数据库驱动;com.mysql.jdbc.Driver
    Username:用户
    Password:密码
     
    附上一些常用的,没用到的数据库连接配置(详情见官网:http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration):
    MySQL
    Driver class
    com.mysql.jdbc.Driver
    Database URL
    jdbc:mysql://host[:port]/dbname
    PostgreSQL
    Driver class
    org.postgresql.Driver
    Database URL
    jdbc:postgresql:{dbname}
    Oracle
    Driver class
    oracle.jdbc.OracleDriver
    Database URL
    jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
    Microsoft SQL Server (MS JDBC driver)
    Driver class
    com.microsoft.sqlserver.jdbc.SQLServerDriver
    Database URL
    jdbc:sqlserver://host:port;DatabaseName=dbname
     
    示例:
     CSV Data Set Config (参数化)
    在使用JMeter的时候,往往需要参数化一些数据,常用到的就是CSV Data Set Config

    参数引用

    原文转载自:https://www.cnblogs.com/Zfc-Cjk/p/8975683.html

    同类文章可参考:http://www.cnblogs.com/imyalost/p/7062440.html

    1、解释什么是JMeter?
    JMeter是一款Java开源工具,用于性能负载测试。它旨在分析和衡量Web应用程序和各种服务的性能和负载功能行为。

    2、说明JMeter的工作原理?
    JMeter就像一群将请求发送到目标服务器的用户一样。它收集来自目标服务器的响应以及其他统计数据,这些统计数据通过图形或表格显示应用程序或服务器的性能。

    3、说明可以在哪里使用函数和变量?
    变量和函数可以写入任何测试组件的任何字段。

    4、提到JMeter中的正则表达式是什么?
    根据模式(patterns),使用正则表达式搜索和操作文本。JMeter可用于解释在整个JMeter测试计划中使用的正则表达式或模式的形式。

    5、解释什么是采样器(Samplers)和线程组(Thread group)?
    线程组:对于任何测试计划,线程组元件都是JMeter的开始部分。这是JMeter的重要元件,你可以在其中设置多个用户和时间来加载线程组中给出的所有用户。
    采样器:采样器生成一个或多个采样结果;这些采样结果具有许多属性,例如经过时间、数据大小等。采样器允许JMeter通过采样器将特定类型的请求发送到服务器,线程组决定需要发出的请求类型。一些有用的采样器包括HTTP请求、FTP请求、JDBC请求等等。

    6、使用JMeter构建的测试计划是否依赖于操作系统?
    通常,测试计划以XML格式保存,因此与任何特定的操作系统都没有关系。它可以在JMeter可以运行的任何操作系统上运行。

    7、提到JMeter中处理器的类型是什么?
    JMeter中的处理器类型为:①预处理器;②后处理器。

    8、解释什么是预置处理器元件?列出一些预处理器元件?
    预置处理器是在采样器执行之前发生的事情。为了在执行采样请求之前对其进行配置,或者用于更新未从响应文本中提取的变量,需要使用预处理器元件。
    一些预处理器元件是:

    • HTTP URL重写修饰符
    • HTTP用户参数修饰符
    • HTML链接解析器
    • BeanShell PreProcessor

    9、是否提到测试元件的执行顺序?
    测试计划元件的执行顺序为:
    配置元件 -> 前置处理器 -> 计时器 -> 取样器 -> 后置处理器 -> 断言 -> 监听器

    10、正则表达式中的“包含”和“匹配”表示什么?
    在正则表达式中,contains表示正则表达式与目标的至少一部分匹配。匹配表示正则表达式匹配整个目标。如“alphabet”与“al.*t”匹配。

    11、解释什么是配置元件?
    配置元件与采样器并行工作。要设置默认值和变量以供采样器以后使用,可以使用配置元件。在合并范围的开始,将先处理这些元件,然后再处理同一合并范围中的任何采样器。

    12、说明JMeter中的计时器是什么,计时器的类型是什么?
    默认情况下,JMeter线程将连续发送请求而不会暂停。为了在请求之间暂停,使用了计时器。使用的一些计时器包括恒定计时器,高斯随机计时器,同步计时器,均匀随机计时器等。

    13、解释什么是测试片段?
    测试片段也是一种元件,例如“线程组”元件。唯一的区别是,除非模块控制器或包含控制器引用了测试片段,否则不会实现测试片段。

    14、解释什么是JMeter中的断言?断言的类型有哪些?
    断言有助于验证被测服务器是否返回了预期结果。
    JMeter中一些常用的断言是:

    • 响应断言
    • 持续时间断言
    • 大小断言(Size Assertion)
    • XML断言
    • HTML断言

    15、说明如何减少JMeter中的资源需求?
    ①使用非GUI模式执行测试,如 jmeter –n –t test.jmx –l test.jtl
    ②在加载期间,测试不使用“查看结果树”或“查看表中的结果”监听器,仅在脚本编写阶段使用它们;
    ③不要使用功能模式;
    ④与其使用大量相似的采样器,不如在循环中使用相同的采样器,并使用变量来改变采样;

    16、解释如何在JMeter中执行尖峰测试(Spike testing)?
    通过同步,可以实现计时器JMeter尖峰测试。同步计时器将阻塞线程,直到阻塞了特定数量的线程,然后将它们全部释放,从而产生了巨大的瞬时负载。
    小贴士:尖峰测试 也可以称为冲击测试,反复冲击服务器。指的是在某一瞬间或者多个频次下用户数和压力陡然增加的场景。

    17、解释如何在JMeter中捕获身份验证窗口的脚本?
    通常,可以通过录制来捕获脚本:
    首先,必须在Testplan(测试计划)中使用 Threadgroup,然后在 Workbench(工作台) 中使用HTTP代理服务器;
    之后,在“全局设置”框中设置端口号(如8911),然后在 IE高级选项>连接>局域网设置中 开启 代理设置,并将地址修改为localhost,端口改为8911。
    然后,HTTP代理服务器中选择 目标控制器 Testplan>Threadgroup,然后启动HTTP代理服务器并运行应用进行登录。

    18)列出几个JMeter监听器?
    一些JMeter监听器是:

    • 集合报告
    • 汇总报告
    • 查看结果树
    • 用表格查看结果
    • 图形结果
    • BeanShell Listener
    • 摘要报告等

    19、什么是分布式负载测试?如何实现?
    分布式负载测试是整个系统可以用来模拟大量用户负载的过程。通过使用主从配置,JMeter可以进行分布式负载测试。

    20、在JMeter中是否有必要显式调用嵌入式资源?
    你可以消除所有嵌入式资源的显式调用。请求底部有一个复选框,显示“检索嵌入式资源(retrieve embedded resources.)”。它会捕获所有CSS、JPG等。这是在Web应用中查找资源和断开链接的绝妙方法。

    21、解释计时器(Timer)在JMeter中的作用是什么?
    在计时器的帮助下,JMeter可以延迟线程发出的每个请求之间的时间。它可以解决服务器的过载问题。

    22、解释什么是后置处理器?
    要在发出请求后执行任何操作,则使用后处理器。例如,如果JMeter向Web服务器发送HTTP请求,并且如果你希望JMeter在Web服务器显示错误时停止发送请求,那么你将使用后处理器执行此操作。

    23、JMeter为性能测试提供什么好处?
    JMeter提供性能测试方面的优势,例如:

      • 它可以用于测试静态资源和动态资源的性能;
      • 它可用于测试网站最大并发用户数,从而分析定位网站瓶颈;
      • 它提供了性能报告的图形化分析;
    作者:gtea 博客地址:https://www.cnblogs.com/gtea
  • 相关阅读:
    关于我成为电脑维修社团一员那些事
    [算法相关]二进制分组
    [题解]陌上花开
    [题解]UVA10917 Walk Through the Forest
    [字符串相关]后缀自动机(SAM)- 一
    [字符串相关]后缀数组
    [字符串相关]Aho-Corasick 自动机
    [算法入门]线性基
    [数据结构]可持久化并查集
    [数据结构]可持久化线段树
  • 原文地址:https://www.cnblogs.com/gtea/p/13457534.html
Copyright © 2011-2022 走看看