JMETER使用,从入门到放弃_第1页
JMETER使用,从入门到放弃_第2页
JMETER使用,从入门到放弃_第3页
JMETER使用,从入门到放弃_第4页
JMETER使用,从入门到放弃_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TOC\o"1-5"\h\z\o"CurrentDocument"1工具介绍 3工具组成 3测试计划 3\o"CurrentDocument"工作台 3测试组成结构 .4\o"CurrentDocument"HTTP消息头 .4\o"CurrentDocument"HTTP请求默认值 .4\o"CurrentDocument"HTTPCookie管理器 5\o"CurrentDocument"线程组 5\o"CurrentDocument"HTTP请求 5\o"CurrentDocument"DebugSampler 5响应断言 .6常用监听器 6\o"CurrentDocument"2准备工作 7监控资源 .7\o"CurrentDocument"监控TOMCAT资源 7\o"CurrentDocument"监控WINDOWS资源 10\o"CurrentDocument"监控LINUX资源 11使用技巧 12\o"CurrentDocument"参数化 12正则表达式提取器 14\o"CurrentDocument"集合点 16响应断言 17\o"CurrentDocument"IP欺诈 19\o"CurrentDocument"3开始搞事情 22准备工作 23接口测试 23\o"CurrentDocument"脚本组成 23\o"CurrentDocument"数据共享 26线程组 31\o"CurrentDocument"Linux下运行Jmeter 33数据库性能测试 35\o"CurrentDocument"Mysql性能测试 35\o"CurrentDocument"JAVA性能测试 37该文档只讲解JMETER作为测试工具在测试中常用的功能如何使用。其他功能,如果感兴趣,可以自行研究学习。该文档内容具有一定的跳跃性,不适合测试小白学习。该文档是我毕生心血之作,虽然内容有可能不正确和不准确,但至少是在项目中得到实践和经得起测试的。另外该文档主要内容只会出现我知道和我使用过且能得出结论的内容。所以该文档不属于进阶和工具文档。主要是让小白们知道如何使用JMETET工具进行测试,指导一个方向而已。就我目前所知JMETER只能进行HTTP协议的测试。至于能不能进行其他协议的测试,请读者自行研究。说明一点,不同的协议测试请用合适的工具,所以请大家在做测试之前请先选择合适的测试工具,不然在测试过程中很有可能半途而废,浪费时间,而且会严重打击你的测试信心。注意:文档中介绍的JMETER工具版本为V3.0o1工具介绍工具组成该工具由测试计划和工作台组成。这2个部分均可以添加线程组及各种元件。区别是测试计划部分可以添加线程组,而工作台不能添加线程组。一般我们都是在测试计划中创建线程组进行接口的功能和性能测试。测试计划组成如下图所示江淮轻卡WE日端性能则讨然HTTP信息头管理兽X-http请求默认值(1)【用户登录】(2)【首页-百公考42⑶t故障分析Ta:(4)t其他斫有君-X察看结果树-X图形结果案m报告12用恚格察看结果添加 ►Threads{Users),TestFragment卜配置元件 ►定时渠 卜前置处理器卜后置处理器►断言 ►监听器 ►粘贴 Orl-VResetGuiByfUndoRedo打开_台并保存为常用到的有:Threads(Users)、配置元件、后置处理器、断言、监听器。具体怎么用,后面再讲。工作台组成如下图所示(该文章不会对这个玩意进行讲解,因为我没用过,感兴趣的可以自己研究哈)添加 ►非则试元件卜粘贴 Ctrl-V遥辑控制器►ResetGui配置元件►UndoRedo前置处理器卜□3rnpi&if打开后置处理器►合并断言 ►保存为…监听器►SaveasTestFragmentSaveNodeAsImage ctri-G"~~~~工 可能会用到的功能:非测试元件(HTTPMirrorServer.HTTP代理服务器)。测试组成结构一般组成为HTTP消息头、HTTP请求默认值、线程组、HTTP请求、DebugSampler、查看结果树、聚合报告、用表格察看结果、响应断言、各种可选用的监听器。如下图所示. .…一能测试X川田仔息头管理器WHTTP请求默认值aU(1)1用户登录】线程组A,(2)1首页-百公里油耗二线程组*U(3)t故障分析辙障走势二线程组>J[其他斫有接口二线程组、察看结果树-X聚合报告、用表格察看结果响应断言1.2.1HTTP消息头具体作用不详,反正要加,不然脚本报错。响应内容如果是json,消息头里就填写Content-Type=application/json。HTTP请求默认值作用是当一个线程组里存在N多接口,而且接口路径中开头一段相同。为什么方便修改相同部分的路径内容,就添加这个请求默认值。HTTPCookie管理器用于管理Cookie值,一般情况下无需填写任何内容值。只有当多个接口需要用到固定的cookie值时才会填写内容,一般结合正则提取器使用,具体使用方法见第3.2.2章节。线程组线程组有2个特性:线程属性和调度器。这2个特性均用于性能测试。(1)线程属性,设置线程数即虚拟用户数,性能测试场景中脚本的运行设置(2)调度器,设置性能测试场景中脚本的运行周期(时间),选中“调度器”才能使用此功能具体操作和功能说明请参考第3,2,3章节。HTTP请求接口是放在线程组里的。HTTP请求也有2个特性:接口测试和作为监听器使用。这2个特性的具体说明请参考第3,2章节(接口测试)和第2,1章节(监控TOMCAT资源)。DebugSampler脚本调试神器。当在使用正则表达式提取器时想知道提取的数值是否正确,就可以使用这玩意了。将此元件挂在某个接口下即可,然后执行脚本(DEBUG结果如下)。脚本调试完了记得禁用啊。

