软件性能测试_第1页
软件性能测试_第2页
软件性能测试_第3页
软件性能测试_第4页
软件性能测试_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

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

文档简介

软件性能测试第1页/共99页性能测试概要第一章认识LoadRunner第二章VuGen录制Vuser脚本第三章Controller创建运行场景第四章Analysis分析结果第五章课程内容第2页/共99页1、为什么要做性能测试?1、客户有明确要求。2、公司内部想知道目前系统的性能状况。3、找出系统性能瓶颈。4、了解系统在长时间的压力下性能情况。第3页/共99页2、性能测试定义性能测试是通过自动化测试工具模拟

多种正常、峰值以及异常负载条件来

对系统的各项性能指标进行测试。性能关注点时间(用户使用的响应时间)空间(资源消耗情况)第4页/共99页3、性能测试范围性能范围(广义)系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括:执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性。负载测试通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。压力测试对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。第5页/共99页负载测试、压力测试和性能测试的区别负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。性能测试是为获取或验证系统性能指标而进行测试。多数情况下,性能测试会在不同负载情况下进行。6第6页/共99页6、性能测试的类别(其他)配置测试

配置测试主要是通过测试找到系统各项资源的最佳分配原则。例如我们可以不停的调整oracle的内存来决定cpu和内存的匹配情况。(当前配置-调优-未来业务增长)容量测试测试系统能够处理的最大会话能力。确定系统可处理同时在线的最大用户数,通常和数据库有关。可靠性测试加载一定的业务压力(比如直到Cpu资源在70-90%的使用率)的情况下,运行一段时间,检查系统是否稳定。失败测试对于有冗余备份和负载均衡的系统,通过这样的测试来检验如果系统局部发生故障用户是否能够继续使用系统,用户受到多大的影响。第7页/共99页4、性能测试指标(一)事务(Transaction

)在web性能测试中,一个事务表示一个“从用户->webServer->DB->webserver->用户”的过程,一般的响应时间都是针对事务而言的。响应时间(ResponseTime)响应时间指的是从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间。在某些工具中,响应时间通常会称为“TTLB”,即“timetolastbyte”,意思是从发起一个请求开始,到客户端收到最后一个字节的响应所耗费的时间。响应时间的单位一般为“秒”或者“毫秒”。一个公式可以表示:响应时间=网络响应时间+应用程序响应时间。点击率(客户端HitRate)

HitRate:是指每秒发送的HTTP请求的数量,点击率越大对server造成的压力就越大。第8页/共99页4、性能测试指标(二)吞吐量(Throughput)

吞吐量指的是单位时间内处理的客户端请求数量。通常情况下,吞吐量用请求数/秒或者页面数/秒来衡量。从业务角度看,吞吐量也可以用访问人数/天或者页面访问量/天来衡量。

并发用户(Concurrentusers)

并发数是指同时进行请求的客户的数量,并发数用于模拟用户的真实负载情况(并发情况是对系统最大的考验),并发数≠同时使用系统的用户数。同一时刻对服务器有负载(注意:全部用户、在线用户、并发用户三者之间的区别)第9页/共99页4、性能测试指标(三)资源利用率(内存、CPU、网络、I/O的利用率等Resourceutilization)

