JMeter基本使用方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JMeter基本使用方法白羽1环境搭建此部分是我借用LoadRunner的Sample程序作为服务器,通过JMeter进行Web性能测试的过程。希望对学习JMeter的朋友有所帮助。2使用JMeter录制脚本2.1建立JMeter测试计划(TestPlan)打开JMeter,看到左边显示一个空的测试计划,把该测试计划改名为TestPlan1。右键单击该测试计划,选择“添加(Add)”-“线程组(ThreadGroup)”,添加一个线程组,改名为TestGroup1。如下图所示:2.2设置并启动JMeter代理服务器右键单击在“工作台(WorkBench)”,选择“非测试元件(Non-TestElements)”中的“Http代理服务器(HTTPProxyServer)”,如下图所示:设置该“Http代理服务器”(HTTPProxyServer),“目标控制器(TargetController)”选择刚才建立的线程组(TestPlan1ThreadGroup1)。点击“启动”,启动该代理服务器。2.3设置IE的代理服务器配置测试工程师打开IE界面,选择“工具(Tools)”-“Internet选项(InternetOption)”-“连接(connections)”-“局域网设置(LANsetting)”,如下图所示:在局域网设置(LANsetting)界面勾上“为LAN使用代理服务器(UseaproxyserverforyourLAN)”,设置地址(address)为“localhost”,端口(Port)为8080,确定(OK)。2.4录制脚本在浏览器的URL栏输入需要测试的地址,进行操作,操作完毕后,点击JMeter中的“Http代理服务器(HTTPProxyServer)”的“停止(STOP)”按钮,你将能看到“TestGroup1”下面已经录制了刚才操作的内容。如下图所示:2.5样例文件3使用JMeter获取SessionID前提:本章所使用的脚本录制请参见《使用JMeter自动录制脚本》3.1添加察看结果树(ViewResultsTree)添加查看结果树,查看脚本运行情况:Add-Listener-ViewResultsTree3.2确认SessionID的获得位置根据录制情况确认SessionID的获得位置。我们在查看结果树(ViewResultsTree)中查找到SessionID的传送位置,如下图所示:根据响应数据(ResponseData)的内容可以确定,在本案例中SessionID出现在页面中。PS:由于nal.pl页面包含于中的子页面,所以需要对页面足够了解或者使用录制工具获得该页面的访问信息(本次测试使用的是JMeter的自动录制工具)。这一点区别于LoadRunner,LoadRunner可以直接处理包含的页面,不需要单独访问子页面。3.3添加正则表达式提取器(RegularExpressionExtractor)正则表达式的提取是在网页下载后进行的,所以正则表达式提取器(RegularExpressionExtractor)在后置处理器(POSTProcessors)中进行选择。操作步骤(在nal.pl页面中):英文版:右键点击”HTTPRequest”中的”/WebTours/nav.pl”-”Add”-”POSTProcessors”-”RegularExpressionExtractor”中文版:右键点击”HTTP请求”中的”/WebTours/nav.pl”-”添加”-”后置处理器”-”正则表达式提取器”如下图所示:3.4填写正则表达式(RegularExpression)设置信息正则表达式(RegularExpression)的设置如下图所示:在ResponseFieldtoCheck栏目中选择Body项目,在返回网页的主体部分进行查找。Attribute描述值ReferenceName引用名称,基本上可以理解为变量名SIDRegularExpression用于匹配的正则表达式。(.*)为需要匹配的单元name=userSessionvalue=(.*)Template如果正则表达式匹配多个值则需多多个值进行分组,本次我们仅使用一个组$1$MatchNo.确认第几项匹配的是我们要选的值。等同于LoadRunnner脚本web_reg_save_param函数的Ord属性设置1DefaultValue在没有取到值的时候使用的默认数据NotFound这里只是单个匹配的情况,如果要出现多个匹配建议修改正则表达式,也可以按匹配顺序引用数据,请参见JMeterUserManual内容。3.5添加断言(ResponseAssertion)检查匹配结果为确定是否正确提取SessionID值,在”HTTPRequest”(/WebTours/nav.pl)中添加断言,设置如下图所示:ResponseFieldTest中选择TexResponse对接受的文本信息进行检验。PatternMatchingRules中选择Contains,检验文本是否包含检验信息。选择Not,因为如果判断正确在ViewResultsTree看不到结果,所以使用No,这样在正确的时候将显示错误,测试人员可以在ViewResultsTree中查看结果,如下图所示:PatterntoTest输入匹配数据${SID},此变量对应于前面正则表达式(RegularExpression)所获取的变量名称。3.6样例文件4JMeter参数化过程1前提:本章所使用的脚本录制请参见《使用JMeter自动录制脚本》4.1选择函数位置参数化是指在进行性能测试的过程中使用不同的参数来模拟系统的处理性能,从而使压力测试结果更加接近实际情况。在本案例中,我们通过JMeter模拟多用户同时登录系统。根据对录制脚本的分析,用户登录名通过POST模式进行传递,所以测试人员确定位参数传递页面是HTTPRequest(/WebTours/login.pl)中实现。如图所示:我们将username的value使用函数进行替换。4.2添加_StringFromFile函数_StringFromFile,这个函数是从一个文件中取到一个字符串,这个函数和LoadRunner中的File变量差不多,不过LoadRunner可以直接从数据库中查询记录,而JMeter需要我们借助第三方工具生成文本文件。生成文本文件后就可以设置这个函数的参数了,参数分别是NameDescriptionValue必填Enterfullpathtofile文件的完整路径,即文件路径+文件名.扩展名(可以有空格和中文)√Nameofvariableinwhichtostoretheresult参数的名字用于和其他同类参数的区分╳Startfilesequencenumber参数是文件开始的序号,也就是文件读取的其起始行数。╳Finalfilesequencenumber参数是文件的结束序号,也就是要读取文件的最后行。╳_StringFromFile函数也可以在其他位置直接使用,如断言(Assertion)位置:4.3数据文件制作数据文件使用标准的TXT文件格式,每一行保存一个参数供函数调用使用。文件内容如附件所示:。PS:在使用过程中根据实际存储情况更改“Enterfullpathtofile”参数的设置路径。4.4补充说明如果并发人数和循环次数超过了文件内容,那最后一次循环读取的文件内容和第一次的一样,函数会自动循环读取。文件的起始序号和结束序号也可以不用设置,这样函数会从第一行读取到最后一行,然后再循环读取。4.5样例文件5JMeter参数化过程25.1选择函数位置参见4.1选择函数位置5.2添加CSVDataSetConfigCSVDataSetConfig可以将数据由CSV格式文件中读出,并保存为变量,以便测试工程师在脚本过程中调用。在线程组中插入CSVDataSetConfig,并设置以下参数如图所示:NameDescription必填Filename数据文件的文件名√Fileencoding数据文件的编码格式╳VariableNames变量名称,多变量时使用逗号分割不同变量√Delimiter在数据文件中数据的分隔符√RecycleonEOF当数据文件中的数据使用完毕是否循环使用数据√StopthreadonEOF当数据文件中的数据使用完毕是否中止线程√5.3数据文件制作基本的CSV文件可以通过Excel保存为CSV文件获得,如下图所示:与LoadRunner不同的是JMeter不判断字段名成,所以如果数据文件带有字段名称请删除字段名称所在的第一行,以保证脚本可以正确读取到参数。本用例使用的文件:data.csv请注意数据文件必须和测试计划文件(*.jmx)保存在同一目录下,JMeter才可以正确读取数据。5.4样例文件本文件中使用的数据文件tester02和tester04登录密码为错误密码,通过断言(Assertion)可以看到登录失败,验证参数可以正常替换。6JMeter逻辑循环添加6.1判断循环内容通过阅读结果树(ViewResultsTree)的内容,由测试工程师根据测试需求判断循环业务所在位置。在本用例中,我们将机票的定购过程作为循环内容。如下图所示:6.2添加逻辑循环控制器在线程组(ThreadGroup)中添加循环控制器(LoopController),如下图所示:我们根据实际业务需要在循环控制器(LoopController)中设置的循环次数(LoopCount)中输入数字。6.3重新安排HTTP请求(HttpRequest)在JMeter中单元的作用范围以树的形式进行表现,并按由上至下的顺序执行,所以添加完循环控制器(LoopController)后要对其位置和作用范围进行相应的调整。如图所示:循环控制器(LoopController)设置在Http请求(/WebTours/nav.pl)后,将需要循环的业务内容(/WebTours/reservations.pl)作为子项目拖拽到循环控制器(LoopController)中。6.4样例文件7HTTPCookieManager的应用7.1添加HTTPCookieManager在测试计划中添加Cookie管理(HTTPCookieManager),如下图所示:JMeter可以存储线程所对应的Cookie信息,并在脚本中应用这些信息。未添加HTTPCookieManager的脚本,JMeter无法识别cookie信息,如下图所示:添加HTTPCookieManager后,JMeter可以识别cookie信息并保存在变量中,以供使用,如下图所示:7.2Cookie信息的处理在本用例中,用户的基本信息被存储在一个变量中,如下图所示:在Web应用的过程中我们需要分别引用用户信息,所以引入__split()1函数对保存有用户信息的变量MTUserinfo进行分解。我们在获得Cookie后将其进行分解如下图所示:1__split()的详细使用请参考《JMeterUser’sManual》__split()2函数将MTUserInfo分解为一系列变量,测试工程师根据自己的需要选用变量使用,如图所示:7.3样例文件2__split()的详细使用请参考《JMeterUser’sManual》8JMeter结果处理8.1添加察看结果树(ViewResultsTree)添加察看结果树(ViewResultsTree),可以察看脚本运行情况。在测试初期,工程师调试脚本并观察运行脚本的执行效果都是通过察看结果树(ViewResultsTree)进行的。它主要分为三种试图:取样器结果(Samplerresult):用于察看Http请求(HttpRequest)的

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功