。用户登录电。用户登录电BeanShellSampler中DebugSampler电故障分析故障走势r取样器结果(请求(响应熟据JMeterThread.last_sample_ok=trueJMeterThread.pack=org.apache.jmeter.threads.SamplePackage@333cf7rc53START.HMS=101310START.MS=1541383990650START.YMD=20131105TESTSTART.MS=1541397522256Imeter.USER_TOKEN_=(1)【用户登录】线程组1-1passwo「d二口C483E30A7A0BD9EF71D3CF973673924token=29ec472e-7783-41f5-93eC-32TO363323detoKen_g口=寸口Ken-29ec472e-7738-41f5-93eC-32TO363323de'token_g1=29ec472e-7730-41f5-93eC-32TO363323deusername=xnUsrOOO1响应断言主要用于判断返回值或内容是否正确,避免测试白忙活。常用监听器查看结果树调试/运行脚本后查看结果内容。主要分为“取样器结果”、“请求”和“响应数据”。聚合报告性能测试用,查看每个线程组运行性能指标数值。用表格察看结果查看所有线程组中每个接口的指标数值。性能指标这里就不列举了,有些监视器需要安装JMETER插件或远程连接登录被这里就不监控对象。2准备工作监控资源监控TOMCAT资源使用jmeter的tomcat监视器功能,可以通过向tomcat的status页面发送get请求,得到资源使用信息,然后转换为直观的图像方式,这样的话,就可以监视到服务器的资源使用情况,不过需要注意的是,要使用tomcat监视器功能,就必须在要监视的服务器上配置tomcat相关文件。(1)配置/。0f;0皿815863.》血,内容如下<?xmlversion='1.0'encoding='utf-8'?><tomcat-users><rolerolename="manager-gui"/><rolerolename="manager-script"/><rolerolename="manager-jmx"/><rolerolename="manager-status"/><userusername="admin"password="admin"roles=nmanager-gui"/><userusername="admin"password="admin"roles="manager-script"/><userusername="admin"password="admin"roles="manager-jmx"/><userusername="admin"password="admin"roles=Hmanager-status"/></tomcat-users>(2)配置/coMcontextxml,内容如下<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Managerpathname="/manager"debug="0"privileged="true"docBase=H/home/tomcat-9900/webapps/manager"/><ValveclassName="org.apache.catalina.valves.CometConnectionManagerValven/></Context>注意:配置完成后先访问http://IP地址:端口号/manager/status,检查是否配置成功。(3)打开Jmeter在线程组下添加“配置元件-HTTP授权管理器”,在HTTP授权管理的“基础URL”中输入http://IP地址:端口号/manager/status,用户名为上面新建的admin,密码是admin,其他默认,如下图所示(4)接着在当前线程组下添加“HTTP请求”,输入被检测服务器中的TOMCAT访问IP和端口号;路径输入/manager/status;请求参数输入XML(必须大写),值为true,如下图A1所示并且将此HTTP请求设置为“用作监视器”,如下图A2所示图A1

图A2(5)接着在当前HTTP请求下添加“监视器结果”和“察看结果树”,如下图所示?总则试计划T2线程组(9900)丈HTTF授权管理器? http请求监视器结果察看结果树9线程组(9999)(6)最后运行JMETER脚本,此时进入到“监视器结果”界面可以看到被测服务器IP和资源(图片),如下图所示事测试计划?。线程组(9900)xHTT喉权管理器9JHTTP请求监视器结果察看结果网。线程组0999)K)工作台监视器结果名称:I监视器结果可见如何使用JMETER\脚本\脚本01(监控Tomcat资源).jmx。监视器结果名称:I监视器结果2.1.2监控WINDOWS资源(1)首先下载和安装以下三个插件(都在如何使用JMETER\插件文件夹中)。JMeterPlugins-Extras-1.4.0(Jmeter插件)JMeterPlugins-Standard-1.3.1(Jmeter插件)ServerAgent-2.2.1(监听工具)(22.1.2监控WINDOWS资源(1)首先下载和安装以下三个插件(都在如何使用JMETER\插件文件夹中)。JMeterPlugins-Extras-1.4.0(Jmeter插件)JMeterPlugins-Standard-1.3.1(Jmeter插件)ServerAgent-2.2.1(监听工具)(2)解压Jmeter的2个插件,将JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar复制到jmeter安装目录下的\lib\ext下。(3)重启或者启动Jmeter后在“监听器”中就显示出可以监控的资源,如下图所示则试计划工作台涛加StartStartnopaus&sValidate线拜痢谴辑控制器►配置元件►定时器卜前置处理器►剪切Ctrr-X复制Ctrl-C粘贴Ctrl-VDuphcateCtrl+Shift-CR&s&tGEii删除Delete监听器Sampler卜后置处理^>断言►D&lavjp@gc-ActiveThreadsO\rerTimejp@gc-AutoStopListenerjp@gc-BytesTtiroughputOverTimejp@gc-CompositeGraphjp@gc-ConnectTimesOverTimejp@gc-ConsolsStatusLoggerjp@gc-DbMonSamplesCollectorjp@gc-FtexibleFiteWriterjp@gc-GraphsGeneratorjp@gc-HitsperSecondjp@gc-JMXMonSamplesColl&ctorjp@gc-LUpload&rjp@gc-Pag&DataExtractorjp@gc-P&rfMonMetricsCollectorRedo:gc-ResponseCodesperSecondjp@gc-R&sponseLatenciesOverTime打开.台井保存为…调度器画

持续时间jp@gc-R&sponseTimesDistributtomjp@gc-ResponseTimesOverTime・2・1startAgent.bat^R^(如何启动请自监控工具也可以选择别的,这个不是唯一的。jp@gc-TransactionThroughputvsThreads是唯一的。(5)现在回到Jmeter,在线程组中添加要监听的服务器资源,比如CPU和内存和网络硬盘I/O,操作如下A、首先添加HTTP请求并输入相关内容后,再在当前HTTP所在的线程组

上添加jp@gc-PerfMonMetricsCollector上添加jp@gc-PerfMonMetricsCollector,界面如下图所示B、接着在jp@gc-PerfMonMetricsCollector页面中添加要监听的服务器资源,端口号默认是4444。为了能监控到资源变化,我将线程组设置为无限循环,最后启动脚本,结果如下图所示.测试计划?U线程组—jp@gc-PerfMonMetricsCollector/HTT嘴求K工作台名称:jp@gc-PerflvlonMetricsCollector@Helponinisplugin27000024000021000018000015000030000.测试计划?U线程组—jp@gc-PerfMonMetricsCollector/HTT嘴求K工作台名称:jp@gc-PerflvlonMetricsCollector@Helponinisplugin27000024000021000018000015000030000localhostlocalhostlocalhostlocalhostcoasueElo七£斫有额据写入一个文件444444444444MemoryDisksI/ONetworkI/ODeleteRowLoq/DisplayOnly:口仅日志错误口Successes117:54:41-ERROR:ConnectException:Connectionrefusedconnect17:54:41-ERROR:.ConnedException:ConnectionrefusedconnectSettings300000120000注意:如果在上图中间黄底区域显示红色报警信息,说明监控工具未启动。因为运行一次JMETER脚本进行监控完成后,监控工具会自动关闭,需要手动重新启动。监控配置脚本可见如何使用JMETER\脚本\脚本02(监控windows资源).jmx。2.1.3监控LINUX资源首先将JMeterPlugins-Extras-1.4.0和JMeterPlugins-Standard-1.3.1两个插件放在JMETER的\lib\ext目录下。再将ServerAgent-2.2.1监控工具安装在Linux服务器上并启动(在Linux下进入到ServerAgent目录下启动服务:shstartAgent.sh)。打开Jmeter在HTTP请求下添加“监视器”即可看到JP@开头的监视元素。

复制c-LUploader文件编辑Search运行选项帮助ComparisonAssertronVisaalizerHTTP请求Ctri-XCtrl-CCtJl-VDuplicateResetGoi°jp@gc-ActiveThreadsOverTimejp@gc-AutoStopListenerjp@gc-BytesThroughputOverTimejp@gc-CompositeGraph复制c-LUploader文件编辑Search运行选项帮助ComparisonAssertronVisaalizerHTTP请求Ctri-XCtrl-CCtJl-VDuplicateResetGoi°jp@gc-ActiveThreadsOverTimejp@gc-AutoStopListenerjp@gc-BytesThroughputOverTimejp@gc-CompositeGraphjp@gc-ConnectTimesOverTimejp@gc-ConsoleStatusLoggerjp@gc-DbP.lonSamplesCollectorjp@gc-FtexrbleFileWriterjp@gc-GraphsGeneratorjp@gc-HitsperSecondjp@gc-JMXMonSamplesCollectorT.刎试计划口甥程组gSynchronizingTimer§/HTTF^^舔加插入上级辛HTTP请.配置元件►定时^►前置处理簿►后置处理器卜断言监听器►Ctrl+Shift-C剩余操作与监控WINDOWS资源一样,监控配置脚本可见如何使用JMETER\脚本\脚本03(监控Linux资源).jmx。2.2使用技巧2.2.1参数化JMETER参数化一般使用的是配置元件里的CSVDataSetConfig。该元件支持TXT格式,别的格式我没试过。当然了要使用参数化功能就必须有一个HTTP请求。即在HTTP请求下添加参数化元件。操作如下(1)在HTTP请求上添加“配置元件-CSVDataSetConfig",如下图所示f餐刎试计划丈HTTP信息头管理器X-http请求默认值上拳(D1用户登录二线程组HTTP请求名称:用户登录添加f餐刎试计划丈HTTP信息头管理器X-http请求默认值上拳(D1用户登录二线程组HTTP请求名称:用户登录添加插入上投剪切Ctrl-X复制Ctrl-C粘贴Ctrl-V配置元件►定时器?获耳响E/BeanSXDecugrr±hF前置处理器►后置处理器►断言►眼限制的接口时去掉参数化,直接使用卬口眦4CSVDataSetConfigFTPW求最省值DNSCacheManager\ovsn\iHTTPCacheManagerHTTPCookia管理器添加成功后的界面如下图所示CSVDataSetConfig名称:loginusers注释:Filename:文件路径和文件名称,需要带文件后缀注意:这里必须使用TXT文件然后另存为CSV文件,不然执行时会报错全是乱码。至于为什么会这样,我也没研究VariableNames(comma-delimited):文件中的参数名称Delimiter(user,\t’fortab):当文件中存在多个变量时可以用英文输入法下的逗号隔开。如果只有一个参数这里可以不填其他属性值默认就好(2)现在回到HTTP请求界面,如果是GET方法,则在Basic标签页的Parameters标签区域的列表中添加参数化文件中的变量(如下图所示)。列表中左侧的“名称”列填写接口要传递的变量名称,列表右侧的“值”就填写参数化文件中的变量名称(格式必须是${变量名})。如果是POST方法,则在Basic标签页的BodyData区域中输入JSON格式的内容,如下图所示参数化放置位置可以在某个HTTP请求下,也可以在某个线程组下,还可以放在测试计划中!正则表达式提取器有些返回值是动态值,而这些动态值又会作为其他接口需要传递的参数,那么我们就需要对这些动态值进行提取保存到变量中,再让其他接口直接调用。举例说明,现在有个接口的返回内容中有token值(JSON格式,如下图所示),而这个值又会作为其他接口的Cookie值进行传递,使其能保证其他接口能成功

被调用。Text0用户登录Q被调用。Text0用户登录QBeanShellSamplera0用户登录电BeanShellSampler'取样器结果「请求「响应薮据I rcode":0;message":wSUCCESSVdata,':ricr:1538994388837twusername-:"xnUsr000r,'headPicture':"TealNamew:'pJpJVmobile":「identityCa「cr-4212221994031900017sex-:“MALE」。「gl(^1538979561575:o^■gName:)性能车队零•7o(■gType7CUSTOMER二statLls…ENABLE7qq-:一「email""Vaddress":"|rokerr:-41a7d54c-9810-4d5f-9460-29c783b49a^:^KginType・:・SYS-「defaultVirr:null}}图中内容是:"token":“xxxx”。现在要得到xxxx就得使用正则表达式提取器。(1)在HTTP请求下方添加后置处理器-正则表达式提取器,界面如下所示按照上图内容进行填写,引用名称请牢记,这个在后面会用到。正则表达式内容这个我也是百度出来的("token":"(,+?)”),大家可以自行研究下。参数 释义引用名称 在HTT僧请求中,引用此效据r需要用到的名称正则表达式 用于将需要的数据提取出来模板 表示使用提取到的第几个值:犷1$:表示取所有值$0$:表示随机取值$1$:表示取第1■个$2$:表示取第二个以此类:表示取第n个匹配数字(0代表随机) 0代表随机取值,1代表全部取值缺省值 如果正则表达式没有搜找到值,则使用此缺省值此时可以用DebugSampler查看接口返回数据中的正则的值是否正确,执行脚本即可。

Text「取样器结果'请求‘响应索(据口Text「取样器结果'请求‘响应索(据口用户登录电BeanShellSamplerODebugSamplerJMeterThread.last_sample_ok=trueJMeterThread.pack=org.apache.jmeter.threads.SamplePackage@5c40da19START.HMS=141009START.MS=1541390209222START.YMD=20131105TESTSTART.MS=154U0612S955_jmeter.USER_TOKEN_=(1)【用户登录】线程组1-1password=DC483E80A7A0BD9EF71D8CF973673924token=t2aae5ab-5441-4463-3cca-50a5cf6bdee9t。既 既n-:T2aae5ath544M4Btoken_g1=12aae5ab-544M463-Scca-50a5cf6bdee9username=xnUsr0001(2)现在进入到HTTP请求页面,在输入值的列表(GET方法)或JSON输入区域(POST方法)输入已被正则的变量名称即${变量名}(也就是正则表达式提取器中的“引用名称”)。正则表达式脚本可见如何使用JMETER\脚本\脚本04(正则表达式提取器).jmx。集合点这个功能是用于并发测试的。在某个 HTTP请求下方添加“定时器”-SynchronizingTimer",界面如下图所示“NumberofSimulatedUserstoGrounpby”代表并发数。该数值的设置请注意:集合点中的并发数最好能被线程组中设置的用户数整除(线程用户数%并发数=0),不然跑脚本会报错。集合点在线程组中可以随意拖动,必须放在HTTP请求前面。集合点可以和线程组的“线程属性”和“调度器”结合使用,主要是为了保证所有的用户能到达集合点并能发生并发。

一段时间内多次并发的设置需要注意线程数、Ramp-UpReriod、循环次数、调度器和SynchronizingTimer的设置关系。比如现在我要让100个线程在一段时间内有间隔的完成多次并发,设置为:线程数100,Ramp-UpReriod大于100即可(最好是线程数的倍数),循环次数为1,调度器选中然后输入持续时间,接着在SynchronizingTimer设置并发数即可。集合点脚本可见如何使用JMETERM^^'脚本05(SynchronizingTimer集合点).jmx。2.2.4响应断言作用是验证返回内容是否为测试所需要的,有些情况下,返回内容不为SUCCESS但取样器页面中会显示为200。主要是为了调试测试脚本返回信息是否为测试所需,避免浪费时间做无用功。正式测试时可以禁用此功能。这里我以HTTP请求的响应信息为例进行讲解。(1)在HTTP请求下添加“断言-响应断言”,如下图所示1测试计划XH^P信息头管理器调用有权限限制的接口时去掉参数化直接使用麻号(密码:63A9F0EA7Bive口Usemultipart^ixrn-datafeePOSTrd":"${password}|1方法POSTHTTP请求H口哨求默认值名称:用户登录插入上期Ctrl-XCtrl-CBeanSheltf|f=Ctrl-VBSFAssertion1DuplicateCtrl+Shift-CCompareAssertionResetGuiHTMLAssertionDeletEJSR223AssertionUndoMD5Hex断言RedoSiieAssertionSMIMEAssertionXMLSchemaAssertionXMLffif1测试计划XH^P信息头管理器调用有权限限制的接口时去掉参数化直接使用麻号(密码:63A9F0EA7Bive口Usemultipart^ixrn-datafeePOSTrd":"${password}|1方法POSTHTTP请求H口哨求默认值名称:用户登录插入上期Ctrl-XCtrl-CBeanSheltf|f=Ctrl-VBSFAssertion1DuplicateCtrl+Shift-CCompareAssertionResetGuiHTMLAssertionDeletEJSR223AssertionUndoMD5Hex断言RedoSiieAssertionSMIMEAssertionXMLSchemaAssertionXMLffif言SaveasTestFragmentXPathAssertion响应断言SaveScre&nAsImagectri+shift-G断言持续时间打开…台笄保存为.SaveNodeAsImagecui-G?Z运营看XHTIXMot■响山⑸的察看结果树、鬃台报告用表格察看图形结果以断言结果.、、*Transactioij-Hit.^nsrSr»万用户登奉二关2小%获电;响应一-/日eanSt./Debug®Synchrc;0 (2)【故艮au⑶【故艮⑷【遴黑上防录[线上断言监听器►海:/api/plc一匚自动三定向Parameters-1{"usernar配置元件►定时能►前置处理器►后置处理器►ApplyTo默认即可,要测试的响应字段区域根据实际返回信息进行选择,我这里选择的是“响应文本”。模式匹配规则一般选中Substringo要测试的模式区域中输入你要断言的返回内容信息,一般是SUCCESS。如下图所示响应断言名称:卜向应断言注摩Applyto:OMainsampleandsub-samples®MainsampleonlyOSub-samplesonlyOJMeterVariable要驯试的响应字废您响应文本ODocument(texl)。URL样本O响应代码。响应信息OResponseHeaders□IgnoreStatus模式匹配版则O包括O匹配OEquals®Substring□否要测试的模式要测试的模式SUCCESS此时再在HTTP请求或者该请求所在的线程组中添加监听器断言结果,当脚本运行后可以在这里查看响应结果是否正确。正确的结果直接显示为HTTP请求名称如下图所示断言结果名称:|断言结果注暮:所有数据写入一个文件文件名 |捌苴…断言: 用户登录错误的结果显示为与输入的断言内容不匹配的信息,如下图所示响应断言脚本可见如何使用JMETER\脚本\脚本06(响应断言).jmx。另外返回内容中如果想要监控的信息是动态值,那么可以使用正则先获取返回信息然后再在响应断言里输入正则变量即可。2.2.5IP欺诈在做性能测试时,如果不设置ip欺诈,那么在运行脚本时所有的线程用的都是同一个ip地址,这样不太符合真实的线上环境。另外有些程序会限制ip的使用,比如一个用户只能使用一个ip地址,那么在运行脚本时不使用ip欺诈的结果就是祖国江山一片红。所以ip欺诈功能需要根据实际情况来决定是否使用。反正我不用。以下操作步骤都是我在网上抄的,所以能不能成功,我不确定。(1)首先获取一些闲置的ip地址,且必须为固定地址,不能是自动获取的地址,方法:可以ping下哪些ip没有用,没有用的可以拿来用(cmd-pingip地址,也可以直接找网管)。(2)打开网络共享中心一本地连接一点击链接的网络查看一属性一Internet协议版本4一属性一高级一添加多个IP地址,如下图所示

文件旧漏撮©格磔L型《空一雪些172.1K.200.16172,16,200.123(4)在HTTP请求一下添加逻辑控制器-简单控制器,选择该控制器的目的是避简单控制器名称隼录发帖注暮:免造成HTTP简单控制器名称隼录发帖注暮:/htt£/htt£添加以:登号摘入上级»/限Z咻ChangeControlfer甥切5发巾AZ发巾复制http粘贴Jhttfin■■ntan.n4n配置元件►CSVDataSetConfig定的盎 ►前置处理器♦Sampler卜后置处理器•麻吉 卜u啊0cacneManagerFTP请求热省值HTTPCacheManagerHTTPCookie管理器HTTP信口落好理黑Ctrl-XCtrl-CCtrl-V1■r>U:XLL事则回时刷XHTTF信息头管理器;线程组Xhttp请求默认值:;i:f八rm产招三,4七工口占口称:(D1用户登录】线程组CriticalSectionControlleriu(2)【故障添加攻羯控制雷►>…(3)【故障Start酉E置元件►ForEmch控制器5口)1运营Startnopauses定时器►IncludeController 5>(5)【其他人.察看结果树Validate前置处理器►jp@gc-ParameterizedController、聚含报告入用表格察看算4p图形结果二断言结果4yTransaction*4yHitsperSec4yResponseTm复制粘贴DuplicateCVI-XC-trlCCtrl-VCtrl+Shift-CSamplerk后置处理器►断言 ►监听器 ►RuntimeController -SwitchControllerWhilleController事著控制器ResetGui删除Delete]DelayThreat]调度器交替控制器仅一次控制器吞吐里控制器4yResponseT4yBytesThroui4yTransactionUndoRedo度■配置陵时词f种)如果UID控制器录制控制器4yResponseT(5)添加CSynchronizin打开化警网EhB才面VSDataSetConfig,即参数专行参数化这里就不多说了。“TestPlanfuThreadGroup*HTTPCookieManager冠UserDefinedVariables乂HTTPHeaderManager1卜s登录发(6)接着将http请求界面中的Implementation改为HttpClient4oCixrterrt褶百:/i;:Lcaiiiorumphfi〃!国百立完向里逆无运向YCixrterrt褶百:/i;:Lcaiiiorumphfi〃!国百立完向里逆无运向YUsaKespAliXift, ^一■:।■:.「-「■」」 「l曰ruwjsMGOEpatibWh&nt:3附眼将器邮:笄舞名可碱P:otahostrdqti-ThreadGroupHTTPCOOKie蜀an被wuserDinnedv^ri^esHTTPHeaderManagerHTTP请求BasicAxlvaticedHMpClienl4▼Iit,削enieiTtat丽:方法:CET端口号:(7)将HTTP请求页面切换到【Advanced】设置页面设置sourceaddress为IP/Hostname。I刈暗1回1同―4BasicAdvancedBasicAdvancedf津TestPlanfajThreadGroup浅HTTPCookieManager犬.UserDefinedVariables*HTTPHeaderManager、1登录发帖