资源利用率指的是对不同系统资源的使用程度,例如服务器的CPU(s),内存,网络带宽等。资源利用率通常以占用最大值的百分比n%来衡量。10第10页/共99页5、2/5/10原则当用户能够在2秒以内得到响应时,会感觉系统的响应很快当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以当用户在5-10秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受而当用户在超过10秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。第11页/共99页7、性能测试实施过程(一)了解被测试项目的性能测试需求分析被测试项目的性能测试需求编写性能测试计划/测试用例脚本维护(编写程序)执行脚本(执行程序)分析结果性能调优第12页/共99页9、性能测试工具商业MercuryLoadrunner(现为HP)RationalPerformanceTesterSeagueSilkTestRadviewWebLoad免费MicrosoftWebApplicationStressToolMicrosoftApplicationCenterTest开源OpenSTAJmeterGrinder第13页/共99页性能测试概要第一章认识LoadRunner第二章VuGen录制Vuser脚本第三章Controller创建运行场景第四章Analysis分析结果第五章课程内容第14页/共99页1、LoadRunner简介LoadRunner是MercuryInteractive公司开发的用于测试应用程序性能的工具。通过LoadRunner,可以在可控制的峰值负载条件下测试系统。LoadRunner可以模拟产生分布在网络中的数千个虚拟用户(Vuser),通过使用最少的硬件资源,提供一致的、可重复的、可度量的负载,像实际用户一样使用您的应用程序,并生成评估应用程序性能所需的信息(以报告、图等形式)。第15页/共99页安装注意事项:操作系统最好为Windows2000安装前最好关闭其他应用程序安装文件存放路径及安装路径中不能包含中文不出现空格,中文,括号Tomcat6.0Program(x86)License的问题,参见安装包中的破解方法。LoadRunner的使用事项使用IE6.0进行录制(其他浏览器会产生无法预知的兼容性问题)安装后不能录制的解决方法参见《LR打开录制无法弹出IE处理方法》2、LoadRunner的安装及使用第16页/共99页3、LoadRunner组成结构VuGen:(VirtualUserGenerator)虚拟用户脚本产生器Controller:压力调度和监控系统控制器(创建场景、场景设计、场景监控)负载器(注意:控制器和负载器不能同一台机器,一定要分开)Analysis:压力结果分析工具第17页/共99页4、LoadRunner运行原理第18页/共99页5、LoadRunner脚本核心内容事务集合点参数化检查点动态控制关联第19页/共99页性能测试概要第一章认识LoadRunner第二章VuGen录制Vuser脚本第三章Controller创建运行场景第四章Analysis分析结果第五章课程内容第20页/共99页1、Vuser的概念虚拟用户生成器(也称为VuGen)实际上是一套针对各种应用程序类型和通信协议,开发调试Vuser脚本的工具。

VuGen能够录制、编辑Vuser脚本,并且可以生成各种函数,来定义您在录制会话过程中执行的操作,还可以运行这些脚本。VuserLoadRunner生成的模拟用户实际操作的虚拟用户。Vuser通过执行典型业务流程模拟实际用户的操作。增加Vuser的数量可以增大系统上的负载。LoadRunner拥有各种Vuser类型,每一类型都适合于特定的负载测试环境。第21页/共99页2、Vuser的类型(协议)应用程序部署解决方案:CitrixICA客户端/服务器:DB2CLI、DNS、Informix、MSSQLServer、ODBC、Oracle(2层)、SybaseCtlib、SybaseDblib和WindowsSockets协议。自定义:C模板、VisualBasic模板、Java模板、Javascript和VBScript类型的脚本。分布式组件:适用于COM/DCOM、Corba-Java和Rmi-Java协议。电子商务:FTP、LDAP、Palm、PeopleSoft8mulit-lingual、SOAP、Web(HTTP/HTML)

