当前位置:文档之家› Jmeter使用入门.doc

Jmeter使用入门.doc

Jmeter使用入门Jmeter简介Jmeter的基本概念百度百科:Apache JMeter是Apache组织开发的基于Java的压力测试工具。

用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器,等等。

JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。

另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。

为了最大限度的灵活性,JMeter允许使用正则表达式创建断言我们为什么使用Jmeter开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件支持接口测试,压力测试等多种功能,支持录制回放,入门简单相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试多平台支持,可在Linux,Windows,Mac上运行Jmeter安装配置Windows下Jmeter下载安装登录/download_jmeter.cgi ,根据自己平台,下载对应文件安装JDK,配置环境变量(具体步骤不做介绍)将下载Jmeter文件解压,打开/bin/jmeter.bat其他平台安装Jmeter与Windows平台一致,除入口文件不同,例如linux平台下为/bin/jmeter.shJmeter的目录结构/bin 目录(常用文件介绍)examples:目录下包含Jmeter使用实例ApacheJMeter.jar:JMeter源码包jmeter.bat:windows下启动文件jmeter.sh:Linux下启动文件jmeter.log:Jmeter运行日志文件jmeter.properties:Jmeter配置文件jmeter-server.bat:windows下启动负载生成器服务文件jmeter-server:Linux下启动负载生成器文件/docs目录——Jmeter帮助文档/extras目录——提供了对Ant的支持文件,可也用于持续集成/lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录/licenses目录——软件许可文件,不用管/printable_docs目录——Jmeter用户手册Jmeter相关插件安装:插件安装:Jmeter的插件安装很简单,只需要下载对应插件解压即可。

下载地址:/downloads/all/下载后解压放入:apache-jmeter-2.12\lib\ext\目录下重启jmeterps:数据库链接驱动如果需要需要专门下载,例如mysql需要jdbc 的jar包,地址:/downloads/file/?id=462850使用注意事项:添加第三方插件并使用后保存的jmx文件在未添加该插件的运行环境下会导致无法打开该文件并报错,请保持环境一致性。

用例生成与导出:Jmeter的用例格式为jmx文件,实际为xml格式,感兴趣可以学习下自己定制生成想要的jmx文件。

生成原则:每个功能模块为一个独立的jmx文件。

增加可维护性。

(尽量不要将一个jmx文件放入太多功能,后期维护成本会很高。

)模块的私有变量保存在模块中,多模块共有的(例如服务器ip端口等)可以考虑存在单独的文件中读取。

接口测试不要放太多线程,毕竟不是做压力测试,意义也不大。

导出方法:编写测试用例文件——保存为——确定:Jmeter常用文件类型Jmx文件文件的实际类型:xml文件样本:falsefalseSample test for demonstrating JMeter Ant build script and Schematic stylesheet11438893210003false5false1143889321000 continue111000Cfalse 1000000=100Sleep_Time =0xFF Sleep_Mask=Label=200ResponseCode=OK ResponseMessage=OKStatus=Request SamplerData=Response C=${C} ResultDataorg.apache.jmeter.protocol.java.test.JavaTest3Assertion.response_datafalse= 100Sleep_Time=0xFF Sleep_Mask=Label=200 ResponseCode=OK ResponseMessage=OKStatus=Request SamplerData=Response C=${C} Tn=${__threadNum} ResultDataorg.apache.jmeter.protocol.java.test.JavaTestJtl文件文件的实际类型:自定义定义方法:修改{jmeterhome}/bin/jmeter.profile,可选择格式:csv,xml,db# legitimate values: xml, csv, db. Only xml and csv are currently supported.#jmeter.save.saveservice.output_format=csvJmeter运行模式及参数GUI模式打开已有的jmx文件(文件——打开)点击启动按钮运行由于GUI模式本身就是带界面的,也有中文版,就不在此详细介绍了。