HTTP请求名称:http://localhost/upload.'Torum.php■,Embei■,Embeihttp://localhost/upload/fornm.php

HZ口目00“|~££&HTPJ1LFilesA:登录事劳控制器/http://localhost/upload/forum.phpdhttp://localhosVuploadjTorum.php色发帖隼台点-发帖事劳控制器Jhttp:.''/localhosVupload/forurn.php/httpJ/localhosVupload/member.php/http://localhosVuploadfforum.php口朗HTML文件获取所有内含的费迪匚Sourceaddr&ssIPi'HostnameDevice-DeviceIPv4&asMD5hast]?(8)在后面添加CVSDataSetConfig设置好的参数名称:${ipadress}。(9)添加结果树,推行报告等,运行查看。T.TflffiPianfq1TriruJdGidupKHTrPGgMifHiagw唐UfierDeHrtpriVarlsiWesXI^TTFHsacterMan.ageit3团时1K■=VTHl;Fp!'--rJT.TflffiPianfq1TriruJdGidupKHTrPGgMifHiagw唐UfierDeHrtpriVarlsiWesXI^TTFHsacterMan.ageit3团时1K■=VTHl;Fp!'--rJri3琼青耕学代M工幅^113J--11233T*13rti*4一口OO9中事白中,营♦白。白4,0察看片果帼名春:紧香菇票利江年二照整甲・与人一十支件文件名^Fi:E«1JE^ml,Twcmjku&鳍。2he力n-L$thiAddFES3;473,日寓Cl14mDMlR口胃口WEdi加口KCEa_ll32nBg 君时10594瓦*P*EXCEn节旌—QNiiwussinum-iU;舒曰加『;XGE<J1LlmmZm『wqj?^iC^hnt*.:lln!iheifp-dlrvE!Jso-1内㈱।吐Mn;:甲a*0icnnpjtiizie;wjrwu:0m$24CLR3.5.30F29)胸口eH:tn明|制W.Ie叫曲一中tn祁।irn困吟品q/巾9#$雁0/*,MlitfrticnMidEM-iMMrpiihlidppllrsHththtiMtHd.■appIkiUor(10)也可以使用【cmd-netstat-an】查看ip的使用情况。EQ3CiXVJ'indaiLVs\5ystem32\cmd.exeicrosoftwindows[版本10.0.105S6](c)2015lierasoftCorparatian«保留所有权利。:\Users\arindn>netstat-ani舌动连接议PPPPPPPPPPPLfrccccccccccc^^WTTTTTTTTTTT™本地地址 外部地址状态议PPPPPPPPPPPLfrccccccccccc^^WTTTTTTTTTTT™本地地址 外部地址状态D.0.0.0:1350,0.0.0:0LISTENING口,0.0.0:44:0LISTENING0.0,0,0:66460,0.0,0:0LISTENTS:7680:0LISTENING0.包0.0:4965:0LISTENING0.0.0,0:496650,0.0.0:0LISTENING氏0.0.0:4^66:0LIS7EWIN3口,Q.口,0:496670,口,0,Q;QLISTENING0.0.0,0:4966:0LISTENING:49670:0LISTENING127.Q,0,1:40000.0,oho:oLISTENING3开始搞事情HTTP接口的方法有很多,这里我只讲解GET和POST两种。另外监控对象以WINDOWS为例。

