您现在的位置是:主页>文章>压力测试工具 Jmeter 网站首页

压力测试工具 Jmeter

1:Jmeter简介 

        Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务器程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。

那JMeter可以做什么?

    1:压力测试及性能测试;

    2:数据库测试;

    3:Java程序的测试;

    4:HTTP及FTP测试;

    5:Web Service测试;

    等等

2:JMeter的安装

    1:路径:http://jmeter.apache.org/

    2:点击左边栏的Download Releases

    3:选择Binaries,下载 apache-jmeter-3.0.tgz

    4:下载解压后,运行bin目录下的jmeter.bat

    注意:安装jmeter之前需要安装jdk环境

    

3:Jmeter常用组件

测试计划:用来描述一个性能测试,包含与本次性能测试所有相关的功能。

线程组:所有的任务都是基于线程组;

虽然有三个添加线程组的选项,名字不一样, 创建之后,其界面是完全一样的。
usetUpThreadGroup:一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。
uteamDownThreadGroup:一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。
线程组:这个就是我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。


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

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

    取样器(Sampler)

    定义:Sampler:取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler .

     如 HTTP Request Sampler 、 FTP  Request Sampler 、TCP  Request Sampler 、 JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。

配置元件(Config Element)

        定义:用于提供对静态数据配置的支持,初始化默认值和变量,以便后续采样器使用。

CSV Data Set config 

可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改 Sampler的默认数据。

前置处理器(Pre Processors)

    定义:前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。
         例如,HTTP URL重写修复符则可以实现URL重写,当URL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。


后置处理器(Post Processors)

    定义:后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据


逻辑控制器(Logic Controller)

    定义:逻辑控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序.

    



定时器(Timer)

    定义:定时器会让作用域内的每一个采样器都在执行前等待一个固定时长,如果不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。如果为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。

    比较常用的是固定定时器和高斯随机定时器

    

断言(Assertions)

    定义:用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符.

    较为常用的是响应断言

监听器(Listener)

    定义:监听器提供了对JMeter在测试期间收集到的信息的访问方法。用来对测试结果数据进行处理和可视化展示的一系列元件。 "图形结果"监听器会将系统响应时长绘制在一张图片之中。"查看结果树"监听器会展示采样器请求和响应的细节,还可以将测试数据导入到文件之中,以供后续分析。

    图形结果、查看结果树、聚合报告、用表格察看结果都是我们经常用到的元件。

    

4:组件的执行顺序

    测试计划的元素执行是有序的,通过以下方式执行:
    1–配置元件(Config Element)
    2–前置处理器(Pre Processors)
    3–定时器(Timer)
    4–取样器(sampler)
    5–后置处理器(Post Processors,只在有结果可用情况下执行)
    6–断言(Assertions,只在有结果可用情况下执行)
    7–监听器(Listener,只在有结果可用情况下执行)

5:特别说明

    5.1:聚合报告

    


Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值

#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100

Average:平均响应时间——默认情况下是单个 Request 的平均响应时间.

Median:中位数,也就是 50% 用户的响应时间(如果把响应时间从小到大顺序排序,那么50%的请求的响应时间在这个范围之内。)

90% Line:90% 用户的响应时间(如果把响应时间从小到大顺序排序,那么90%的请求的响应时间在这个范围之内。)

Min:最小响应时间

Max:最大响应时间

Error%:本次测试中出现错误的请求的数量/请求的总数

Throughput:吞吐量——表示每秒完成的请求数(Request per Second)

KB/Sec:每秒从服务器端接收到的数据量

    5.2:Data Set Config

    Filename --- 参数项文件
    File Encoding --- 文件的编译方法,一般为空
    Vaiable Names --- 文件中各列所表示的参数项;各参数项之间利用逗号分隔;参数项的名称应该与HTTP Request中的参数项一致。
    Delimiter --- 如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;
    Recycle on EOF? --- True=当读取文件到结尾时,再重头读取文件;False=当读取文件到结尾时,停止读取文件
    Stop thread on EOF? --- 当Recycle on EOF?一项为False时起效;True=当读取文件到结尾时,停止进程

6:参考文档

Jmeter学习
Jmeter组件执行顺序与作用域
JMeter入门:01JMeter总体介绍及组件介绍
LoadRunner 没有告诉你的JMeter从入门到精通
Top