命令行模式依赖:配置jmeter环境变量(windows下为将${jmeterhome}/bin加入Path 变量)如果未加入环境变量,在执行的时候可以直接给出全路径或在${jmeterhome}/bin下执行命令:jmeter -n -t-l参数:-h 帮助-> 打印出有用的信息并退出-n 非GUI 模式-> 在非GUI 模式下运行JMeter-t 测试文件-> 要运行的JMeter 测试脚本文件-l jtl文件-> 记录结果的文件-r 远程执行-> 启动远程服务-H 代理主机-> 设置JMeter 使用的代理主机-P 代理端口-> 设置JMeter 使用的代理主机的端口号-j 日志文件->设置JMeter日志文件的名称实例:JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000执行步骤:JMeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录。

比如你在C:\tools\apache-jmeter-2.11\bin 目录下执行以上命令,JMeter 会去该目录下寻找test.jmx 脚本并把执行结果放在该目录。

如果你的脚本在其他目录,而且想要把执行结果放在另外文件夹,可以使用绝对路径告诉JMeter。

执行过程查看:D:\apache-jmeter-3.0\bin>jmeter -n -t D:\共享\bpintocpin.jmx -l D:\共享\test.jtlWriting log file to: D:\apache-jmeter-3.0\bin\jmeter.logCreating summariserCreated the tree successfully using D:\共享\bpintocpin.jmxStarting the test @ Fri Jun 17 15:12:21 CST 2016 (1466147541295)Waiting for possible Shutdown/StopTestNow/Heapdump message on port4445summary = 1 in 00:00:01 = 0.8/s Avg: 1178 Min: 1178 Max: 1178 Err: 0 (0.00%)Tidying up ... @ Fri Jun 17 15:12:22 CST 2016 (1466147542649)... end of run执行结果查看:GUI界面打开聚合报告在GUI界面创建一个聚合报告聚合报告界面点击浏览,选中生成的.jtl文件,打开执行过程中查看summary = 1 in 00:00:01 = 0.8/s Avg: 1178 Min: 1178 Max: 1178 Err: 0 (0.00%)jtl文件转化成html格式查看通过xslt工具转化成html格式(保存格式必须为xml格式)Jmeter常用控件测试计划(Test Plan)控件截图:理解:包含一个测试的所有内容,包含所有的控件,属性,变量。

所以一个jmx文件中只有有一个测试计划。

测试计划中可以定义变量,引入jar包,编辑测试模式等。

注意事项:可将一些不常变化的数据存入测试计划的变量,方便在测试计划内调用(例如服务器ip,端口,数据库ip等)。

函数测试模式会记录来每个请求到服务器的取样结果,如果在监听器中定义了数据写入文件,会将这些输入写入到该文件中。

同时,该模式会严重影响性能。

工作台控件截图:理解:控件的暂存区域,在测试过程中可以把暂时不用的控件放入其中,待测试完成后放回原来的位置。

注意事项:工作台中的控件不会保存在jmx文件中,所以,如果关闭jmeter,工作台中的控件会丢失。

常用控件:Property Display创建方式:右键点击工作台,添加——非测试元件——Property Display截图:功能:查看当前测试计划中的属性以及系统中的属性线程组(Threads (Users))理解:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。

注意事项:线程间变量相互独立。

一个测试计划内可以包含多个线程组。

可定义内容:取样器错误后执行的操作:继续执行,启动下一个线程,停止线程,停止测试,立刻停止线程属性:线程数量,线程启动间隔时间(0为立刻启动所有线程),单线程循环次数,线程执行顺序,是否使用调度器。

调度器配置:持续时间,启动延迟,启动时间,结束时间线程组(Thread Group):控件截图:理解:常规意义上的线程组,即虚拟用户组。

SetUp Thread Group:控件截图:理解:测试初始化操作,即线程组开始之前执行的内容。

实际使用:可用于初始化测试环境,测试数据准备等。

TearDown Thread Group:控件截图:理解:测试执行后操作,即线程组执行完成后执行的内容。

实际使用:可用于清理测试环境,清空测试数据等。

测试片段(Test Fragment)理解:与线程组同级别,但是默认不会执行。

相关主题