JMeter学习笔记——JMeter介绍及安装使用

文中内容来源:http://www.cnblogs.com/imyalost/p/5790268.html

1、JMeter介绍

1.1、JMeter介绍

        Apache JMeter是Apache组织开发的基于Java的压力测试工具,它是功能和性能测试的工具。它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

        JMeter可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。原来JMeter是为Web/HTTP测试而设计的,但是目前已经扩展到支持各种各种的测试模块。它和用于HTTP和SQL数据库的模块一起运送。

        JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

1.2、JMeter的特性

1、开源工具,可扩展性非常好
2、高可扩展性,用户可自定义调试相关模块代码
3、能够对HTTP和FTP服务器进行压力和性能的测试,也可以对任何数据库进行同样的测试(使用JDBC)
4、精心简单的GUI设计,小巧灵活
5、完全的可移植性和100%纯java
6、完全swing和轻量组件支持(预编译的HAR使用javax.swing.*)包
7、完全多线程框架,允许通过多个线程并发取样以及单独的线程对不同的功能同时取样
8、支持脚本取样器
9、缓存和离线分析/回访测试结果
10、各种股灾统计表和可连接的计时器可提供选择

1.3、JMeter原理

        Jmeter基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,可以通过监听来记录测试结果;如果取样器中有参数化需求,可以通过配置元件或者前置处理器来完成;如果取样器中有关联需求,可以通过后置处理器来完成;如果要模拟负载场景,比如模拟多少用户,运动多长时间,可以通过线程组完成;如果要模拟并发场景,可以通过定时器来完成;如果要控制业务的执行逻辑,比如登录只运行一次,可以通过控制器来完成;

2、JMeter安装

1、在官网下载最新的JMeter:http://jmeter.apache.org/download_jmeter.cg


2、此处我下载的是JMeter4,要求jdk8以上(提前配置好java环境)。JMeter是不需要安装,因此把下载的zip包解压到想要存放的目录下即可。

3、进入解压后的文件目录..\apache-jmeter-4.0\bin下,双击jmeter.bat即可打开JMeter。


3、JMeter基础构成

Jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分:

(1)负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为。

(2)用户运行器:通常是一个脚本运行引擎,用户运行器附加在线程或进程上,根据脚本要求模拟指定的用户行为。

(3)资源生成器:用于生成测试过程中服务器、负载机的资源数据。

(4)报表生成器:根据测试中霍地的数据生成报表,提供可视化的数据显示方式。

3.1、测试计划元件

3.2、测试计划(test plan)

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

3.2.1、Threads (Users)线程

        右键单击“测试计划”弹出菜单,可以看到线程组选项。

        Setup thread group:
        一种特殊类型的线程,可用于执行预测试操作。即执行测试前进行定期线程组的执行。
        Teardown thread group:
        一种特殊类型的线程,可用于执行测试后动作。即执行测试结束后执行定期的线程组。
        以上两个线程组,举个例子:loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块,与其对应。
        Thread group:

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

3.2.2、控制器

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

       在新建的线程组上,点击右键。

                     

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

3.2.2.2逻辑控制器(Logic Controller)

                         

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

3.2.3、测试片段(test fragment)

                                    

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

3.2.4、配置元件(Config Element)

                      

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

3.2.5、定时器(Timer)

                        

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

3.2.6、前置处理器(Per Processors)

                           

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

3.2.7、后置处理器(Post Processors)

                      

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

3.2.8、断言(Assertions)

                           

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

3.2.9、监听器(Listener)

                    

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值