和双Web/WinSocket协议。EnterpriseJavaBean:EJB测试和Rmi-Java协议。ERP/CRM:Baan、OracleNCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、Siebel-DB2CLI、Siebel-MSSQL、Siebel-Web和Siebel-Oracle协议。传统:终端仿真(RTE)。邮件服务:Internet邮件访问协议(IMAP)、MSExchange(MAPI)、POP3和SMTP。中间件:Jacada和Tuxedo(6、7)协议。流数据:MediaPlayer(MMS)和Real协议。无线:i-Mode、VoiceXML和WAP协议。第22页/共99页3、新建Vuser脚本启动LoadRunner,选择“Create/EditScript”,打开VuGen,创建一个新的Vuser脚本注意:使用LR时,最好将分辨率设为1024*768,否则有些菜单显示不完全第23页/共99页4、选择系统通讯协议LRClientServerLR根据协议识别,QTP根据对象我们怎么知道用什么协议呢?第24页/共99页5、Vuser脚本的基本组成(一)创建的每个Vuser脚本都至少包括三部分: 一个Vuser_init、一个或多个Action、一个Vuser_end。LR语言:C、LR自身语言第25页/共99页5、Vuser脚本的基本组成(二)脚本部分录制部分执行时间说明Vuser_init登陆到服务器初始化Vuser加载脚本时,执行一次Actions客户端活动Vuser处于运行状态可设置运行参数,重复执行Vuser_end注销过程Vuser完成或停止结束脚本运行时,执行一次。第26页/共99页6、录制Vuser脚本(一)根据被测对象选择应用类型选择被录制的应用程序,浏览器的一般选择IE6.0,其他浏览器可能会存在问题。在URL中添加要测试的web站点的地址设置录制脚本的存放路径RecordintoAction中选择把录制的站点放到脚本的哪一个部分Recordtheapplicationstartup意思是应用程序一旦启动就录制脚本;如果不选此项,也可以在应用程序运行过程中选择开发录制脚本。Options中进行录制前的选项设置第27页/共99页6、录制Vuser脚本(二)第28页/共99页6、录制Vuser脚本(三)基于浏览器的应用程序推荐使用HTML-basedScript,脚本中采用HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解。不是基于浏览器的应用程序推荐使用URL-basedScript,脚本中的表示采用基于URL的方式,不是很好阅读。如果基于浏览器的应用程序中包含了JavaScript,并且该Script向服务器产生了请求,也要使用URL-basedScript的方式录制。基于浏览器的应用程序使用了HTTPS安全协议,也要使用URL-basedScript的方式录制。选取哪种录制方式,遵循以下原则:第29页/共99页6、录制Vuser脚本(四)第30页/共99页6、录制Vuser脚本(五)通知Vugen去重新设置每个action之间的Httpcontext,缺省是需要的。保存一个本地的snapshot,可以加速显示把html的title放到web_reg_find函数里面支持的字符集标准Httpheader的录制,我们采用缺省即可,不需要用web_add_header去录制非标准的header信息。对录制的content的内容进行filter,不作为resource处理的。第31页/共99页6、录制Vuser脚本(六)第32页/共99页6、录制Vuser脚本(七)点击“StartRecord”开始录制脚本第33页/共99页6、录制Vuser脚本(八)注意:录制过程中不要使用浏览器的后退功能,LR支持的不是很好开始、运行、结束、暂停录制编译脚本创建Action插入Text检查点插入事务“起始点”插入事务“结束点”插入集合点插入注释改变录制的Option设置第34页/共99页7、增强Vuser脚本-事务事务(Transaction)事务(Transaction)我们为了度量服务器响应指定的Vuser请求所用的时间,需要在任务的开始和结束位置插入这样一个函数,这样就定义了一个事务,LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在测试结果中会有反映。插入事务操作可以在录制过程中进行,也可以在录制结束后进行。每一个脚本中,可标记的事务数量不受限制,但是名称不能相同,且事务的开始与结束必须匹配。自动插入手动插入//开始事务:事务名lr_start_transaction(“login”);//结束事务:事务名,事务状态lr_end_transaction(“login”,LR_AUTO);第35页/共99页7、增强Vuser脚本-插入Text/Image检查点(1)在进行压力测试时,为了检查Web服务器返回的网页是否正确,VuGen允许我们插入Text/Image检查点,这些检查点验证网页上是否存在指定的Text或Image,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。插入检查点在树模式下进行插入操作(检查页面之前)举例说明:系统登录-要测试200人同时进行登录,但是在应用程序里面没有正确的关闭数据库的连接,导致登录100人后,建立了100个数据库连接,第101一个人登录的时候,由于超出数据库连接的最大数,所以,程序抛出了一个数据库异常。但是LR接收到了客户端的请求并且做出了响应,所以loadrunner会认为程序是正确执行的,但是事实却并非如此。注意:LR只会判断Transaction是否被执行,而不会判断你获得的结果是否正确。而我们需要判断的往往是正确执行该次操作(事务)并获得正确的结果。为了保证测试时结果的正确性,一定要添加检查点。第36页/共99页7、增强Vuser脚本-插入Text/Image检查点(2)注意:使用TreeView来增加检查点会比较方便、直观;推荐在录制脚本过程中增加检查点第37页/共99页7、增强Vuser脚本-插入Text/Image检查点(3)插入Text检查点(推荐使用web_reg_find)web_find与web_reg_find的区别-Web_find只适合html静态页面的检查,效率低,很少用。-web_reg_find在缓存中查找内容,效率高。第38页/共99页7、增强Vuser脚本-插入Text/Image检查点(4)web_reg_find设置Text检查点属性//LR中显示的脚本web_reg_find("Text=vince", "SaveCount=count", "Search=Body", LAST);Text:被搜索的字符串SaveCount:用count保存搜索到的字符串的次数Search:搜索范围第39页/共99页7、增强Vuser脚本-插入Text/Image检查点(5)设置Image检查点属性//LR中显示的脚本web_image_check("web_image_check",“Src=images/QQ.jpg",LAST);第40页/共99页7、增强Vuser脚本-动态控制//利用web_reg_find的SaveCount中的count计数判断测试结果if(atoi(lr_eval_string("{count}"))==1) { lr_end_transaction("login",LR_PASS);lr_message("TestOK"); } else { lr_end_transaction("login",LR_FAIL); lr_message("TestNG"); }//lr_eval_string(“{count}”)读参数值//atoi()转化数据类型第41页/共99页7、增强Vuser脚本-关联(1)为什么需要关联语句:许多应用程序和网站都是按当前日期和时间来标识会话。如果尝试重放脚本,该操作将会失败,因为当前时间与录制的时间不同,通过关联语句可以保存动态数据,并且在整个运行方案过程中使用这些数据。例如:当你回放一次后,LR会自动录找你录制的时候和回放时候的差别,找出动态数据,并作成参数。例如当用户登录时,会产生一个Sessionid号,访问结束后,该Sessionid便会失效。录制的时候,在脚本里面获取到了该Sessionid,但当再回放的时候,这个Sessionid已经无效了,所以,需要把这个Sessionid作为一个动态数据,当登陆的时候,便获取一个新的有效的Sessionid,然后通过web_reg_save_param(“WCSParam_Text2”,“LB=ProcessID=”,“RB=;”,“Ord=1”,“RelFrameId=1”,“Search=body”,LAST);