3.1准备工作(1)监控TOMCAT资源(请参考2.1.1章节),监控WINDWOS资源(请参考第2.1.2章节)。(2)选取HTTP接口,了解接口需要传递的参数,使用的方法及返回正常/错误内容及格式。(3)确定一个虚拟用户是否只能使用一个IP地址。(4)确定消息头内容,可以通过浏览器的开发者模式查看。以GoogleChrome浏览器为例简单讲解。打开浏览器输入访问地址及账号和密码(登录页面),然后F12开启开发者模式后切换到Network标签页面开始录制,然后点击登录按钮进入到系统里面后关闭开发者模式,找到登录接口,接着点击右侧的Header标签页面进行相关内容的查看即可。ElementsConsoleSourcesNetworkPerformanceMemoryApplicationSecurityAuditsJSCSSImgMediaFontDocWSManifestOther90000ms100000ms110000ms120000ms130000msDate:Mon,05Nov201809:45:24GMTServer:nginx/1.12.0vehidelou?t=1541411066681Set-Cookie:3AC_SESSIONID=8dl58425-8e27-4cdc-8441-79916062dbfd;Path:onlineRate?t=1541411066681Nov-201810:47:48GMT;HttpOnlyTransfer-Encoding:chunkedVary:OriginVary:Accept-EncodingonlineRate?t=1541411097504=1541411127496►RequestHeaders(10)□ElementsConsoleSourcesNetworkPerformanceMemoryApplicationSecurityAuditsJSCSSImgMediaFontDocWSManifestOther90000ms100000ms110000ms120000ms130000msDate:Mon,05Nov201809:45:24GMTServer:nginx/1.12.0vehidelou?t=1541411066681Set-Cookie:3AC_SESSIONID=8dl58425-8e27-4cdc-8441-79916062dbfd;Path:onlineRate?t=1541411066681Nov-201810:47:48GMT;HttpOnlyTransfer-Encoding:chunkedVary:OriginVary:Accept-EncodingonlineRate?t=1541411097504=1541411127496►RequestHeaders(10)□X-Application-Context:aerozhonghuan-jac-server:release:10041FlgetCurrentUserMenu?t=1541411066193□fuelConsumption?t=1541411066681OGroupbyframeOPreservelog(JDisablecache□OfflineOnline▼□current?t=1541411066684||getCurrer)tUserMenu?t=1541411066684□fuelConsumption?t=1541411097504vehidelou?t=1541411097504140000ms□□□□□vehidelou?t=1541411127496onlineRate?t=1541411127496rIfuelConsumption?t=1541411157509_TIvehidelou?t=1541411157509▼RequestPayloadviewsource▼{username:"facQl",password:"DC483E80A7A0BD9EF71D8CF973673924")password:"DC483E80A7A0BD9EF71D8CF973673924"22/25requests29.4KB/30.1KBtransferredusername:"facBl"3.2接口测试接口测试包括功能和性能两个方面。该文章主要是讲解如何使用JMETER编写测试脚本,不包含性能测试的分析和调优。该内容可以参考另外一篇文章《性能分析与调优指南》。脚本组成基本组成如下图所示

