收藏 分销(赏)

jmeter性能测试培训PPT.ppt

上传人:天**** 文档编号:10509068 上传时间:2025-05-31 格式:PPT 页数:51 大小:1.75MB 下载积分:14 金币
下载 相关 举报
jmeter性能测试培训PPT.ppt_第1页
第1页 / 共51页
jmeter性能测试培训PPT.ppt_第2页
第2页 / 共51页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,JMeter,基础培训,2011,年,7,月,1,2,目录,JMeter,介绍,JMeter,介绍,谁在使用,JMeter,JMeter,与,Loadrunner,的对比,JMeter,在测试工作的应用,JMeter,二次开发,2,3,JMeter,介绍,JMeter,是基于,Java,的,开放源代码的性能测试工具,能够对,HTTP,和,FTP,服务器进行压力和性能测试,可以对任何数据库进行同样的测试(通过,JDBC,),各种负载统计表和可链接的计时器可供选择,缓存和离线分析,/,回放测试结果,完全多线程框架,高可扩展性,免费,/,开源,3,4,谁在使用,JMeter,4,谁在使用,JMeter,移动梦网搜索项目,盘古搜索项目,5,5,6,目录,JMeter,介绍,JMeter,与,Loadrunner,的对比,支持的协议对比,功能对比,使用对比,JMeter,在测试工作的应用,JMeter,二次开发,6,7,支持的协议对比,JMeter,支持的协议,Web,(,HTTP/HTTPS,),,SOAP,,,FTP,,,Database,(,JDBC,),,LDAP,JMS,,,Mail(POP3/IMAP),,,JAVA,Loadrunner,支持的协议,WEB(Http/Html)、FTP、LDAP、Palm、Web/WinsocketDual Protocol,SQL Server、MS ODBC、Oracle、DB2、Sybase CTlib、Sybase DBlib、Domain Name Resolution(DNS)、Windows Socket,COM/DCOM、Corba-Java、Rmi_Java EJB、Rmi_Java,Oracle NCA、SAP-Web、SAPGUI、SAPGUI/SAP-Web Dual Protocol、PropleSoft_Tuxedo、Siebel Web、Siebel-DB2 CLI、Sieble-MSSQL、Sieble Oracle,JMeter,支持的协议相对,Loadrunner,较少,但是可以通过二次开发来实现,7,8,JMeter,与,Loadrunner,功能对比,对比项,JMeter,Loadrunner,支持的协议,少,多,结果报表,少,丰富,测试场景,灵活,灵活,运行环境,Windows/Unix/Linux,Windows/Linux(,部分支持,),IP,欺骗功能,无,有,8,9,使用对比,对比项,JMeter,Loadrunner,安装,简单,复杂,脚本录制,很好,较好,脚本语言,C,,,JAVA,,,VB,XML,编辑方式,修改脚本,图形界面修改,成本,免费,昂贵,学习资料,较少(逐渐丰富),很多,9,10,目录,JMeter,介绍,JMeter,与,Loadrunner,的对比,JMeter,在测试工作的应用,JMeter,主要组件介绍,脚本录制,运行,JMeter,参数化设置,动态关联,场景设置,JMeter,测试实例,JMeter,二次开发,10,11,JMeter,主要组件,(,测试计划,),测试计划,(Test Plan),是使用,JMeter,进行 测试的起点,它是其它,JMeter,测试元件的容器。,用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用,$,变量名,引用即可。例如:,$ip,$port,Add directory or jar to classpath,:向类路径即,%JMeter-HOME%lib,中添加目录及,jar,包,11,12,JMeter,主要组件,(,线程组,),名称:线程组的名字。,线程数:设置发送请求的用户数目,即并发数。,Ramp-Up Period(in second),:线程启动的时间,单位是秒。即所有线程在多少时间内启动。,循环次数:请求的重复次数,如果选择后面的“永远”,那么 请求将一直继续;而在输入框中输入数字,那么请求将重复指定的次数,如果输入,1,,那么请求将执行一次。,启动时间:测试计划什么时候启动。,结束时间:测试计划什么时候结束。,持续时间:测试计划持续多长时间,会覆盖结束时间。,启动延迟:测试计划延迟多长时间启动,会覆盖启动时间。,12,13,JMeter,主要组件,(,取样器,),名称:,HTTP,请求的名字。,Web,服务器服务器名称或,IP,、端口号,脚本录制时自动添加,也可以使用“用户自定义变量”。,HTTP,请求:用默认值即可。,同请求一起发送参数:请求中的参数、值可以在此设置,需要用到参数化及动态数据关联,后面专门介绍。,同请求一起发送文件:我可以制定同请求一起发送哪个文件。,其他任务包括:从,HTML,文件中获取所有内含的资源、用作监视器,13,14,JMeter,主要组件,(,监听器,),监听器,(Listener),负责收集测试结果,支持将结果数据写入文件。同时也被告知了结果显示的方式。我们常用的包括:,聚合报告、,查看结果树、,用表格查看结果、,图形结果,14,JMeter,主要组件,聚合报告:,Label,:这里对应一个,HTTP Request,,显示的就是,Name,属性的值;,#Samples,:表示你这次测试中一共发出了多少个请求;,Average,:平均响应时间,默认情况下是单个,Request,的平均响应时间,当使用了“事务控制器”时,以事务为单位为单位显示平均响应时间,Median,:中位数,也就是,50,用户的响应时间,90%Line,:,90,用户的响应时间,Min,:最小响应时间,Max,:最大响应时间,Error%,:本次测试中出现错误的请求的数量,/,请求的总数,Throughput,:吞吐量,默认情况下表示每秒完成的请求数。,KB/Sec,:每秒从服务器端接收到的数据量,15,JMeter,主要组件,查看结果树,显示取样器请求和响应的细节,包括消息报头,请求的数据,相应数据,16,JMeter,主要组件,表格查看结果,显示每一请求的信息,包括发起请求的线程,开始时间,请求响应时间,请求字节数,17,JMeter,主要组件,图形结果,18,脚本录制,使用,JMeter,的代理服务器功能进行脚本录制,利用,Badboy,进行脚本录制,再转为,JMeter,脚本,19,19,使用,JMeter,录制,在测试计划中添加线程组,在线程组中添加“配置元件”“,HTTP,请求默认值”,设置被测系统的,IP,和端口。,在“工作台”中添加“非测试元件”“,HTTP,代理服务器”。端口:即代理服务器的监听端口,设为,9999,。,目标控制器选择测试计划中的线程组;分组选择:不对样本分组。排除模式:,.*.jpg,.*.gif,配置浏览器代理,和“,HTTP,代理服务器”设置保持一致,启动,JMeter,工作台“,HTTP,代理服务器”;,打开浏览器,登录测试网站,在测试网页上进行操作;,完成后,停止,JMeter,工作台“,HTTP,代理服务器”;,20,20,使用,JMeter,录制,21,21,使用,Badboy,录制,使用,Badboy,录制,选择“,File-,Export to JMeter,”,菜单,导出为,JMeter,脚本,使用,JMeter,打开,22,22,运行,JMeter,进行测试,图形界面,命令行模式运行,JMeter.sh-n t test.jmx-l log.jtl,-n,告知,JMeter,采用非图形化运行,JMeter,脚本,-t,指定要运行的脚本文件,-l,指定保存执行结果的文件名,23,参数化设置,在我们的过程中,通常会提交一些参数,使用不同的参数值来模拟才更接近实际情况。,参数定义后,使用,$paramName,既可以使用,24,24,参数化设置,用户自定义变量,使用测试计划中的用户定义变量作为参数,一般定义全局变量,如:,IP,,端口,文件参数,利用配置元件中的,CSV Data Set Config,进行参数化设置,函数参数,使用,JMeter,提供的函数进行参数化,JMeter,提供“函数助手”的向导,25,25,用户自定义变量,26,26,文件参数,在一个,HTTP,请求中,要提交多个参数,其中,category,,,query,两个参数需要做参数化,数据保存在文件中,27,27,文件参数,使用,配置元件,CSV Data Set Config,28,Filename,文件名:即参数化要引用的文件名,File encoding:,文件编码:可以不填。,Variable Names(comma-delimited),变量名,(,用逗号分割,),:多个变量可以引用同一个文件,用逗号分割。这里是,num1,,,num2,Delimiter,:参数文件中多个变量值的分隔符,,t,表示用,tab,键分割,默认是逗号。,Recycle on EOF,:结束后是否循环?默认是,True.,28,函数参数,JMeter,函数助手的功能,里面内置了多个函数;,29,29,文件参数,选择一个功能,_Random,。,设定最小值为,1,。,设定最大值为,100,。,函数名称设为,num1,。,点击生成将生成一个引用字符串,$_Random(0,100,num1,,在需要的请求参数中拷贝该字符串即可。,其中函数名称用来在引用中作区别,即我们可以设定不同的名称在不同的地方引用同一个函数的功能。,30,30,动态关联,在,HTTP,请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,在,JMeter,中采用正则表达式提取器来获取这些动态的数据。,正则表达式允许用户从服务器响应中获取数据,作为一个后置处理器,正则表达式提取器会在每一个请求执行后再执行,正则表达式提取请求的参数值,产生模板字符串,并将结果保存到给出的变量中。,31,31,动态关联,在脚本录制完毕以后,运行一遍录制的脚本,使用“察看结果树”监听器,分析那些需要做动态关联(一般建议先使用,HttpWatch,分析那些要做动态关联);,以基于,WEB_BAS,的,SQMAS,为例。经过分析,在登录时,会,cookie,会记录一个,JSESSIONID,,每次提交请求时,会,post,一个,ticket,。,32,32,动态关联,添加一个正则表达式提取器,提取,JSESSIONID,;,可以添加一个响应断言,测试提取结果;,$jessionid_g1,表示匹配第一组数值,这里只有一个,也可以直接使用,$jessionid,33,33,动态关联,运行测试计划,测试提取结果,34,34,动态关联,修改,ticket,,使用提取的,JSESSIONID,35,35,场景设置,JMeter,的逻辑控制器提供了一系列的组件,可以实现多样化的场景控制。,常用的逻辑控制器有:循环控制器,事务控制器,36,36,JMeter,测试实例,HTTP GET,测试,基于,WEB_BAS,的测试实例,HTTP XML,测试,37,37,目录,38,JMeter,介绍,JMeter,与,Loadrunner,的对比,JMeter,在测试工作的应用,JMeter,二次开发,自定义协议实现思路,应用举例,38,HTTP GET,测试,39,39,基于,WEB_BAS,的测试实例,40,40,JMeter,二次开发,JMeter,取样器提供了一些协议的测试支持。如果不能满足测试需要,需要做二次开发。,JMeter,是基于,Java,语言实现的,例如,http,请求,它只是用,Java,代码封装了,Http,的协议,内部其实使用了,Java,的类库来对应用发送请求的,所以通过,Java,请求的性能测试,我们可以做任意自定义协议请求的性能测试,41,41,JMeter,自定义协议实现思路,新建一个测试类,继承,org.apache.,jmeter.protocol.java.sampler.AbstractJavaSamplerClient,实现,getDefaultParameters,,,setupTest,,,runTest,,,teardownTest,方法,getDefaultParameters,是配置参数的方法,setupTest,和,teardownTest,与,JUnit,中的类似,分别在测试的开始和结束时执行。,runTest,为主要测试方法,所有测试程序都在这里完成。,42,42,应用举例,盘古索引项目需要对后台分布式索引系统进行性能测试,经过分析,直接对,web,搜索页面进行测试得到不能得到真实的性能情况。,解决方法:使用,JMeter,二次开发,调用分布文件系统的查询,API,进行性能测试,43,43,应用举例,创建一个,indexBaseTest,类,44,public class indexBaseTest extends AbstractJavaSamplerClient implements Serializable,44,应用举例,实现,getDefaultParameters,方法,45,public Arguments getDefaultParameters(),Arguments params=,new Arguments();,/,增加一个参数,默认值为空,参数名显示为,params.addArgument(KEY,);,return params;,45,应用举例,实现,setupTest,方法,46,public void setupTest(JavaSamplerContext context),getLogger().debug(whoAmI()+tsetupTest();,listParameters(context);,try,/,根据索引名称初始化一个索引实例,index=new Index(indexName);,catch(IOException e),e.printStackTrace();,catch(Exception e),e.printStackTrace();,46,应用举例,实现,runTest,方法,实现测试,47,public SampleResult runTest(JavaSamplerContext context),SampleResult results=new SampleResult();,key=context.getParameter(KEY,);/,取查询参数,results.sampleStart();,/,事务开始,try,reps_hello=index.search(queryKey,filter,0,100,1,flds);,results.setSuccessful(true);,/,设置事务成功,catch(Exception e),results.setSuccessful(false);,finally,results.sampleEnd();,return results;,47,应用举例,实现,teardownTest,方法,清理对象,48,public void teardownTest(JavaSamplerContext context),try,index.close();,getLogger().debug(whoAmI()+tteardownTest();,listParameters(context);,catch(IOException e),e.,printStackTrace();,catch(Exception e),e.printStackTrace();,48,应用举例,49,49,培训资料,asp-sz-filepublictmpJMeter,培训,50,50,谢 谢!,51,51,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服