函数保存下来第42页/共99页7、增强Vuser脚本-关联(2)关联方法自动关联(Ctrl+F8)手动关联手动关联步骤录制脚本(两个业务完全一致)比较脚本(Tool\Wdiff)找到需要关联的内容找左右边界值(ServerResponse)添加规则第43页/共99页7、增强Vuser脚本-关联(3)intweb_reg_save_param(constchar*ParamName,<ListofAttributes>,LAST);第一部分:参数名字,用双引号括起,逗号分开;第二部分:ListofAttributes,包括:LB、RB、RelFrameID、Ord、Search、SaveOffset、SaveLen等。第三部分:LAST,结束标志。LB是左边界,RB是右边界:比如程序中有这么一个赋值,ProcessID=A53625E18440FCE81F26DCE712E65EBA;如果ProcessID的值是动态的,我想使用动态变量,那我设定查找左边界为LB=ProcessID=,右边界为;的字符,如果找到了,就替换成变量.Search:是指查找范围,就是说在哪里查找这些值,可以取这样几个值,我们一般设为ALL,Body等。Headers(Searchonlytheheaders),Body(searchonlyBodydata,notheaders),Noresource(searchonlythehtmlbody,excludingallheadersandresources),ALL(searchBodyandheaders).ThedefaultvalueisALL.RelFrameID:ThehierarchyleveloftheHTMLpagerelativetotherequestedURL.一般取1ORD:Thisparameter,alsoknownasInstance,indicatestheordinalorinstanceofthematch.一般取1第44页/共99页7、增强Vuser脚本-参数化(1)对Vuser脚本进行参数化的目的:1、唯一性约束(注册账户)2、日期约束(订票日期限制)3、数据约束(数据库数据,航班动态)4、缓存约束(相同的账户登录和不同账户登录测试结果不一样)参数化包括两项任务:1、在脚本中用参数取代常量值2、设置参数的属性以及数据源第45页/共99页7、增强Vuser脚本-参数化(2)选中要替换的值,然后点鼠标右键,选择“Replacewithaparameter.”,出现以下窗口