r.测试计划Xhttp信息头管理器Xhttp请求默认值fU线程组9Z用户登录乂loginusersL工响应断言一■Synch「onizjngTime「――察看结果树一&果合报告〜用表格察看结果〜断言结果国工作台具体操作如下(1)打开JMETER后,在测试计划下添加线程组,如下图所示又件瞬题search胫仃逝须帮助Threads(Users)k粘贴cui-vResetGuiUndoRedo+TTTTestFragment 卜酉EThreads(Users)k粘贴cui-vResetGuiUndoRedo+TTTTestFragment 卜酉E置元件 ►定时器 ►前置处理器 ►后置处理器 ►jp@gc-MappingThreadGroupjp@gc-UltimateThreadGroupsetupThreadGrouptearDownThreadGroup线程组名称:注意:jp@gc-SteppingThreadGroup和jp@gc-UltimateThreadGroup用于性能测试的场景设置。setUpThreadGroup相当于初始化,在线程组之前运行。tearDownThreadGroup相当于退出,在线程组之后运行。这里讲解的是线程组。(2)在该线程组下添加HTTP请求(3)在HTTP请求界面的Basic标签区域输入服务器IP、端口号、选择方法(一般是GET和POST),输入访问路径,最后再Parameters或者BodyData标签页中添加或者输入要传递的参数名和值一般情况下,用非JSON格式传递参数的值在Parameters标签页的列表中添加,如下图所示用JSON格式传递的参数在BodyData标签页中输入,如下图所示

