zoukankan      html  css  js  c++  java
  • JMeter学习(一)工具简单介绍

    一、JMeter 介绍

         Apache JMeter是100%纯JAVA桌 面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
         同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值。为了更高的适应性,JMeter允许你使用正则表达式来创建这些assertions.

    JMeter与LoadRunner比较

    JMeter 是一款开源(有着典型开源工具特点:界面不美观)测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细;很它的优点也有很多:

    •   开源,他是一款开源的免费软件,使用它你不需要支付任何费用,
    •   小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具。
    •   功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。因为它的开源性,当然你也可以根据自己的需求扩展它的功能。

    二、JMeter 下载安装

    1. http://jmeter.apache.org/下载最新版本的JMeter,解压文件到任意目录

    2. 安装JDK,配置环境变量JAVA_HOME.

    3. 系统要求:JMeter2.11 需要JDK1.6以上的版本支持运行

    4. JMeter可以运行在如下操作系统上:Unix,Windows和Open VMS.

    5. 避免在一个有空格的路径安装JMeter,这将导致远程测试出现问题。

    三、JMeter 运行

    1. 进入bin目录运行jmeter.bat启动jmeter

       注意:打开的时候会有两个窗口,JMeter的命令窗口和JMeter的图形操作界面,不可以关闭命令窗口。

    2. JMeter的classpath:

       如果你想添加其他JAR文件到JMeter的classpath中,你必须复制他们到lib目录中;

       如果你开发了一个JMeter特定组件或有效的jar文件,复制到lib目录下的ext目录中。

    3. 打开之后显示的是中文,如果你想使用其他语言,比如英文,那么通过菜单选项->选择语言->英文即可,当然转为中文也是同样操作。

    四、JMeter 测试计划元件 

    打开Jmeter页面:包括测试计划+工作台。

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

    右键单击“测试计划”弹出菜单:

    注意

    “函数测试模式”复选框,如果被选择,它会使Jmeter记录来自服务器返回的每个 取样的数据。如果你在测试监听器中选择一个文件,这个数据将被写入文件。如果你尝试一个较小的测试来保证Jmeter配置正确并且你的服务器正在返回期望 的结果,这是很有用的。这样做的后果就是这个文件会快速的增大,并且Jmeter的效率会影响。

    如果不记录数据到文件,这个选项就没有不同了。

    2、Threads (Users)线程 用户

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

    1) setup thread group 

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

    2) teardown thread group. 

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

    3) thread group(线程组).

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

    线程组:

      名称:就如字面意思,起个有意义的名字就行

      注释:

      线程数:这里选择5

      Ramp-Up Period:单位是秒,默认时间是1秒。它指定了启动所有线程所花费的时间,比如,当前的设定表示“在5秒内启动5个线程,每个线程的间隔时间为1秒”。如果你需要Jmeter立即启动所有线程,将此设定为0即可

      循环次数:表示每个线程执行多少次请求。

    3、测试片段(Test Fragment)

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

     

     

    控制器

    JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller),用这些原件来驱动处理一个测试。

    4、取样器(Sampler)

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

        在Jmeter的所有Sampler中,Java Request Sampler与BeanShell Requst Sampler是两种特殊的可定制的Sampler.

     

    5、逻辑控制器(Logic Controller)

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

     

    6、配置元件(Config Element)

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

      例如,HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的 cookie 进行管理。

         HTTP 请求默认值不会触发Jmeter发送http请求,而只是定义HTTP请求的默认属性。

     

    7、定时器(Timer)

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

     

    8、前置处理器(Per Processors)

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

     

    9、后置处理器(Post Processors)

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

     

    10、断言(Assertions)

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

     

    11、监听器(Listener)

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

     

    五、工作台

    在测试中我们可能需要暂时更改一些组件,可以把一些需要更改的组件保存在工作台中,测试完成后再恢复,但是切记:不能退出jmeter.一旦退出jmeter,工作台中的内容就会消失。

     

    1. jmeter环境准备及运行
    jmeter是Apache 组织的开放源代码项目,是一个100%纯java桌面应用,主要用于压力测试和性能测试
    jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
    安装需求:
    1.1 java版本:在JVM1.5或者更高版本上(java环境配置此处不多啰嗦)
    1.2 操作系统:可以在任何一个部署了java的系统上运行
    1.3 jmeter下载完成后,放置某个目录下,解压,只需运行bin目录下:jmeter.bat(也可以建立桌面快捷方式)就可以运行jmeter,运行界面如下

    2. jmeter学习
    2.1 基本概念
    1. 测试计划:是使用jmeter进行测试的起点,它是其它jmeter测试元件的容器
    2. 线程组:代表一定数量的并发用户,可以用来模拟并发用户的发送请求。实际的请求内容再sampler中定义,它被线程组包含,可以在测试计划--> 添加-->线程组来建立,在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。
    3. 取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP请求
    4.监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。
    5.断言:用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。
    6.定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。
    7. 逻辑控制器:允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
    8.配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
    9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

    3. 关于Aggregate Report (聚合报告)解析
    Aggregate Report是JMeter常用的一个Listener,中文被翻译为“聚合报告”。
    如果是做Web应用的性能测试,例如只有一个登录的请求,那么在Aggregate Report中,会显示一行数据,共有10个字段,含义分别如下。
    Label:每个JMeter的element(例如HTTP Request)都有一个Name属性,这里显示的就是Name属性的值
    #Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
    Average:平均响应时间——默认情况下是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间
    Median:中位数,也就是50% 用户的响应时间
    90% Line:90% 用户的响应时间
    Note:关于50% 和90% 并发用户数的含义,
    Min:最小响应时间
    Max:最大响应时间
    Error%:本次测试中出现错误的请求的数量/请求的总数
    Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了Transaction Controller时,也可以表示类似LoadRunner的Transaction per Second数
    KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

    六、帮助

    http://jmeter.apache.org/usermanual/component_reference.html

     

    到此,我们已经简单了解了jmeter的基本组成原件,我们后序的测试工作也就是使用这些元件来完成测试任务。

     

  • 相关阅读:
    汇编 | 寄存器内存访问内存中字的存储
    机器学习 | 鸢尾花分类项目实战
    机器学习 | 剖析感知器算法 & Python实现
    机器学习 | 机器学习简介
    用 shell 脚本做命令行工具扩展
    基于预计算的实时环境光照(Real-time Environment Lighting Based On Precomputation)
    Java-jvm调优文档摘要
    Probius+Kubernetes任务系统如虎添翼
    Django+Ansible构建任务中心思路
    【多线程】Android多线程学习笔记——线程池
  • 原文地址:https://www.cnblogs.com/w-20150101/p/4349612.html
Copyright © 2011-2022 走看看