一、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不支持IP欺骗,而LR支持。

JMeter缺点

  使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试。

二、JMeter 下载安装

1)JMeter安装

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

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

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

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

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

2)JMeter插件安装

1. 插件下载地址: http://jmeter-plugins.org/downloads/all/

2. 插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目录。

三、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的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。

setUp Thread Group类似于lr的init.可用于执行预测试操作。

2) teardown thread group.

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

tearDown Thread Group类似于lr的end.可用于执行测试后动作。

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、工作台-非测试元件-Property Display,此元件相当于是jmeter.properties的GUI。

六、帮助

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

最好的帮助是:菜单-“帮助”-“帮助”。

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

转 jmeter 实现loadrunner init end 功能的更多相关文章

  1. Jmeter和Loadrunner的异同

    1.jmeter的架构跟loadrunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程. 2.分布式中间代 ...

  2. 让你的 JMeter 像 LoadRunner 那样实时查看每秒事务数(TPS)、事务响应时间(TRT)

    熟悉 LoadRunner 的朋友一定不会对其 TPS(每秒事务数).TRT(事务响应时间) 等视图感到陌生,因为这是压力测试最为关键的两个指标.JMeter 以其开源.轻巧.灵活.扩展性高等特性赢得 ...

  3. 接口测试-postman,JMeter与LoadRunner比较

    postman是一个谷歌出的轻量级的专门测试接口的小工具~(PS:postman包括两种:Chrome浏览器插件和postman客户端,我使用的是postman客户端)虽然不如firefox的post ...

  4. Jmeter与LoadRunner的异同

    1.jmeter的架构跟loadrunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程. 2.分布式中间代 ...

  5. Jmeter和LoadRunner的区别

    1.Jmeter的架构跟LoadRunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程. 2.分布式中间代 ...

  6. Jmeter与LoadRunner的比较

    一.与Loadrunner的比较相似点 1.Jmeter的架构跟loadrunner原理一样, 都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务 ...

  7. jmeter测试文件上传功能

    最近为了完成自动化KPI开始慢慢接触jmeter,其中遇到了不少问题,今天就遇到了文件上传的问题,在这里记录下加深记忆,也可供jmeter初级使用者作为一个参考.另外论坛上已有同事发过关于jmeter ...

  8. JMeter实现登录初始化(类似LR的init函数功能实现)

    1.项目背景 在做项目的性能测试过程中,发现系统的登录功能非常慢,所以,在涉及到登录才能操作的场景,尽量避开登录操作 解决方案: 首选设置“登录并生成签名值”线程组

  9. JMeter转制LoadRunner HTTP协议脚本的小技巧

    对于Http协议的请求,除了手工编写脚本外,JMeter还提供了录制浏览器操作的功能,甚是方便.那如果手头有一堆HTTP协议的LoadRunner脚本,能不能比较快速的转制成JMeter脚本呢?其实也 ...

随机推荐

  1. 2019杭电多校第⑨场B Rikka with Cake (主席树,离散化)

    题意: 给定一块n*m的矩形区域,在区域内有若干点,每个顶点发出一条射线,有上下左右四个方向,问矩形被分成了几个区域? 思路: 稍加观察和枚举可以发现,区域数量=射线交点数+1(可以用欧拉定理验证,但 ...

  2. A Bite Of React(2) Component, Props and State

    component component:用户自己定义的元素 const element = <Welcome name="Sara" />; class Welcome ...

  3. leetcode.双指针.524通过删除字母匹配到字典里最长单词-Java

    1. 具体题目 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到.如果答案不止一个,返回长度最长且字典顺序最小的字符串.如果答案不存在,则返回空 ...

  4. [未解决]报错:ssh_exchange_identification: read: Connection reset by peer

    报错代码: ssh_exchange_identification: read: Connection reset by peer fatal: 无法读取远程仓库. 请确认您有正确的访问权限并且仓库存 ...

  5. 【目录】sql server 架构篇系列

    随笔分类 - sql server 架构篇系列 sql server 高可用镜像 摘要: 一.什么是数据库镜像 基本软件的高可用性解决方案 快速的故障转移恢复(3秒转移),低硬件成本 基于数据库级别的 ...

  6. Java中的HashMap的2种遍历方式比较

    首先我们准备数据,准备一个map Map<String, String> map = new HashMap<String, String>(); for (int i = 0 ...

  7. 开源图标字体 uiw-iconfont v1.2.6 发布,新增图标

    uiw-iconfont v1.2.6 已发布,uiw-iconfont 是从 uiw 组件库抽离出来的图标字体,基于 svg 图片生成的图标字体. 更新内容 新增 map android-o das ...

  8. Js event对象offsetX,pageX,screenX,clientX详解

       平时在测量元素位置时难以确定,下面给出具体的event对象中的各种属性,以便日后使用.   检测相对于浏览器的位置:clientX和clientY     当鼠标事件发生时,鼠标相对于浏览器左上 ...

  9. 五、Redis五种类型 - 字符串类型

    1.介绍: 字符串类型是Redis中最基本的数据类型,可以存储任何形式的字符串数据,最大容量是512MB. key 和 value 都是区分大小写的. 2.命令介绍 (1).赋值: set key v ...

  10. ubuntu openssl 生成密钥对

    一般情况下ubuntu和mac系统都会自带openssl,安装之前先测试一下,打开终端,输入openssl,如果出现以下画面,即已安装. root@jiang:/home/kevin/work/ope ...