[_|自动受定向叵]阻葩M定向0LfeeKeepAlive||UsemuItipart-'fc-rm-dstafc-rParametersBodyDataFilesUpload-1~{"username":{username}"?"password":"J{password}"^(4)如果接口需要通过不同的值进行测试,那么就需要对接口中待传递的参数进行参数化。在HTTP请求上右键点击添加-配置元件-CSVDataSetConfig。完成参数化设置该配置元件可以放在HTTP请求下,也可以放在线程组,更可以放在测试计兴HTT喟息头管理器CSVDataSetConfig兴HTT喟息头管理器CSVDataSetConfig名称:)CSVDataSetConfig注释:共HTT嗝求默认值r短线程组F/loginusers:气响F/loginusers:气响应既言兴CSVDataSetConfig-■SynchronizingTimer—&察看结果树K.鬃合报告&用表格察看结果—1.断言结果K工作台3.2.2数据共享这里借共享Cookie值来讲解如何让多个线程组共享某个Cookie值。比如只想进行一次登录生成Cookie值后,其他多个线程组均使用这个Cookie值进行接口的调用。当一个JMETER脚本中存在多个线程组时会用到数据共享技术。1)先准备2个HTTP接口(分别放在2个线程组里),HTTPCookie管理器,HTTP信息头管理器和HTTP请求默认值(可选)。结构如下f4接口测试然HTTP请求默认值XHTTP。。曲语管理器X-HTTP信息头管理器u1差录线程组/1量录匕3」2-查询数据线程组X2■■查询数据、察看结果树另外该测试计划中已选中如下选项(即先运行登录线程组然后再运行其他线程组)