第46页/共99页7、增强Vuser脚本-参数化(3)参数类型解释:DateTime:在需要输入日期/时间的地方,可以用DateTime类型来替代,其属性设置也很简单,选择一种格式即可,当然也可以定制格式。GroupName:在实际运行中,LoadRunner使用该虚拟用户所在的VuserGroup来代替,但是在VuGen中运行时,GroupName将会是None。LoadGeneratorName:在实际运行中,LoadRunner使用该虚拟用户所在LoadGenerator的机器名来代替。IterationNumber:在实际运行中,LoadRunner使用该测试脚本当前循环的次数代替。RandomNumber:随机数,在属性设置中可以设置产生随机数的范围。UniqueNumber:唯一的数,在属性设置中可以设置第一个数以及递增数的大小。注意:使用参数类型UniqueNumber必须注意可以接受的最大数。例如:某个文本框能接受的最大数为99,当使用参数类型时,设置第一个数为1,递增的数为1,但100个虚拟用户同时运行时,第100虚拟用户输入的将是100,这样脚本运行将会出错。注意:这里说的递增意思是各个用户取第一个值的递增数,每个用户相邻的两次循环之间的差值为1。举例说明:假如起始数为1,递增为5,那么第一个用户第一次循环取值1,第二次循环取值2;第二个用户第一次循环取值为6,第二次为7,依次类推。VuserID:在实际运行中LoadRunner使用该虚拟用户的ID来代替,该ID是由Controller来控制的。但是在VuGen中运行时,VuserID将会是–1。UserDefinedFunction:从用户开发的dll文件提取数据。File:需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据。第47页/共99页7、增强Vuser脚本-参数化(4)点击“Vuser”菜单中“ParameterList”按钮,打开参数列表窗口,可以创建、修改脚本中所有参数第48页/共99页7、增强Vuser脚本-参数化(5)参数文件注意事项:1、参数化文件不能过大,最大不能超过15M2、文本文件要多出一行第49页/共99页7、增强Vuser脚本-参数化(6)【Selectnextrow】有以下几种选择:多个VU如何取值Sequential:按照顺序一行行的读取,每一个虚拟用户都会按照相同的顺序读取Random: 在每次循环里随机的读取一个,但是在循环中一直保持不变Unique: 每个VU取唯一的值。

