JMeter 使用入门

http://www.ltesting.net/uploads/zazhi/zhongwen/performancetesting/jmeter.pdf

最近在公司想做下压力或负载测试,当然我首先想到的就是用JMeter,以前也认识过它,可能它能满足基本测试需求。使用之前要先认识下它。

  先到官方网站下载最新版本:http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi,目前最新版是jakarta-jmeter-2.7。

  运行bin/jmeter.bat后,先来了解几个术语:

  1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。

  2、取样器(Sampler):可以认为所有的测试任务都由取样器承担,有很种,如:HTTP 请求。

  3、断言:对取样器返回的请求结果给出判断,是否正确。

  4、monitor:它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。

  先这些概念。下面来试用一下:

  添加线程组,右击测试计划->添加->线程组,线程数为2,Ramp-Up=0,循环次数=5;添加取样器:右击线程组->添加->Sample->HTTP 请求,Web服务器localhost,端口8080,协议http,路径/index.jsp;添加monitor,右击线程组->添加->monitor->图形结果(第二个),然后再添加一个Summary report monitor。

  然后,运行->启动,在两个monitor中都可以看到一些内容,如:

JMeter 使用入门_第1张图片

  JMeter 的主要测试组件总结如下:

  1、测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。

  2、线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。

  3、monitor负责收集测试结果,同时也被告知了结果显示的方式。

  4、逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

  5、断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

  6、配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。

  7、前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

  8、定时器负责定义请求之间的延迟间隔。


利用JMeter进行Web测试

  JMeter介绍

  脚本录制

  运行JMeter进行测试

  JMeter主要组件介绍

  参数化设置

  动态数据关联

  使用命令行运行JMeter脚本

  利用XSLT分析JMeter结果文件

  JMeter介绍

  JMeter, 一个100%的纯Java桌面应用,它是Apache组织的开放源代码项目,它是功能和性能测试的工具。JMeter可以用于测试静态或者动态资源的性能 (文件、Servlets、Perl脚本、Java对象、数据库和查询、ftp服务器或者其他资源)。原先Jmemer是为Web/HTTP测试而设计 的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库 中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换 的界面用来定制数据显示,测试同步及测试的创建和执行。

  Jmeter下载地址:http://jakarta.apache.org/jmeter/usermanual/index.html

  JMeter 的特性:

  a) 能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。

  b) 完全的可移植性和100% 纯Java。

  c) 完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。

  d) 完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。

  e) 精心的GUI设计允许快速操作和更精确的计时。

  f) 缓存和离线分析/回放测试结果。

  g) 高可扩展性:

  h) 可链接的取样器允许无限制的测试能力。

  i) 各种负载统计表和可链接的计时器可供选择。

  j) 数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。

  k) 具有提供动态输入到测试的功能(包括Javascrīpt)。

  l) 支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。

  脚本录制

  利用BadBoy进行脚本录制

  利用BadBoy录制JMeter脚本(1)

  通过Badboy的官方网站(http://www.badboy.com.au)下载Badboy的最新版本;

  安装Badboy。安装过程同一般的Windows 应用程序没有什么区别,安装完成后你可以在桌面和Windows开始菜单中看到相应的快捷方式——如果找不到,可以找一下Badboy安装目录下的Badboy.exe 文件,直接双击启动Badboy;

  启动Badboy,你可以看到下面的界面。

  利用BadBoy录制JMeter脚本(2)

  在地址栏(图中红色方框标注的部分)中输入你需要录制的Web应用的URL——这里我们以http://www.baidu.com 为例 。

  点击 开始录制 按钮(图中蓝色圆圈标注的部分)开始录制。

  开 始录制后,你可以直接在Badboy内嵌的浏览器(主界面的右侧)中对被测应用进行操作,所有的操作都会被记录在主界面左侧的编辑窗口中(图中黄色方框标 注的部分)——在这个试验中,我们在baidu的搜索引擎中输入 JMeter 进行搜索。不过录制下来的脚本并不是一行行的代码,而是一个个Web对象——这有点像LoadRunner的VuGen中的Tree View视图;

  录制完成后,点击工具栏中的“停止录制”按钮(图中紫色方框标注的部分),完成脚本的录制

  利用BadBoy录制JMeter脚本(3)

  选择“File -> Export to JMeter”菜单,填写文件名“baidu.jmx”,将录制好脚本导出为JMeter脚本格式。也可以选择“File -> Save”菜单保存为Badboy脚本;

  启动JMeter并打开刚刚生成的测试脚本,就可以用JMeter进行测试了

  利用JMeter的代理服务器功能进行脚本录制

  利用JMeter的代理服务器功能

  进行脚本录制(1)

  在测试计划中添加线程组,在线程组中添加逻辑控制器-录制控制器。

  在工作台中添加非测试元件-HTTP代理服务器。

  端口:即代理服务器的监听端口,我们设为8080。

  目标控制器选择:测试计划>线程组;

  分组选择:每个组放入一个新的控制器。

  在HTTP代理服务器中添加定时器-高斯随机定时器(用于告知Jmeter来在其生成的HTTP请求中自动的增加一个定时器)。定时器将会使相 应的的取样器被延迟。 延时的规则是,在上一个访问请求被响应并延时了指定的时间后,下一个被定时器影响的取样访问请求才会被发送出去。

  如果在代理服务器元件里使用了高斯随机定时器,就应该在其中的固定延迟偏移(Constant Delay Offset)设置项里添上${T}(用于自动引用纪录的延迟时间)。

  代理服务器配置好以后,点击启动,代理服务器就会开始记录所接受的HTTP 访问请求。

  打开浏览器,打开Internet选项,将局域网(LAN)设置中的代理服务器设为:localhost,端口为在代理服务器中设的端口:8080。

  在浏览器地址栏中输入地址并进行相关的操作进行录制,录制完成后, 停止HTTP 代理服务器; 在录制控制器元件上单击右键将记录的元件保存为一个文件用于以后重用,另外,不要忘了恢复浏览器的代理服务器设置。

  运行Jmeter进行测试(1)

  脚本录制完毕后,就可以运行JMeter来进行我们的测试了。

  到JMeter的网站http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi

  下载JMeter的最新版本,将zip文件解压缩到D:/JMeter,运行D:/JMeter/bin下的jmeter.bat即可。

  打开JMeter会有一个默认的测试计划,点击文件-打开,选中录制的脚本文件如:WebXSample_addUser.jmx,打开脚本进行测试。

  在线程组上添加监听器-聚合报告(用于分析测试结果)后,点击运行-启动,开始测试,测试完毕后在聚合报告中就可以看到测试结果。一个简单的测试计划就完成了。

你可能感兴趣的:(JMeter 使用入门)