.接口测试XHTTP®求默认值XHTTPCookieXHTTP信息头管理器々斑1壁录线程组遥录tie,2-查询数据^程组丁/2-查询数据L 察看结果树LR工作台H独立运行整个鞋程组(恻如在一个组运行绪束后启动下一个)口H独立运行整个鞋程组(恻如在一个组运行绪束后启动下一个)口RuntearDownThreadGroupsaftershutdownofmainthreads口国勤则试模式只有当你需要记录每个清求从服务器取得的数据到文件时才需要选择函数测试模式。为了方便理解,我们将登录线程组设置3个线程数,查看数据线程组设置1为了方便理解,?4t接口测试http请求默认值丈HTTP管理器丈HTTP信息头管理器U1差录线程组[J1量录2-查询数据线程组察看结果树工作台?4t接口测试http请求默认值丈HTTP管理器丈HTTP信息头管理器U1差录线程组[J1量录2-查询数据线程组察看结果树工作台从上图中我们可以看出查看数据线程组访察看结果树名称:察看结果树注窿所有数据写入一个文件文件名Search:T&xt电1差录日1差录问系统失孵源因是会话过期。了找出出错原因,我们看下查询数据接口的请求92查询数据内容(如下图所示)Text广取样器结果『请求『响应熟据GEThttp://212.64.69,99:10041/api/app/advertisement/getLatestAdList[nocookies]GEThttp://212.64.69,99:10041/api/app/advertisement/getLatestAdList[nocookies]电1墨录中录/忸查询额据RequestHeaders:Connection:keep-aliveContent-Type:application/jsonHost:212.64.69,99:10041User-Agent:Apa.che-HttpClient/4.5.2(Javayi,3,0_51;暂时没发现问题,现在我们将查询数据接口放在登录线程组的登录接口下方,再次执行脚本然后再看看查询数据的请求内容(如下图所示)XHTTP请求默认值XHTTPcookie管理器XHTT喟息头管理器鼐1-登录线程组卜量录LJ2道询数据M2-查询数据线程组察看结果树名称:察看结果树所有数据写入一个文件KI工作台察看结果树文件名取样署结果请求GET9:10041/api/app/advertisement/getLatestAdListCookieXHTTP请求默认值XHTTPcookie管理器XHTT喟息头管理器鼐1-登录线程组卜量录LJ2道询数据M2-查询数据线程组察看结果树名称:察看结果树所有数据写入一个文件KI工作台察看结果树文件名取样署结果请求GET9:10041/api/app/advertisement/getLatestAdListCookieData:悔卜查瞰握©2-查询数据Q2-查询蓟据RequestHeaders:Connection:keep-aliveContent-Type:application/jsonHost:9:10041User-Agent:Apache-HttpClient/4.5.2(Java/1.8.0_51)以上两图以比较,发现查询数据接口的请求内容中有个CookieData值,这个值就是我们要获取的数据。CookieData值有两种使用方法:固定值和动态值,现在分别进行讲解如何获取CookieData值。Cookie固定值我们还是将2个接口分别放在2个线程组里。只运行登录线程组,得到登录接口返回的token值。如下图所示Xhttp请求默认值XHTTPCookie管理器XHTTPW息头管理器,战1-登录续程组1/1垂录,卜,2■■查询数据线程组

2■■查询数据&寮看结果树察看结果树名称:上看结果树注暮:所有数据写入一个文件文件名口浏览…|Log/DisplayOnly:口仅日志错误□SuccessesConfigureSearch:| |[_jCasesensitive口RegularexpSearchReset取样i号结果[请求I响应数据I rcode,:0,,message-:'SUCCESSTdataTi<r:1533901647443,"createTime-:-2018-08-10ig4y2r.'createByr'roor.'updateTime^OIS-OS-IO20:08:36","updateBy-:"roor,tdl(r:null,"fleetl(r:1527577061112,"type--driver,TleetName"凑微车队丁avata「:null「driverName-济里-JnickName-mullJmObile-:-1588890100V,"passwor(T:-5E774EE5AEF9AODBF6B52B4E76FB4CCDTidentityCar(r7541234156845675456',"ser:-MALEVt>irtridar:null,■emair:null,"qq':null;address":null,'driverLicense":"541234156845675456*,-|icenseValidDate":"2020-08-1200:00:00-|icensePicture":,static/images/noPichjre.png",'qualityValidDate':-2021-08-1900:00:00","qualityPicture':"static/images/noPicture.pngTapplyStatus,:-NOT_APPLY".|[o^en]'5ddO6ecc-83d1-4fcd-8bdd-2b9197c2b8er-signe(rfalse,-identity':"driverlfleerrdefauttVin":*TTS0000200003000r,"openStolen-"YES","fleetUsernull.lotalPoinrnull."sair^Swie-}}记住这个tokne值。此时打开HTTPCookie管理器输入以下内容.接口测试XHTTPi青求默认值Cookie管理署xhttp信息头管理器滋1蚩录线程组上/1量录卜.2■■查询数据线程组T 2-查询题据匚屋察看结果树HTTPCookie管理器名称:〔HTTPCookie管理器注释:Options□每次反复清除Cookies?Implementation:HC4CookieHandler▼CookiePolicy:standard存睛在Cookie管理器中的Cookie-3L 7 7JAC_SESSIONID5dd06ecc-83d1-4fcd-8bdd-2b9197c2b8e79/安全

五上图中的“值”就是token值。然后再将HTTPCookie管理器放在第2个线程中,如下图所示

?*接口测试http请求默认值¥http信息头管理器fU1型录线程组工Z1餐录q电2■■查询数据线程组I XHTTPC口口tie管理器—|y2■■查询数据

察看结果树LKI工作台启动2个线程组并执行,最终得到线程组的正确返回值,如下图所示辛-0接口测试XH仃嘴求默认值XH/Pfl辛-0接口测试XH仃嘴求默认值XH/Pfl息头管理器9《5》1建录线程组IJ1聿录,移5■■查询数据线程组)<j;HTTPCookie管螺L/2-查询数据匚“察看结果树察看结果树名称:|察看结果树注释二所有獭据写入一个文件取样溶结果请求响应数据|,"message':"BT:'roor,"adType":-DRIVERVadTitle':"^^hB222-,"adCover:whttp://6:30501/files/cover/rafedbac-a02c-4ade-98c0-c4089b16f8fe.png'"advertiser":"■谁看见7adeontenr:Jp>司忖告,新熠加,^0>i</p>"adStatus":",RELEASEVissuelcr:1,-issueTime-:-2O18-O6-2613:56:32°,"issueName"nullLricTiZO/createTime'^IS-oe-ia11:41:42VcreateBy":・rootVupdateTime":"2018-06-1911:41:4T「updateBT;"roofadType■:-DRIVER-adTltleF机广告Tja(lCover:-http://222.2l2.94.96:3050l/mes/cover/6953cca2-54aX52l-a5b2-eaf746b026d9.png-:a(»veEser■一道森传媒--adContenr「vp也难轻卡车辆展示v/p>7adStatus~-RELEASETissuel(ri「issueTime;-20l8-06-1911:41:47VissueName":null}.ri<r:l7,'createTimeT2018-06-1518:20:36","createBr:Toor;updateTime":"2018-06-1518:20:4Z;updateBr:Toor;adType':'DRIVER',"adTitle':'^ff',"adCover:-http://26:30501/files/cover/4ffc27c0-ca6a•4637-aeb2-e6e42bf1f593.jpg丁advertiser:11优酷传媒"JadContenf,vp邛可啥地方撤地方v/p>TadStatus^RELEASE",■issuel(T:fissueTime':-2018-06-1518:20:4r;issueName':nullDCookie动态值使用原理:获取第1线程组中登录成功返回的token值后将其设置为全局变量,然后该变量作为第2个线程组中接口的cookie值使用。我们需要“正则提取器”(用于获取token值并保存在变量里)和“BeanShellSampler(将token值设置为全局变量)”。1)修改修改perties文件:CookieManager.save.cookies=true。重启jmeter2)正则提取器放在登录接口下方,BeanShellSampler放在第1个线程组下方,结果如下图所示

?金接口则试HTTP请求默认值乂HTTP信息头管理器?混巾手录线程组9/1差录>正则表达式提取器

万BeanShellSampler.接口测试Xhttp清求默认值X.接口测试Xhttp清求默认值Xhttp信息头管理器论1登录线程组?"W1羞录♦画裘达式提取图LJBeanShellSampler(,2-查询数据线程组XHTTPCoolde管理器L/2-查询数据L屋瓢看结果树KI工作台正则表达式提取器名称:I正贝陆达式提取器 一注释:Applyto:QMainsampleandsub-samples(§)MainsampleonlyOSub-samplesonlyOJMeterVariable引用名称:token正则表达式:引用名称:token正则表达式:token-:-(.+?)'模板二$1$匹配数字(0代志随机):1赦省值:I□Useemptydefaultvalue⑥主体OBody(unescaped)OBodyasaDocumentO信息头ORequestHeadersOURLO响应代斛O响应信息引用名称:token,可以自定义正则表达式:"token〃:〃(.+?)〃,不同数值的表达式写法不一样模板:$1$匹配数字:04)BeanShellSampler:${__setProperty(token,${token},)},如下所示5)此时在第2线程组中“HTTPCookie管理器”中输入如下内容名称:JAC_SESSIONID值:${_property(token)},这就是全局变量名称域:就是接口的IP地址路径:/7-1接口则试Xhttp请求默认值X7-1接口则试Xhttp请求默认值Xhttp信息头管理器卜池登录线程组O-Z1遥录L/BeanShellSampler,:卷2-查询数据线程组J2-查询数据XHTTPCookie管理器察看结果树L凶工作台察看结果树名称:|察看结果树注释:斫有薮据写入一个文件 文件名 浏览…Log/DisplayOnly:口仅Search:InCasesensitive口Regularexp.SearchResetText❷1Text❷1-登录。BeanShellSampler电2-查询数据rcode':0,"message-:'SUCCESS",'data':[ricr:21,'createTime-:-2018-06

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论