注意:使用Unique类型必须注意数据表有足够多的数,比如Controller中设定20个虚拟用户进行5次循环,那么编号为1的虚拟用户取前5个数,编号为2的虚拟用户取6-10的数,依次类推,这样数据表中至少要有100个数据,否则Controller运行过程中会返回一个错误。【Updatevalueon】有如下几种选择:多次迭代如何取值Once: 在所有的反复中都使用同一个值,eachiteration:则每次反复都要取新值,eachoccurrence:则只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值。输出参数值:lr_output_message("User:%s\n\n",lr_eval_string("{UserName}"));第50页/共99页7、增强Vuser脚本-集合点集合点(Rendezvous)集合点:是一个并发访问的点,在测试计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner就会检查同时有多少用户运行到集合点,如果不到1000人,LoadRunner就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000人时,LoadRunner命令1000人同时去提交数据,达到并发访问的目的。lr_rendezvous("login");注意:1、集合点经常和事务结合起来使用,常放在事务的前面;2、集合点只能插入到Action部分,vuser_init和vuser_end中不能插入集合点;第51页/共99页7、增强Vuser脚本-其他注释:可以插入注释来描述活动或关于某个操作的信息/**费用查询*/模拟用户思考时间:我们把用户在连续的两个操作之间的等待时间称之为“思考时间”lr_think_time();消息函数:lr_debuge_message 将调试消息发送到输出窗口lr_error_message 将错误消息发送到输出窗口lr_get_debuge_message 检索当前的消息类lr_log_message 将输出消息直接发送到output.txt文件,此文件位于vuser脚本目录下,为了防止输出信息干扰TCP/IP通信lr_output_message将消息发送到输出窗口lr_message 将消息发送到Vuser日志和输出窗口注意:不要在事务中输出消息,因为这有可能使事务执行时间变长,扭曲事务结果第52页/共99页8、Run-TimeSetting-迭代通过配置运行时的设置,可以模拟不同的用户活动运行逻辑1、迭代2、操作块3、顺序4、权重第53页/共99页8、Run-TimeSetting-迭代迭代次数:LoadRunner可以按指定的次数重复执行Actions。操作块:操作块是脚本内单独的操作组,可以包含vuser_init、vuser_action、vuser_end,可以单独设置每个块的属性。顺序:可以设置脚本内的操作顺序,是按顺序运行还是随机。权重:对于随机运行的操作块,可以设置块内每个操作的权重或百分比。注意:如果在Controller中设置了方案持续时间,那么将覆盖迭代设置。就意味着如果持续时间为5分钟,那么Vuser将在5分钟内完成任意多次迭代,即使运行设置也只设置了一次迭代。第54页/共99页8、Run-TimeSetting-运行步设置第55页/共99页8、Run-TimeSetting-运行日志注意:1、一般在编辑、录制Vuser脚本时,建议开启日志记录。2、在脚本中包含参数传递、或参数值改变时,建议开启“Parametersubstitution”,将输出参数值到ExceptionLog窗口。3、在进行并发测试时,为了避免影响系统运行速度,建议关闭日志记录。第56页/共99页8、Run-TimeSetting-思考时间注意:ThinkTime的设置会影响服务器的压力,如果忽略的话压力最大。第57页/共99页8、Run-TimeSetting-其他设置第58页/共99页性能测试概要第一章认识LoadRunner第二章VuGen录制Vuser脚本第三章Controller创建运行场景第四章Analysis分析结果第五章课程内容第59页/共99页1、设置场景(一)运行场景描述在测试活动中所发生的各种事件。一个运行场景包括:一个运行虚拟用户活动的LoadGenerator机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。第60页/共99页1、设置场景(二)LR包含两种场景类型:ManualScenario:该项要完全手动的设置场景,这项下面还可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在Controller的Scenario菜单下设置。GoalOrientedScenario:如果你的测试计划是要达到某个性能指标,比如:每秒多少点击,每秒多少transactions,能到达多少VU,某个Transaction在某个范围VU(500-1000)内的反应时间等等,那么就可以使用面向目标的场景。第61页/共99页1、设置场景(三)Design:设计测试场景的静态部分,设置模拟用户生成器、模拟用户数量、模拟用户组等。Run:设计测试的动态部分,主要指添加性能计数器,在脚本运行的过程中可以通过这些计数器反馈数据。VU的百分比重要:根据业务运行情况来定(业界、后台)第62页/共99页2、添加脚本第63页/共99页3、设置Schedule(一)建立了测试场景后,我们可以对EditSchedule进行设置,设置测试开始执行的时间,对于手动设的测试还可以设定它的持续时间,以及何时起用或禁止调用模拟用户。第64页/共99页3、设置Schedule(二)第65页/共99页3、设置Schedule(三)场景设计技巧每隔30秒增加VU测试15-30Min释放VU与增加对称设置相关依赖第66页/共99页4、LoadGeneratorMachines(一)点击Generators按钮后,出现LoadGenerators对话框点击Details按钮后,配置Generator第67页/共99页4、LoadGeneratorMachines(二)如何确定需要多少台负载器OS协议LR版本内存(mmdir进程查看)控制器如何控制负载机运行:Tool\代理如何设置负载机Run:二进制文件传输信息运行设置:ThinkTime为3S-5S进程/线程:根据被测系统设计来定第68页/共99页5、设置集合点及其策略如果在脚本中设置了集合点,还需要在Controller中设置集合点策略。在菜单中调出设置集合点策略的窗口.,脚本运行的时候,在这里可以看到VU的状态。(当VU显示模式在VuserGroupMode下才能设置)第69页/共99页6、分析及监视场景(一)为了监视服务器的运行状况(DatabaseServer、WebServer等),需要添加性能计数器第70页/共99页6、分析及监视场景(二)状态含义关闭(Down)Vuser处于关闭状态挂起(Pending)Vuser初始化已就绪,正在等待可用的负载生成器,或者正在向负载生成器传输文件初始化(Init)Vuser正在进行初始化就绪(Ready)Vuser已经执行了脚本的初始化部分,可以开始运行正在运行(Run)Vuser正在运行。正在负载生成器上执行Vuser脚本集合点(Rendezvous)Vuser已经到达了集合点,正在等待释放完成并通过(Passed)Vuser已结束运行。脚本执行通过完成但失败(Failed)Vuser已结束运行。脚本执行失败错误(Error)Vuser发生了错误。要了解错误的完整说明,请查看“输出”窗口或“Vuser”对话框中的“状态”字段逐步退出(GradulaExiting)Vuser正在运行退出前的最后一次迭代退出(Exiting)Vuser运行结束,正在退出停止(Stopped)设置“停止”命令后,Vuser

