收藏 分销(赏)

JMeter培训教程PPT.ppt

上传人:天**** 文档编号:9412066 上传时间:2025-03-25 格式:PPT 页数:41 大小:1.77MB
下载 相关 举报
JMeter培训教程PPT.ppt_第1页
第1页 / 共41页
JMeter培训教程PPT.ppt_第2页
第2页 / 共41页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,JMeter,进行接口测试,1,利用,JMeter,进行接口测试,JMeter,介绍,JMeter,主要元件,参数化设置,数据关联,Jmeter,元件的作用域与顺序,2,JMeter,介绍,JMeter,,一个,100,的纯,Java,桌面应用,它是,Apache,组织的开放源代码项目,它是功能和性能测试的工具。,JMeter,可以用于测试静态或者动态资源的性能(文件、,Servlets,、,Perl,脚本、,Java,对象、数据库和查询、,ftp,服务器或者其他资源)。原先,Jmemer,是为,Web/HTTP,测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于,HTTP,和,SQL,数据库(使用,JDBC,)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行,.,JMeter,的特性:,a),能够对,HTTP,和,FTP,服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过,JDBC,)。,b),完全的可移植性和,100,纯,Java,。,c),完全,Swing,和轻量组件支持(预编译的,JAR,使用,javax.swing.*),包。,d),完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。,e),精心的,GUI,设计允许快速操作和更精确的计时。,f),缓存和离线分析,/,回放测试结果。,g),高可扩展性:,h),可链接的取样器允许无限制的测试能力。,i),各种负载统计表和可链接的计时器可供选择。,j),数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。,k),具有提供动态输入到测试的功能(包括,Javascrpt,)。,l),支持脚本变成的取样器(在,1.9.2,及以上版本支持,BeanShell,)。,3,JMeter,介绍,4,Jmeter,主要元件,测试计划,(Test Plan),是使用,JMeter,进行测试的起点,它是其它,JMeter,测试元件的容器。,线程组,(Thread Group),代表一定数量的并发用户,它可以用来模拟并发用户发送请求。,取样器,(sampler),定义实际的请求内容,被线程组包含,我们主要用,HTTP,请求。,监听器,(Listener),逻辑控制器,(Logic Controller),断言,(Assertions),配置元件,(Config Element),前置处理器,(Pre Processors),和后置处理器,(Post Processors),定时器,(Timer),5,JMeter,主要元件介绍,测试计划,测试计划,(Test Plan),是使用,JMeter,进行测试的起点,它是其它,JMeter,测试元件的容器。,名称:你可以为你的测试计划取一个有意义的名字。,注释:对测试计划的注释。,用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用,$,变量名,引用即可。例:变量名,url,,值,,在需要,时直接用,$url,即可。,Add directory or jar to classpath,:向类路径即,%JMETER-HOME%lib,中添加目录及,jar,包。,6,JMeter,主要元件件介绍,线程用户,虽然有三个添加线程组的选项,名字不一样,创建之后,其界面是完全一样的。,setupthreadgroup,:一种特殊类型的,ThreadGroup,的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。,teardownthreadgroup,:一种特殊类型的,ThreadGroup,的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。,如果您用过,junit,,想必你不会对,setup,,,teardown,这陌生。熟悉,loadrunner,的应该知道,,loadrunner,的脚本除了,action,里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块。那么这 里,setupthreadgroup,和,teardownthreadgroup,就是分别指这两部分。其实从本质上来看,他们并没有什 么不同,7,JMeter,主要元件件介绍,线程用户,threadgroup(,线程组,),:这个就是我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的,8,JMeter,主要元件介绍,线程组,名称:为线程组起名字。,线程属性线程数:设置发送请求的用户数目,即并发数。,线程属性,Ramp-Up Period(in second),:线程间的时间间隔,单位是秒。即所有线程在多少时间内启动。,线程属性循环次数:请求的重复次数,如果选择后面的,forever,(默认),那么 请求将一直继续,如果不选择,forever,,而在输入框中输入数字,那么请求将重复指定的次数,如果输入,1,,那么请求将执行一次,如果是,0,,会出现问题。,调度器配置启动时间:测试计划什么时候启动,启动延迟会覆盖它。,调度器配置结束时间:测试计划什么时候结束,持续时间会覆盖它。,调度器配置持续时间:测试计划持续多长时间,会覆盖结束时间。,调度器配置启动延迟:测试计划延迟多长时间启动,会覆盖启动时间。,9,JMeter,主要元件介绍,取样器,(HTTP,请求,),名称:,HTTP,请求的名字。,Web,服务器服务器名称或,IP,、端口号,脚本录制时自动添加,也可以使用“用户自定义变量”。,HTTP,请求:用默认值即可。,同请求一起发送参数:请求中的参数、值可以在此设置,需要用到参数化及动态数据关联,我们在后面专门介绍。,同请求一起发送文件:我可以制定同请求一起发送哪个文件。,其他任务包括:从,HTML,文件中获取所有内含的资源、用作监视器、,Embedded URLs must match,。,10,JMeter,主要元件介绍,监听器,监听器,(Listener),负责收集测试结果,同时也被告知了结果显示的方式。我们常用的包括:,聚合报告、查看结果树、用表格查看结果,,都支持将结果数据写入文件。,11,JMeter,主要元件介绍,监听器,(,查看结果树,),12,JMeter,主要组件介绍,监听器,(,聚合报告,),13,JMeter,主要元件介绍,逻辑控制器,逻辑控制器,(Logic Controller),可以自定义,JMeter,发送请求的行为逻辑,它与,Sampler,结合使用可以模拟复杂的请求序列。,14,JMeter,主要元件介绍,逻辑控制器,循环控制器可以设置请求的循环次数或永远循环(如果选中永远的话)。,事务控制器可以将多个请求放在同一个事务中。如果选中,Gegerate parent sample,,则聚合报告中只显示事务控制器的数据,而不会显示其中的各个请求的数据,反之则全部显示。,15,JMeter,主要元件介绍,逻辑控制器,条件判断成功,执行其中的内容。可以有多个条件,16,JMeter,主要元件介绍,断言,断言,(Assertions),可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。,17,JMeter,主要元件介绍,断言,(,响应断言,),断言,(Assertions),可以用来判断请求响应的结果是否如用户所期望的。这个限制对于有效的测试是非常有用的。,18,JMeter,主要元件介绍,断言,(,响应断言,),包括:返回结果包括你指定的内容。,匹配:一般是完全匹配指定的返回内容。,Equals,:完全匹配。,Subring,:返回结果是指定结果的字串。,包括,匹配:可以使用正则表达式。,Equals,Substring,:使用纯文本,区分大小写。,19,JMeter,主要元件介绍,断言,(,断言结果,),20,JMeter,主要元件介绍,配置元件,配置元件,(Config Element),维护,Sampler,需要的配置信息,并根据实际的需要会修改请求的内容。,21,JMeter,主要元件介绍,配置元件,(http,请求默认值,),用来对所有,http,请求设定默认值。,22,JMeter,主要元件介绍,配置元件,(http,请求默认值,),用来定义已知的变量。比如,ip,,,port,,用户名密码等。,23,JMeter,主要元件介绍,配置元件,(,CSV Data Set Config),Filename,:文件位置及名称。,File Encoding:,默认为,ANSI,,可写为,UTF-8,。,Varible Names:,定义文本文件中的参数名,参数之间逗号分隔,.,定义后可在脚本在以,Shell,变量的同样的方式引用。,$user,$password,。,Delimiter,:,csv,文件分隔符默认逗号。,Recycle on EOF?:True=,当读取文件到结尾时,再重头读取文件。,False=,当读取文件到结尾时,停止读取文件。,Stop thread on EOF?,:当上面为,False,时起效;,True=,当读取文件到结尾时,停止进程,Sharing Mode,:设置共享,可以设置线程组共享,也可以是所有线程等。,24,JMeter,主要组件介绍,前置处理器和后置处理器,前置处理器,(Pre Processors),和后置处理器,(Post Processors),负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。,我们主要在动态关联中用到后置处理器的正则表达式提取器。,25,JMeter,主要组件介绍,定时器,定时器,(Timer),负责定义请求之间的延迟间隔。,26,参数化设置,在,HTTP,请求中常常会提交一些参数,我们为了不想在每一次请求中都使用相同的参数值,就要想办法让每一次请求的参数的值都是不一样的,我们就需要进行参数化设置,这里我们介绍两种参数化设置的方法。,一种是利用函数助手中的,_Random,函数进行参数化设置;,一种是利用配置元件中的,CSV Data Set Config,进行参数化设置。,27,参数化设置,函数助手,JMeter,中有一个函数助手的功能,里面内置了多个函数,我们可以利用其中的,_Random,函数来进行请求中的参数化设置。,28,参数化设置,函数助手,选择一个功能,_Random,。,设定最小值为,1,。,设定最大值为,100,。,函数名称设为,func1,。,点击生成将生成一个引用字符串,$_Random(1,100,func1,,在需要的请求参数中拷贝该字符串即可。,其中函数名称用来在引用中作区别,即我们可以设定不同的名称在不同的地方引用同一个函数的功能。,29,参数化设置,函数助手,例如:我们生成一个,$_Random(1,9999,Random),,在执行添加类目用例时,生成一个随机数用在类目名称里。,30,动态数据关联,在,HTTP,请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,在,JMeter,中采用正则表达式提取器来获取这些动态的数据。,正则表达式允许用户从服务器响应中获取数据,作为一个后置处理器,正则表达式提取器会在每一个请求执行后再执行,正则表达式提取请求的参数值,产生模板字符串,并将结果保存到给出的变量中。,31,动态数据关联,正则表达式提取器,在,HTTP,请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,在,JMeter,中采用正则表达式提取器来获取这些动态的数据。比如,我们要测试获取菜品列表接口,则要先使用获取菜品类目接口,获取一个类目,id,,然后用在获取菜品接口上。,32,动态数据关联,正则表达式提取器,要检查的响应字段:一般我们选择主体,即服务器返回给我们的页面主体信息,也可以选择信息头等。,引用名称:即参数名称,这个自己定义,在后面时用。,正则表达式:,(),括起来的部分就是要提取的。,.,代表任意字符,,+,代表出现任意次,后面加?,33,动态数据关联,正则表达式提取器,模板:,$1$,代表只匹配一组数据,如果需要正则表达式提取两个数据,比如需要两个用()起来的。可以用,$1$,,,$2$.,匹配数字:,1,代表值匹配第一次出现的(正整数都可以使用),,-1,代表获取所有匹配到的,,0,代表随机。如果设置匹配所有的,可以使用,$str_1,,,$str_2,来分别调用第一次匹配到的和第二次匹配到的(参数以数组的形式存储)。,缺省值:如果都匹配不到,就用这个默认的。,34,使用时就可以使用,$category_id-wm-sj,来表示获取到的,动态数据关联,正则表达式提取器,35,Jmeter,元件的作用域与顺序,配置元件,:,元件会影响其作用范围内的所有元件。,前置处理程序,:,元件在其作用范围内的每一个,sampler,元件之前执行。,定时器,:,元件对其作用范围内的每一个,sampler,有效。,后置处理程序:,元件在其作用范围内的每一个,sampler,元件之后执行。,断言:,元件对其作用范围内的每一个,sampler,元件执行后的结果执行校验。,监听器:,件收集其作用范围的每一个,sampler,元件的信息并呈现。,36,Jmeter,元件的作用域与顺序,作用域的原则是:,取样器(,sampler,)元件不和其它元件相互作用,因此不存在作用域的问题。,逻辑控制器(,LogicController,)元件只对其子节点中的取样器和逻辑控制器作用。,除取样器和逻辑控制器元件外,其他,6,类元件,如果是某个,sampler,的子节点,则该元件公对其父子节点起作用。,除取样器和逻辑控制器元件外的其他,6,类元件,如果其父节点不是,sampler,,则其作用域是,10.8.8.58:8005/,该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。,37,Jmeter,元件的作用域与顺序,元件的执行顺序,:同一作用域名范围内,测试计划中的元件按照如下顺序执行。,配置元件,前置处理,定时器,取样器,后置处理,断言,监听,38,Jmeter,元件的作用域与顺序,前置处理器、后置处理器和断言等元件对取样器作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。,如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。,39,JMeter,中进行分布式测试,作为一个纯,JAVA,的,GUI,应用,,JMeter,对于,CPU,和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起,JAVA,内存溢出的错误。不过,,JMeter,也可以像,LoadRunner,一样通过使用多台机器运行所谓的,代理,来分担,负载产生器,自身的压力,并借此来获取更大的并发用户数,我们只需手动配置一下即可。,1,、在所有期望运行,JMeter,作为,负载产生器,的机器上安装,JMeter,,并确定其中一台机器作为,控制器,,其他的机器作为,代理,。然后运行所有,代理,机器上的,JMeter,-server.bat,文件,假定我们使用两台机器,172.20.80.47,和,172.20.80.68,作为,代理,;,2,、在,Controller,机器的,JMeter,安装目录下找到,bin,目录,再找到,jmeter.properties,这个文件,使用记事本或者其他文字编辑工具打开它;,3,、在打开的文件中查找“,remote_hosts=”,这个字符串,你可以找到这样一行“,remote_hosts=127.0.0.1”,。其中的,127.0.0.1,表示运行,JMeter,代理的机器,这里需要修改为“,remote_hosts=172.20.80.47,,,172.20.80.68”,;,4,、保存文件,并重新启动,控制器,机器上的,JMeter,,并进入,启动,-,远程启动,菜单项。就会看到我们刚才添加的两个代理的地址,选中即可运行,如果想同时启动所有代理,选择,远程全部启动,即可。,要进行分布式测试代理机器上需要添加环境变量,即添加用户变量,JMETER_HOME,d:jmeter,,系统变量中的,path,中添加,d:jmeterbin,(假设,jmeter,放在,d,盘根目录下)。,40,谢谢!,41,
展开阅读全文

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


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服