版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
负载压力测试工具实践January231负载压力测试工具实践December221目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践2目录一、负载压力测试工具2负载压力测试工具HP公司(原MI)LoadrunnerIBM公司(原Rational)RationalPerformanceTesterCompuware公司QAloadMicrosoft公司WAS3负载压力测试工具HP公司(原MI)3负载压力测试工具体系结构图4负载压力测试工具体系结构图4负载压力测试工具应用组件5负载压力测试工具应用组件5负载压力测试工具VuGen虚拟用户生成器(VUGen)完成脚本记录。VUGen是在客户桌面上运行的部件,它捕获实际客户应用和服务器之间的通讯。VUGen通过将各种用户请求发送至服务器来完全模拟一个真实用户的实际行为。VUGen能支持Netscape和InternetExplorer浏览器,或任何其它第三方的支持代理服务器设置的浏览器。完成录制后,一个测试脚本就生成了6负载压力测试工具VuGen6负载压力测试工具ControllerLoadRunner控制器提供一组性能监测器,在负载测试过程中监测系统各层面的每一部件的性能。通过记录整个系统所有性能数据,测试人员可以将这些信息对应最终用户的负载和响应时间,以定位瓶颈所在。LoadRunner为网络、网络服务器和大多数的常规Web服务器,应用服务器和数据库服务器提供性能监测。性能监测以一种完全不干扰被测系统的方式进行,最大限度地减少对性能的影响。所有的这些监测器都与硬件、操作系统无关,特别是不需要在目标服务器上安装任何探针软件。7负载压力测试工具Controller7负载压力测试工具AnalysisLoadRunner的Analysis提供一个集成环境,集中收集所有在测试周期中产生的数据。由于这个工具功能强大且使用简单,测试人员可以创建跨场景的图表数据比较,增强数据分析的能力和速度。8负载压力测试工具Analysis8负载压力测试工具LoadGeneratoragentLoadGenerator是负载生成器,在多台机器上运行vuService方式运行agent可以运行全部类型(GUI(WinRunner,QuickTestProfessional,etc.)orGUI-likescripts(Citrix,SAPGUI,etc.)的vuser脚本,运行magentservice.exe程序。Process方式运行agent可以模拟更多vuser,但是不能够运行(GUIandSAPVusers),运行magentproc.exe程序。两种模式切换
cd\PROGRA~1\MERCUR~1\MERCUR~1\LAUNCH~1\bin
magentservice.exe-remove;asprocessmagentservice.exe-install;asserver9负载压力测试工具LoadGeneratoragent9负载压力测试工具recording&scripting生成的脚本文件位置缺省情况下.htm和资源文件存放在X:\ProgramFiles\MercuryInteractive\LoadRunner\scripts每个脚本运行设置的配置文件vuser.cfg放在每个vuser脚本目录(thinktime,iterations,log,web)vuser.usp文件包括了脚本运行逻辑数据文件位置:缺省情况系统保存它们到脚本目录运行结果文件C:\DocumentsandSettings\Tester.LOADTEST\LocalSettings\Temp--Tester.LOADTEST为当前用户名10负载压力测试工具recording&scripting1负载压力测试工具在“虚拟用户发生器”中:执行单用户操作ServerClientApp在“控制台”中运行已录制的脚本,多个用户并发访问服务器VirtualUsersServer单用户与并发用户11负载压力测试工具在“虚拟用户发生器”中:执行单用户操作Ser目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践12目录一、负载压力测试工具12负载压力测试流程系统分析建立虚拟用户脚本建立负载测试场景运行测试,同步监测应用性能分析结果13负载压力测试流程系统分析13负载压力测试流程系统分析性能测试需求分析测试数据分析测试用例制定系统结构掌握,包括:网络拓扑结构服务器拓扑结构服务器负载平衡测试机要求测试工具要求14负载压力测试流程系统分析14创建脚本1、选择VirtualUserGenerator,vugen主窗口打开2、选择File>New3、从ProtocolType列表中选择协议4、点StartRecording按狃负载压力测试流程15创建脚本负载压力测试流程156、对于win32应用程序:Programtorecord:输入需要记录的win32应用程序ProgramArguments:对上面指定的应用程序指定一个可执行的命令参数,例如:如果上面的应用程序为plus32.exe,你在这里指定一个参数peter@neptune,这个将连接用户peter到服务器neptune当在开始plus32.exe的时候。WorkingDirectory:为应用程序指定一个工作路径
创建脚本5、对于internet应用程序:Programtorecord:选择浏览器或者需要记录的internet应用程序URLAddress:指定一个需要开始的url地址WorkingDirectory:为应用程序指定一个工作路径
负载压力测试流程166、对于win32应用程序:创建脚本
负载压力测试流程1创建脚本1、结束录制,转换到vuser_end,执行关闭程序。2、在记录工具条上点StopRecording3、点save来保存记录的部分4、可以将整个脚本保存为压缩文件;可以只保存runtime文件负载压力测试流程17创建脚本负载压力测试流程17负载压力测试流程知识点_Protocol正确的协议选择将决定着测试能否正常执行并且得到预期的测试结果18负载压力测试流程知识点_Protocol18负载压力测试流程知识点_transaction用于衡量某个事务的性能,需要在action的开始和结束位置插入这样一个范围,工具运行到该事务的开始点时,工具就会开始计时,直到运行到该事务的结束点,计时结束。19负载压力测试流程知识点_transaction19负载压力测试流程知识点_rendezvous是一个并发访问的点,在测试中,可能会要求系统能够承受1000人同时提交数据,可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,工具就会检查同时有多少用户运行到集合点,如果不到1000人,工具就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000人时,工具命令1000人同时去提交数据,达到并发访问的目的20负载压力测试流程知识点_rendezvous20负载压力测试流程知识点_Parameter用变量代替常量,所有的性能测试尽可能考虑参数化,不参数化的测试结果将不能模拟实际运行情况,导致测试结果出现偏差21负载压力测试流程知识点_Parameter21负载压力测试流程关联数据CorrelatedDataisdatawhichissenttotheclientformtheserver,andlatersendbacktotheserverbytheclient所谓的关联就是把脚本中某些写死的数据,转变成服务器所发送的、动态的、每次都不一样的数据。工具提供二种方式找出需要做关联的值:自动关联和手动关联,包括:ManualcorrelationAutomaticcorrelationafterrecordingAutomaticcorrelationduringrecording关联函数:web_reg_save_param22负载压力测试流程关联数据22负载压力测试流程自动关联VuGen内建自动关联引擎,可以自动找出需要关联的值,并且使用关联函数建立关联自动关联提供下列二种机制:RulesCorrelation:在录制过程中VuGen会根据制定的规则,实时自动找出要关联的值。规则来源有两种:内建、使用者自定CorrelationStudio:则是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次才会作用。CorrelationStudio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联23负载压力测试流程自动关联23负载压力测试流程自动关联RuleCorrelation1、在RecordingOptions菜单,选择InternetProtocol>Correlation,勾选Enablecorrelationduringrecording,启用关联2、假如录制的应用系统属于内建关联规则的系统,请勾选相对应的应用系统。或者也可以针对录制的应用系统加入新的关联规则3、设定当工具侦测到符合关联规则的数据时,要如何处理:跳出一个讯息对话窗口,询问您是否要建立关联直接自动建立关联录制脚本24负载压力测试流程自动关联24负载压力测试流程自动关联CorrelationStudioCorrelationStudio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,建立关联使用CorrelationStudio的步骤如下:1、录制脚本并执行2、执行完毕后,VuGen会跳出下面的ScanActionforCorrelation窗口,询问您是否要扫描脚本并建立关联,扫描完后,可以在脚本下方的CorrelationResults中看到扫描的结果3、对其中的扫描进行关联如果没有弹出,需要选择【Tools】->【GeneralOption】选中的Correlation,选中ShowScanforcorrlerationspopupafterreplayofVuser即可25负载压力测试流程自动关联25负载压力测试流程手动关联1、录制两份业务执行过程的脚本2、使用WinDiff工具比较两份脚本的区别3、使用web_reg_save_param函数手动建立关联有时候手动关联更可靠26负载压力测试流程手动关联26负载压力测试流程手动关联举例找出要捕捉的变量找出要捕捉的变量的左右边界找出文本边界在请求要捕捉变量的页面前,增加web_reg_save_param函数增加parameter名,左右边界等在脚本里对每次出现的该动态变量数值用该参数代替验证是否能正确执行27负载压力测试流程手动关联举例27负载压力测试流程如何找出要捕捉的变量用相同步骤录制2个脚本若捕捉的动态变量是: --依赖于某输入数据,,重录制时要改变该数据 --不依赖于任何输入数据,则用相同数据重新录制比较脚本 Tools>ComparewithVuser比较不同的行并高亮显示(wdiff.exe)28负载压力测试流程如何找出要捕捉的变量28负载压力测试流程找出要捕捉的变量的左右边界从wdiff里拷贝第1个脚本的动态变量到notepad中在执行日志中,双击引起错误的行,则指针跳到脚本树的相关行上并打开该html页面找出边界(推荐在TREEVIEW中的HTMLView中,而不是在SCRIPTVIEW):打开查找对话框(Ctrl+F),将wdiff中拷贝的字符串粘贴到查找对话框并进行查找LB应尽可能的唯一,RB不应出现在捕捉的字符串中在录制日志中查找边界29负载压力测试流程找出要捕捉的变量的左右边界29负载压力测试流程找出文本边界在ExecutionLog中查找出现位置:只在回放前Run-TimeSettings里选中了Datareturnedfromserver时生效30负载压力测试流程找出文本边界30负载压力测试流程在脚本中增加函数在请求变量值前增加函数web_reg_save_param()在回放中,当VuGen执行了web_reg_save_param(),发生3件事情:1.VuGen创建parameter2.当下一步执行时,VuGen搜索HTML页面源代码,寻找左右边界中间的文本3.找到变量值后,VuGen将其存到指定parameter中,这样,以后当VuGen遇到脚本里引用了该parameter名后,就插入存储的变量数值31负载压力测试流程在脚本中增加函数31负载压力测试流程在脚本中增加函数如果你不确认在哪步获取了变量值,那么:在ExecutionLog里,查找左边界双击ExecutionLog里的该行,跳到对应的ScripteView或TreeView里对应的位置插入web_reg_save_param()输入parameter名和属性后,点OKVuGen就插入正确了32负载压力测试流程在脚本中增加函数32负载压力测试流程增加函数参数Web_reg_save_param(“param_name”,”LB=“,”RB=“,ORD=“,LAST);命名parameter从HTML中拷贝边界文本增加Executionlog里出现的序号到ORD参数中33负载压力测试流程增加函数参数33负载压力测试流程参数化脚本中的变量值选择Edit>Replace.在FindWhat文本框里拷贝或输入录制时的变量值在ReplaceWith文本框里输入parameter名(必须和web_reg_save_param函数里定义的一样,用{}包围)点FindNext查找当工具找到后,点ReplaceAll按钮34负载压力测试流程参数化脚本中的变量值34负载压力测试流程35负载压力测试流程35建立负载测试场景1、手动创建一个场景2、面向目标的场景负载压力测试流程36建立负载测试场景负载压力测试流程36建立负载测试场景通过Schedule的设置完成对性能测试运行设计。如:模拟用户递增的情况;模拟用户自动运行等负载压力测试流程37建立负载测试场景负载压力测试流程37建立负载测试场景带宽、浏览器、网关等的设置负载压力测试流程38建立负载测试场景负载压力测试流程38建立负载测试场景测试用机的全面调用(别忘了“\\测试用机”用administrator登录)负载压力测试流程39建立负载测试场景负载压力测试流程39建立负载测试场景对某个系统进行多个功能同时操作的性能测试同样的脚本在多个测试用机上模拟运行….负载压力测试流程40建立负载测试场景负载压力测试流程40负载压力测试流程建立负载测试场景可以增加包括服务器系统资源、应用服务器的利用情况等的所有视图41负载压力测试流程建立负载测试场景41负载压力测试流程执行测试在Run选项卡中点击StartScenario运行脚本,脚本运行时添加的计数器将显示时实监测的数据,如图:右上角出现红色的区域,显示有错误出现,或者有失败的事务处理点击Errors行的红色区域,则弹出所有错误信息的窗口42负载压力测试流程执行测试42负载压力测试流程结果分析事件统计报表错误汇总报告整体统计结果43负载压力测试流程结果分析43负载压力测试流程结果分析增加一个新的视图:Web资源视图系统资源视图等等44负载压力测试流程结果分析44负载压力测试流程结果分析指标的交叉拟合45负载压力测试流程结果分析45目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践46目录一、负载压力测试工具46负载压力测试心得
具体问题具体分析(由于不同的应用系统,不同的测试目的,不同的性能关注点)查找瓶颈时按以下顺序,由易到难服务器硬件瓶颈-〉网络瓶颈-〉操作系统瓶颈(参数配置)-〉服务器软件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。分段排除法很有效47负载压力测试心得具体问题具体分析(由于不同的应用系统,不同负载压力测试心得根据测试结果收集到的监控指标数据根据场景运行过程中的错误提示信息48负载压力测试心得根据测试结果收集到的监控指标数据48负载压力测试心得实例:Error:Failedtoconnecttoserver"0:8080":[10060]ConnectionError:timedoutError:Server"0"hasshutdowntheconnectionprematurely分析:A、应用服务死掉:程序或者数据库的问题B、应用服务没有死:应用服务参数设置问题许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connectionrefused消息,说明应提高该值,每次增加25%C、数据库的连接:1、在应用服务的性能参数可能太小了2、数据库启动的最大连接数(跟硬件的内存有关)49负载压力测试心得实例:49负载压力测试心得最大并发用户数:应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,需根据各服务器的资源情况和业务操作响应时间进一步分析原因所在50负载压力测试心得最大并发用户数:50负载压力测试心得业务操作响应时间:分析运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关如果服务器耗时过长,使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,使用“网络监视器”图确定导致性能瓶颈的网络问题51负载压力测试心得业务操作响应时间:51负载压力测试心得内存:UNIX资源监控中的内存页交换速率(Pagingrate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低Windows资源监控中,如果Process\PrivateBytes计数器和Process\WorkingSet计数器的值在长时间内持续升高,同时Memory\Availablebytes计数器的值持续降低,则很可能存在内存泄漏在Unix/linux操作系统,当CPU利用率低,但是事务响应时间仍然较长时,还需要观察I/OWait的变化,以鉴别是否因为I/O导致CPU利用率低52负载压力测试心得内存:52负载压力测试心得内存成为性能瓶颈的征兆:
很高的换页率(highpageoutrate)进程进入不活动状态交换区所有磁盘的活动次数过高很高的全局系统CPU利用率内存不够出错(outofmemoryerrors)53负载压力测试心得内存成为性能瓶颈的征兆:53负载压力测试心得处理器:UNIX资源监控(Windows操作系统同理)中的指标CPU占用率(CPUutilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQLServer,可接受的最大上限是80-85%,合理使用的范围在60%至70%Windows资源监控中,如果System\ProcessorQueueLength大于2,而处理器利用率(ProcessorTime)一直很低,则存在着处理器阻塞54负载压力测试心得处理器:54负载压力测试心得CPU成为性能瓶颈的征兆:
很慢的响应时间(slowresponsetime)CPU空闲时间为零(zeropercentidleCPU)过高的用户占用CPU时间(highpercentuserCPU)过高的系统占用CPU时间(highpercentsystemCPU)长时间的有很长的运行进程队列(largerunqueuesizesustainedovertime)55负载压力测试心得CPU成为性能瓶颈的征兆:55负载压力测试心得磁盘I/O:UNIX资源监控(Windows操作系统同理)中的指标磁盘交换率(Diskrate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统Windows资源监控中,如果DiskTime和Avg.DiskQueueLength的值很高,而PageReads/sec页面读取操作速率很低,则可能存在磁盘瓶颈56负载压力测试心得磁盘I/O:56负载压力测试心得I/O成为性能瓶颈的征兆:过高的磁盘利用率(highdiskutilization)太长的磁盘等待队列(largediskqueuelength)等待磁盘I/O的时间所占的百分率太高(largepercentageoftimewaitingfordiskI/O)太高的物理I/O速率:largephysicalI/Orate(notsufficientinitself)过低的缓存命中率(lowbuffercachehitratio(notsufficientinitself))太长的运行进程队列,但CPU却空闲(largerunqueuewithidleCPU)57负载压力测试心得I/O成为性能瓶颈的征兆:57负载压力测试心得1、如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小快存(共享SQL区)和数据字典快存的命中率:select(sum(pins-reloads))/sum(pins)fromv$librarycache;select(sum(gets-getmisses))/sum(gets)fromv$rowcache;自由内存:select*fromv$sgastatwherename=’freememory’;2、如果数据的缓存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS参数的值(单位:块)。(在9i中DB_BLOCK_BUFFERS已废弃不用,应该调整DB_CACHE_SIZE参数值)缓冲区高速缓存命中率:selectname,valuefromv$sysstatwherenamein('dbblockgets’,'consistentgets','physicalreads');HitRatio=1-(physicalreads/(dbblockgets+consistentgets))58负载压力测试心得1、如果自由内存接近于0而且库快存或数据字负载压力测试心得3、如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值日志缓冲区的申请情况:selectname,valuefromv$sysstatwherename='redologspacerequests';4、如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序内存排序命中率:selectround((100*b.value)/decode((a.value+b.value),0,1,(a.value+b.value)),2)fromv$sysstata,v$='sorts(disk)'='sorts(memory)'59负载压力测试心得3、如果日志缓冲区申请的值较大,则应加大LO负载压力测试心得数据库性能问题的一般解决办法:
监视性能相关数据定位资源占用较大的事务并做出必要的优化或调整定位锁冲突,修改锁冲突发生严重的应用逻辑对规模较大的数据或者无法通过一般优化解决的锁冲突进行分布60负载压力测试心得数据库性能问题的一般解决办法:60目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践61目录一、负载压力测试工具61负载压力测试实践1、录制脚本(插入事务点)2、回放脚本3、编辑脚本(参数化、关联、集合点)4、运行脚本(运行时设置)5、创建测试场景6、配置监控场景7、运行测试场景8、分析测试结果62负载压力测试实践1、录制脚本(插入事务点)62演讲完毕,谢谢观看!演讲完毕,谢谢观看!负载压力测试工具实践January2364负载压力测试工具实践December221目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践65目录一、负载压力测试工具2负载压力测试工具HP公司(原MI)LoadrunnerIBM公司(原Rational)RationalPerformanceTesterCompuware公司QAloadMicrosoft公司WAS66负载压力测试工具HP公司(原MI)3负载压力测试工具体系结构图67负载压力测试工具体系结构图4负载压力测试工具应用组件68负载压力测试工具应用组件5负载压力测试工具VuGen虚拟用户生成器(VUGen)完成脚本记录。VUGen是在客户桌面上运行的部件,它捕获实际客户应用和服务器之间的通讯。VUGen通过将各种用户请求发送至服务器来完全模拟一个真实用户的实际行为。VUGen能支持Netscape和InternetExplorer浏览器,或任何其它第三方的支持代理服务器设置的浏览器。完成录制后,一个测试脚本就生成了69负载压力测试工具VuGen6负载压力测试工具ControllerLoadRunner控制器提供一组性能监测器,在负载测试过程中监测系统各层面的每一部件的性能。通过记录整个系统所有性能数据,测试人员可以将这些信息对应最终用户的负载和响应时间,以定位瓶颈所在。LoadRunner为网络、网络服务器和大多数的常规Web服务器,应用服务器和数据库服务器提供性能监测。性能监测以一种完全不干扰被测系统的方式进行,最大限度地减少对性能的影响。所有的这些监测器都与硬件、操作系统无关,特别是不需要在目标服务器上安装任何探针软件。70负载压力测试工具Controller7负载压力测试工具AnalysisLoadRunner的Analysis提供一个集成环境,集中收集所有在测试周期中产生的数据。由于这个工具功能强大且使用简单,测试人员可以创建跨场景的图表数据比较,增强数据分析的能力和速度。71负载压力测试工具Analysis8负载压力测试工具LoadGeneratoragentLoadGenerator是负载生成器,在多台机器上运行vuService方式运行agent可以运行全部类型(GUI(WinRunner,QuickTestProfessional,etc.)orGUI-likescripts(Citrix,SAPGUI,etc.)的vuser脚本,运行magentservice.exe程序。Process方式运行agent可以模拟更多vuser,但是不能够运行(GUIandSAPVusers),运行magentproc.exe程序。两种模式切换
cd\PROGRA~1\MERCUR~1\MERCUR~1\LAUNCH~1\bin
magentservice.exe-remove;asprocessmagentservice.exe-install;asserver72负载压力测试工具LoadGeneratoragent9负载压力测试工具recording&scripting生成的脚本文件位置缺省情况下.htm和资源文件存放在X:\ProgramFiles\MercuryInteractive\LoadRunner\scripts每个脚本运行设置的配置文件vuser.cfg放在每个vuser脚本目录(thinktime,iterations,log,web)vuser.usp文件包括了脚本运行逻辑数据文件位置:缺省情况系统保存它们到脚本目录运行结果文件C:\DocumentsandSettings\Tester.LOADTEST\LocalSettings\Temp--Tester.LOADTEST为当前用户名73负载压力测试工具recording&scripting1负载压力测试工具在“虚拟用户发生器”中:执行单用户操作ServerClientApp在“控制台”中运行已录制的脚本,多个用户并发访问服务器VirtualUsersServer单用户与并发用户74负载压力测试工具在“虚拟用户发生器”中:执行单用户操作Ser目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践75目录一、负载压力测试工具12负载压力测试流程系统分析建立虚拟用户脚本建立负载测试场景运行测试,同步监测应用性能分析结果76负载压力测试流程系统分析13负载压力测试流程系统分析性能测试需求分析测试数据分析测试用例制定系统结构掌握,包括:网络拓扑结构服务器拓扑结构服务器负载平衡测试机要求测试工具要求77负载压力测试流程系统分析14创建脚本1、选择VirtualUserGenerator,vugen主窗口打开2、选择File>New3、从ProtocolType列表中选择协议4、点StartRecording按狃负载压力测试流程78创建脚本负载压力测试流程156、对于win32应用程序:Programtorecord:输入需要记录的win32应用程序ProgramArguments:对上面指定的应用程序指定一个可执行的命令参数,例如:如果上面的应用程序为plus32.exe,你在这里指定一个参数peter@neptune,这个将连接用户peter到服务器neptune当在开始plus32.exe的时候。WorkingDirectory:为应用程序指定一个工作路径
创建脚本5、对于internet应用程序:Programtorecord:选择浏览器或者需要记录的internet应用程序URLAddress:指定一个需要开始的url地址WorkingDirectory:为应用程序指定一个工作路径
负载压力测试流程796、对于win32应用程序:创建脚本
负载压力测试流程1创建脚本1、结束录制,转换到vuser_end,执行关闭程序。2、在记录工具条上点StopRecording3、点save来保存记录的部分4、可以将整个脚本保存为压缩文件;可以只保存runtime文件负载压力测试流程80创建脚本负载压力测试流程17负载压力测试流程知识点_Protocol正确的协议选择将决定着测试能否正常执行并且得到预期的测试结果81负载压力测试流程知识点_Protocol18负载压力测试流程知识点_transaction用于衡量某个事务的性能,需要在action的开始和结束位置插入这样一个范围,工具运行到该事务的开始点时,工具就会开始计时,直到运行到该事务的结束点,计时结束。82负载压力测试流程知识点_transaction19负载压力测试流程知识点_rendezvous是一个并发访问的点,在测试中,可能会要求系统能够承受1000人同时提交数据,可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,工具就会检查同时有多少用户运行到集合点,如果不到1000人,工具就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000人时,工具命令1000人同时去提交数据,达到并发访问的目的83负载压力测试流程知识点_rendezvous20负载压力测试流程知识点_Parameter用变量代替常量,所有的性能测试尽可能考虑参数化,不参数化的测试结果将不能模拟实际运行情况,导致测试结果出现偏差84负载压力测试流程知识点_Parameter21负载压力测试流程关联数据CorrelatedDataisdatawhichissenttotheclientformtheserver,andlatersendbacktotheserverbytheclient所谓的关联就是把脚本中某些写死的数据,转变成服务器所发送的、动态的、每次都不一样的数据。工具提供二种方式找出需要做关联的值:自动关联和手动关联,包括:ManualcorrelationAutomaticcorrelationafterrecordingAutomaticcorrelationduringrecording关联函数:web_reg_save_param85负载压力测试流程关联数据22负载压力测试流程自动关联VuGen内建自动关联引擎,可以自动找出需要关联的值,并且使用关联函数建立关联自动关联提供下列二种机制:RulesCorrelation:在录制过程中VuGen会根据制定的规则,实时自动找出要关联的值。规则来源有两种:内建、使用者自定CorrelationStudio:则是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次才会作用。CorrelationStudio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联86负载压力测试流程自动关联23负载压力测试流程自动关联RuleCorrelation1、在RecordingOptions菜单,选择InternetProtocol>Correlation,勾选Enablecorrelationduringrecording,启用关联2、假如录制的应用系统属于内建关联规则的系统,请勾选相对应的应用系统。或者也可以针对录制的应用系统加入新的关联规则3、设定当工具侦测到符合关联规则的数据时,要如何处理:跳出一个讯息对话窗口,询问您是否要建立关联直接自动建立关联录制脚本87负载压力测试流程自动关联24负载压力测试流程自动关联CorrelationStudioCorrelationStudio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,建立关联使用CorrelationStudio的步骤如下:1、录制脚本并执行2、执行完毕后,VuGen会跳出下面的ScanActionforCorrelation窗口,询问您是否要扫描脚本并建立关联,扫描完后,可以在脚本下方的CorrelationResults中看到扫描的结果3、对其中的扫描进行关联如果没有弹出,需要选择【Tools】->【GeneralOption】选中的Correlation,选中ShowScanforcorrlerationspopupafterreplayofVuser即可88负载压力测试流程自动关联25负载压力测试流程手动关联1、录制两份业务执行过程的脚本2、使用WinDiff工具比较两份脚本的区别3、使用web_reg_save_param函数手动建立关联有时候手动关联更可靠89负载压力测试流程手动关联26负载压力测试流程手动关联举例找出要捕捉的变量找出要捕捉的变量的左右边界找出文本边界在请求要捕捉变量的页面前,增加web_reg_save_param函数增加parameter名,左右边界等在脚本里对每次出现的该动态变量数值用该参数代替验证是否能正确执行90负载压力测试流程手动关联举例27负载压力测试流程如何找出要捕捉的变量用相同步骤录制2个脚本若捕捉的动态变量是: --依赖于某输入数据,,重录制时要改变该数据 --不依赖于任何输入数据,则用相同数据重新录制比较脚本 Tools>ComparewithVuser比较不同的行并高亮显示(wdiff.exe)91负载压力测试流程如何找出要捕捉的变量28负载压力测试流程找出要捕捉的变量的左右边界从wdiff里拷贝第1个脚本的动态变量到notepad中在执行日志中,双击引起错误的行,则指针跳到脚本树的相关行上并打开该html页面找出边界(推荐在TREEVIEW中的HTMLView中,而不是在SCRIPTVIEW):打开查找对话框(Ctrl+F),将wdiff中拷贝的字符串粘贴到查找对话框并进行查找LB应尽可能的唯一,RB不应出现在捕捉的字符串中在录制日志中查找边界92负载压力测试流程找出要捕捉的变量的左右边界29负载压力测试流程找出文本边界在ExecutionLog中查找出现位置:只在回放前Run-TimeSettings里选中了Datareturnedfromserver时生效93负载压力测试流程找出文本边界30负载压力测试流程在脚本中增加函数在请求变量值前增加函数web_reg_save_param()在回放中,当VuGen执行了web_reg_save_param(),发生3件事情:1.VuGen创建parameter2.当下一步执行时,VuGen搜索HTML页面源代码,寻找左右边界中间的文本3.找到变量值后,VuGen将其存到指定parameter中,这样,以后当VuGen遇到脚本里引用了该parameter名后,就插入存储的变量数值94负载压力测试流程在脚本中增加函数31负载压力测试流程在脚本中增加函数如果你不确认在哪步获取了变量值,那么:在ExecutionLog里,查找左边界双击ExecutionLog里的该行,跳到对应的ScripteView或TreeView里对应的位置插入web_reg_save_param()输入parameter名和属性后,点OKVuGen就插入正确了95负载压力测试流程在脚本中增加函数32负载压力测试流程增加函数参数Web_reg_save_param(“param_name”,”LB=“,”RB=“,ORD=“,LAST);命名parameter从HTML中拷贝边界文本增加Executionlog里出现的序号到ORD参数中96负载压力测试流程增加函数参数33负载压力测试流程参数化脚本中的变量值选择Edit>Replace.在FindWhat文本框里拷贝或输入录制时的变量值在ReplaceWith文本框里输入parameter名(必须和web_reg_save_param函数里定义的一样,用{}包围)点FindNext查找当工具找到后,点ReplaceAll按钮97负载压力测试流程参数化脚本中的变量值34负载压力测试流程98负载压力测试流程35建立负载测试场景1、手动创建一个场景2、面向目标的场景负载压力测试流程99建立负载测试场景负载压力测试流程36建立负载测试场景通过Schedule的设置完成对性能测试运行设计。如:模拟用户递增的情况;模拟用户自动运行等负载压力测试流程100建立负载测试场景负载压力测试流程37建立负载测试场景带宽、浏览器、网关等的设置负载压力测试流程101建立负载测试场景负载压力测试流程38建立负载测试场景测试用机的全面调用(别忘了“\\测试用机”用administrator登录)负载压力测试流程102建立负载测试场景负载压力测试流程39建立负载测试场景对某个系统进行多个功能同时操作的性能测试同样的脚本在多个测试用机上模拟运行….负载压力测试流程103建立负载测试场景负载压力测试流程40负载压力测试流程建立负载测试场景可以增加包括服务器系统资源、应用服务器的利用情况等的所有视图104负载压力测试流程建立负载测试场景41负载压力测试流程执行测试在Run选项卡中点击StartScenario运行脚本,脚本运行时添加的计数器将显示时实监测的数据,如图:右上角出现红色的区域,显示有错误出现,或者有失败的事务处理点击Errors行的红色区域,则弹出所有错误信息的窗口105负载压力测试流程执行测试42负载压力测试流程结果分析事件统计报表错误汇总报告整体统计结果106负载压力测试流程结果分析43负载压力测试流程结果分析增加一个新的视图:Web资源视图系统资源视图等等107负载压力测试流程结果分析44负载压力测试流程结果分析指标的交叉拟合108负载压力测试流程结果分析45目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践109目录一、负载压力测试工具46负载压力测试心得
具体问题具体分析(由于不同的应用系统,不同的测试目的,不同的性能关注点)查找瓶颈时按以下顺序,由易到难服务器硬件瓶颈-〉网络瓶颈-〉操作系统瓶颈(参数配置)-〉服务器软件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。分段排除法很有效110负载压力测试心得具体问题具体分析(由于不同的应用系统,不同负载压力测试心得根据测试结果收集到的监控指标数据根据场景运行过程中的错误提示信息111负载压力测试心得根据测试结果收集到的监控指标数据48负载压力测试心得实例:Error:Failedtoconnecttoserver"0:8080":[10060]ConnectionError:timedoutError:Server"0"hasshutdowntheconnectionprematurely分析:A、应用服务死掉:程序或者数据库的问题B、应用服务没有死:应用服务参数设置问题许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connectionrefused消息,说明应提高该值,每次增加25%C、数据库的连接:1、在应用服务的性能参数可能太小了2、数据库启动的最大连接数(跟硬件的内存有关)112负载压力测试心得实例:49负载压力测试心得最大并发用户数:应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,需根据各服务器的资源情况和业务操作响应时间进一步分析原因所在113负载压力测试心得最大并发用户数:50负载压力测试心得业务操作响应时间:分析运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关如果服务器耗时过长,使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,使用“网络监视器”图确定导致性能瓶颈的网络问题114负载压力测试心得业务操作响应时间:51负载压力测试心得内存:UNIX资源监控中的内存页交换速率(Pagingrate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低Windows资源监控中,如果Process\PrivateBytes计数器和Process\WorkingSet计数器的值在长时间内持续升高,同时Memory\Availablebytes计数器的值持续降低,则很可能存在内存泄漏在Unix/linux操作系统,当CPU利用率低,但是事务响应时间仍然较长时,还需要观察I/OWait的变化,以鉴别是否因为I/O导致CPU利用率低115负载压力测试心得内存:52负载压力测试心得内存成为性能瓶颈的征兆:
很高的换页率(highpageoutrate)进程进入不活动状态交换区所有磁盘的活动次数过高很高的全局系统CPU利用率内存不够出错(outofmemoryerrors)116负载压力测试心得内存成为性能瓶颈的征兆:53负载压力测试心得处理器:UNIX资源监控(Windows操作系统同理)中的指标CPU占用率(CPUutilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQLServer,可接受的最大上限是80-85%,合理使用的范围在60%至70%Win
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024简单的钢材购销合同样本
- 放射性金属矿的地球化学特征考核试卷
- 学前教育中的情景模拟与情景教育考核试卷
- 《儿科临床贫血》课件
- 无人驾驶汽车的发展趋势与挑战考核试卷
- 你笑起来真好看班会
- 农药制造过程中的安全操作与事故预防考核试卷
- 2024常用的租房合同范本
- 信息系统与智能车辆的关系与作用考核试卷
- 免疫细胞及其功能检验技术(免疫学检验课件)
- 音乐游戏在小学音乐教学的应用
- 锁骨下动脉盗血综合征护理课件
- 潜在供应商审核 检查表
- 美术学类专业大学生职业生涯规划书
- 光伏工程光伏场区箱式变压器安装方案
- 颅底骨折的护理查房
- 医生类抖音代运营方案(综合)
- 掘进自动化工作面研究及应用新的
- 99D102-1 6~10kV铁横担架空绝缘线路安装
- 如何积极应对人工智能时代带来的各种挑战800字
- 中国共产主义青年团团员发展过程纪实簿
评论
0/150
提交评论