即停止状态概要含义场景状态(ScenarioStatus)场景处于“正在运行”状态,还是处于“关闭”状态正在运行的Vuser(RunningVusers)负载生成器计算机上正在执行的Vuser数已用时间(ElapsedTime)指自场景开始运行到现在所用的时间每秒点击次数(Hits/Second)指每个Vuser运行期间,每秒对所测试网站的点击次数(HTTP请求数)通过的事务数场景运行到现在成功通过的事务数失败的事务数场景运行到现在失败的事务数错误数场景运行到现在发生错误的Vuser数运行状态及状态概要说明第71页/共99页6、分析及监视场景(三)LR只能监视它支持的服务器的资源,它支持大部分常见的服务器。SystemResource:包括windows平台,Unix平台等WebServer:包括Apache、IIS、Sun的iplanet等Applicationserver:包括Weblogic、WebSphere等Databaseserver:包括DB2,Oracle,Sqlserver,Sybase等Java:ejb,J2ee等,需要一个ejbdetector.jar文件第72页/共99页6、分析及监视场景(四)对Windows(Win2kserver)的监视:对windows的监视相对比较简单,监视前首先需要用有管理员权限的帐号连接被监server,例如:netuse\\qa-test/user:donny,输入密码。然后就可以添加计数器,比较常用的计数器有:Memory:AvailableMbytes物理内存的可用数(单位Mbytes)至少要有10%的物理内存值Processor:%ProcessorTimeCPU使用率。这是查看处理器饱和状况的最佳计数器。显示所有CPU的线程处理时间。如果一个或多个处理器的该数值持续超过90%,则表示此测试的负载对于目前的硬件过于沉重。为多处理器服务器添加该计数器的0到x个实例。ProcessorQueueLength:是指处理列队中的线程数,小于2。处理器瓶颈会导致该值持续大于2。ContextSwitches/sec:如果切换次数到5000*CPU个数和10000*CPU个数中,说明它忙于切换线程。NetworkInterface:BytesTotal/sec为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。SQLServer2000:%ProcessorTime,CPU使用率GeneralStatistics:Logins/sec,这是每秒登录到SQLServer的计数。SQLStatistics:BatchRequests/sec,每秒收到的Transact-SQL命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求每秒收到的Transact-SQL命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求的复杂程度等)影响。批请求数值高意味着吞吐量很好。第73页/共99页性能测试概要第一章认识LoadRunner第二章VuGen录制Vuser脚本第三章Controller创建运行场景第四章Analysis分析结果第五章课程内容第74页/共99页1、分析测试结果(一)场景运行结束之后,需要使用Analysis组件分析结果。Analysis可以在“开始程序”菜单中启动,也可以在Controller中启动。LR的报表分析功能也异常强大,有各种各样的报表,甚至可以将单个报表组合,也可以导出到Excel文件和Html文件。第75页/共99页1、分析测试结果(二)DNS解析时间:浏览器访问一个网站的时候,一般用的是域名,需要dns服务器把这个域名解析为IP,这个过程就是域名解析时间,如果我们在局域网内直接使用IP访问的话,就没有这个时间了。Connection:解析出WebServer的IP地址后,浏览器请求被送到了WebServer,然后浏览器和WebServer之间需要建立一个初始化HTTP连接,服务器端需要做2件事:一是接收请求,二是分配进程,建立该连接的过程就是connection时间。FirstBuffer:建立连接后,从WebServer发出第一个数据包,经过网络传输到客户端,浏览器成功接受到第一字节的时间就是FirstBuffer。这个度量时间不仅可以表示WebServer的延迟时间,还可以表示出网络的反应时间。Receive:从浏览器接收到第一个字节起,直到成功收到最后一个字节,下载完成止,这段时间就是receive时间。其他的时间还有SSLHandshaking(SSL握手协议,用到该协议的页面比较少)、ClientTime(请求在客户端浏览器延迟的时间,可能是由于客户端浏览器的thinktime或者客户端其他方面引起的延迟)、ErrorTime(从发送了一个HTTP请求,到WebServer发送回一个HTTP错误信息,需要的时间)第76页/共99页2、报表组合(一)Analysis默认的图表都是以时间作为横坐标,然而在分析结果的过程中,我们可能需要以“运行的用户数”作为横坐标,来比较结果。假如我们要画出WindowsResources-VUsers的图表,可以这样操作。首先打开WindowsResources图表,然后在图表上点鼠标右键,选择MergeGraphs。第77页/共99页2、报表组合(二)选择第一项“Overlay”,出现以下的图表,这样是把两个图表进行了合并,

温馨提示

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

评论

0/150

提交评论