您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > jmeter学习笔记
1性能测试工具---jmeter一、jmeter简介jmeter是啥?ApacheJMeter是apache组织的开放源代码项目,是一个纯java桌面应用,用于压力测试和性能测量。它最初被设计用于web应用测试但后来扩展到其他测试领域。Jmeter有啥用?ApacheJMeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java对象,数据库和查询、FTP服务器或是其他资源)的性能测试。JMeter可以用于分析不同压力条件下的总体性能情况。也可以使用JMeter提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器,脚本,对象。Jmeter与LR有啥区别?LoadrunnerJmeter安装卸载比较麻烦,文件体积大比较简单,文件体积小脚本录制支持支持参数化支持支持集合点支持支持检查点支持支持关联支持支持多协议支持支持IP欺骗支持不支持多线程支持支持报告生成与导出支持支持测试成本商业软件,成本高开源软件,测试成本低二、Jmeter安装配置1.安装配置好JDK(java环境)2.Jmeter下载地址下载zip包,下载后,解压文件到任意目录,避免在一个有空格的路径安装JMeter,这将导致远程测试出现问题23.Jmeter启动:解压,bin目录下运行ApacheJMeter.jar进行启动。4.Jmeter文件目录介绍◆bin:可执行文件目录◆docs:接口文档目录(index文件是jmeter说明书docs/api/index.html)◆extras:扩展插件目录◆lib:所用到的插件目录,里面全是jra包,JMeter会自动在JMETER_HOME/lib和ext目录下寻找需要的类◆Licenses:Jmeter证书目录◆printable_docs:用户使用手册三、Jmeter功能概要1.jmeter工具组成部分:◆资源生产器:用于生产测试过程中服务器、负载机的资源代码。(LR中的VnGen)◆用户运行器:通常是一个脚本运行引擎,根据脚本要求模拟指定的用户行为。(LR中的controller)◆报表生产器:根据测试中实时地的数据生产报表,提供可视化的数据显示方式。(LR中的analysis)◆负载发生器:用于产生负载,通常以多线程或者多进程的方式模拟用户行为。(LR中的LoadGenerators)TestPlan(测试计划):用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就说本次的性能测试的所有内容是基于一个计划。(相当于LR的一个测试场景)2.Threads(Users)线程(用户)A.Setupthreadgroup一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。类似LR的int()B.Teardownthreadgroup一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期线程组。类似LR的end()C.Threadgroup(线程组)Bin目录文件●jmeter.bat:windows的启动文件●jmeter.log:日志文件●jmeter.sh:linux的启动文件●jmeter.properties:系统配置文件●jmeter-server.bat:windows分布式测试要用到的服务器配置●jmeter-server:linux分布式测试要用到的服务器配置3这个就是我们通常添加运行的线程。可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。类型LR的action()3.测试片段(TestFragment)测试片段元素是控制器上的一个特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。以下是线程组的8类可执行元件4.配置元件(ConfigElement)配置元件(configelement)用于提供静态数据配置的支持。如CSVDataSetconfig可以将本地数据文件形成数据池(DataPool)。5.定时器(Timer)定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的首端。类似于LoadRunner里面的“思考时间”。JMeter定义了BeanShellTimer、ConstantThroughputTimer、固定定时器等不同类型的Timer。6.前置处理器(PerProcessors)用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTPURL重写修复符则可以实现URL重写,当URL中有sessionID一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID。7.后置处理器(PostProcessors)用于对sampler发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据类型(类似LR测试工具中的关联概念)8.断言(Assertions)断言用于检测测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。9.监听器(Listener)是用来对测试结果数据进行处理和可视化展示的一系列元件。图形结果、查看结果树、聚合报告。都是我们经常用到的元件。注意:这个监听器可不是用来监听系统资源的元件。Jmeter有两种类型的控制器:取样器(sampler)和逻辑控制器(LogicController),用这些元件来驱动处理一个测试。10.取样器(sampler)取样器(sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,jmeter原生支持多种不同的sampler,如HTTPRequestSampler、FTPRequestSampler、TCPRequestSampler、JDBCRequestSampler等,每一种不同类型的sampler可以根据设置的参数向服务器发出不同类型的请求。411.逻辑控制器逻辑控制器,包括两类元件,一类是用于控制testplan中的sampler节点发送请求的逻辑顺序控制器,常用的有如果(If)控制器、SwitchController开关控制器、RuntimeController、循环控制器等。另一类是用来组织可控制sampler节点的,如事务控制器、吞吐量控制器。四、Jmeter脚本录制1.jmeter脚本录制Http请求+查看结果数代理服务器操作步骤◆创建一个线程组(右键点击“测试计划”“添加””线程组“)◆创建一个http代理服务器(右键点击“工作台”“添加””非测试元件“”http代理服务器”)TipHTTP服务器代理设置---分组详解★不对样本分组:所有请求全部罗列★在组间添加分隔符:加入一个虚拟的以分割线命名的动作。★每个组放入一个新的控制器:执行时按控制器给输出结果★只存储每个组的第一个样本:保存对于一次url请求设置完后要启动代理服务器,录制完成后记得关闭。◆IE“internet属性””连接“”局域网设置“◆在浏览器里对指定的页面进行访问。录制完成后,把浏览器的代理服务器的勾选去掉2.Badboy脚本录制下载地址是一个强大的工具,旨在帮助测试和开发复杂的动态应用。Badboy包括一个简5单而全面的捕获/回放界面,强大的负载测试的支持,详细的报告图表等等,从而使web测试和开发变得更加容易关于录制时脚本错误提示访问者所使用的浏览器不能完全支持页面里的脚本,形成”脚本错误“。遇到”脚本错误“时一般会弹出一个非常难看的脚本运行错误警告窗口,而事实上,脚本错误并不会影响网站浏览,因此这一警告可谓多此一举。只要关闭警告则可以在浏览器的工具菜单选择Internet选择,然后单击高级属性页。进入到浏览标签,并选中”禁止脚本调试“复选框,以后就不会再收到这些警告了。脚本录制完成后,导出为ExporttoJmeter五、badboy检查点与参数化检查点设置:选择要检查的文字,然后在Tools–setp1里添加断言,再回放参数化,在请求搜索关键字的部分进行参数化678六、jmeter元件作用域和执行顺序1.元件作用域8类可被执行的元件(测试计划与线程组不属于可执行元件),这些元件中,取样器(sampler)是典型的不与其他元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其他元件(配置元件、定时器、断言、监听器)需要与取样器(sampler)等元件交互。在jemter中,元件的作用域是靠测试计划的树型结构中元件的父子关系来确定的,作用域的原则是:▪取样器(sampler)元件不和其他元件相互作用,因此不存在作用域的问题。▪逻辑控制器(LogicController)元件只对其子节点中的取样器和逻辑控制器作用。▪除取样器和逻辑控制器元件外,其他6类元件,如果是某个取样器的子节点,则该元件对其父子节点起作用。如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。9最后一个查看结果数的作用域为循环控制器下面所有取样器的结果2.元件执行顺序▶(1)配置元件(configelements)▶(2)前置处理程序(pre-processors)▶(3)定时器(timers)▶(4)取样器(samplers)▶(5)后置处理程序(post-processors)▶(6)断言(assertions)▶(7)监听器(listeners)关于执行顺序,有两点需要注意:前置处理器、后置处理器和断言等元件功能对取样器作用,因此,如果再它们的作用域内没有任何取样器,则不会被执行。如果再同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。七、jmeter性能测试基础实践1.测试需求:测试20个用户访问时的平均响应时间。2.测试步骤:第一步:添加线程组线程组主要包含三个参数:线程数、准备时长(Ramp-UpPeriod(inseconds))、循环次数。♢线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设计多少虚拟用户数在这里也就是设置多少个线程数。♢准备时长(单位为s):设置的虚拟用户数需要多长时间全部启动。如果线程数为20,准备时长为10,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。♢循环次数:每个线程发送请求的次数。如果线程数为20,循环次数为5,那么每个线程QPS:QueryPerSecond每秒查询率。是一台查询服务器每秒能够处理的查询次数。在因特网上,作为域名系统服务器的性能经常用每秒查询率来衡量。10发送5次请求,总请求数为20*5=100。如果勾了“永远“,那么所有线程会一直发送请求,直到选择停止运行脚本。第二步:增添HTTP请求一个HTTP请求有着许多的配置参数,下面将详细介绍:♥名称:本属性用于标识一个取样器,建议使用一个有意义的名称。♥注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。♥服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。♥端口号:目标服务器的端口号,默认值为80。♥Timeouts(milliseconds):设置请求和响应的超时时间。♥协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https,默认值是http。♥方法:发送http请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。♥Contentenconding:内容的编码方式,默认值为iso
本文标题:jmeter学习笔记
链接地址:https://www.777doc.com/doc-6493670 .html