资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,性能测试技术交流,1,值得依赖的信息应用平台与服务提供商,主要内容,一、性能测试的基本概念,二、性能测试流程,三、,LoadRunner,操作介绍,四、测试结果分析,2,一、,性能测试的基本概念,3,什么是软件性能,用户视觉的软件性能:,软件性能就是软件对用户操作的响应时间。,管理员视角的软件性能,:,软件性能首先表现在系统的响应时间,其次还会关心系统状态的相关信息。,开发视角的软件性能:,最关注的是使性能表现不佳的因素和由于大量用户访问引起的软件故障,也就是我们所说的性能瓶颈。,4,性能测试的常用方法,1,性能测试,2,负载测试,3,压力测试,5,测试方法基本概念,性能测试,通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。,特点:,这种方法的主要目的是验证系统是否具有系统宣称具有的能力。,6,测试方法基本概念,负载测试,通过在被测系统上不断增加压力,直到性能指标。如通过量,响应时间,资源利用率等。,特点:,这种方法的主要目的是找到系统处理能力的极限,,用这种方法可以比较系统调优前后的性能差异。,7,测试方法基本概念,压力测试,压力测试是指系统在一定饱和状态下(,CPU,:,75%,,内存:,70%,),例如,CPU,内存等在饱和使用情况下,系统能够处理的会话能力,以及系统是否出现错误。,其中,,JVM,的可用内存,数据库的连接数,数据库服务器的,CPU,利用率等都可以做为压力的依据。,特点:,这种方法的主要目的是检查系统处于压力情况下,应用的表现,一般用于测试系统的稳定性。,8,软件性能测试的几个主要术语,响应时间:,应用系统从请求发出开始到客户端收到最后一个字节数据所消耗的时间,并发用户数:,登录到系统中进行业务操作的总用户数。服务器实际承受的压力不只取决于业务并发用户数,还取决于用户的业务场景。,吞吐量:,指单位时间内系统处理的客户请求的数量,直接体现了软件系统的性能承受能力。,性能计数器,:描述服务器或操作系统性能的一些数据指标。,思考时间,:指的是用户在进行操作时,每个请求之间的间隔时间,因为用户在使用系统时,不大可能持续不断地发出请求。,9,二、性能测试流程,10,设计测试计划,在性能测试正式开展之前,需要针对本次性能测试设计测试方案。,测试方案的内容主要包括:,项目背景,性能测试需求,测试环境信息,性能测试场景,测试实施计划,参与人员以及职责,11,测试环境、工具、数据准备,测试环境准备,我们的测试环境与客户的实际环境是有较大的不同,测试环境的网络、计算机硬件软件都无法做到和客户完全相一致。软件在客户那功能不正常,也许就是因为客户安装了某个不知名的其他软件造成的。因此压力测试需要遵循一些基本的原则:,12,搭建测试环境的基本原则,要满足软件运行的最低要求。,选用与被测软件相一致的操作系统和软件平台。,营造相对独立的测试环境。,无病毒的环境。,13,测试环境建议,因为在测试过程中比较重视测试环境的,“,真实性,”,,所以在客户的实际环境执行测试,需注意以下几点:,1),尽可能地降低对客户现有业务地影响,挑选在夜间,或者在客户业务不繁忙的时段进行性能。,2),测试过程中会产生大量数据或因为系统故障导致数,据被破坏,要有很好地备份和恢复过程。,3),若是在公司内部进行性能测试,尽量避免一台服务,器上装多个应用,尽量少的人使用被测试服务器,,这样可以减少其它因素给系统性能带来的影响。,14,数据的准备,在做性能测试时比较容易忽略数据的重要性,实际上后台数据库中数据量的多少会影响压力测试的结果。比如我们测试一个查询操作,数据库表里就几行记录,这样的测试是失效的。因为即使该数据表没有建任何索引话,一个全表扫描也花不了什么时间,如果有大量数据的话,索引覆盖的问题都能暴露出来。,因此在做压力测试时要清楚数据库中数据量的大小,具体需要多少数据量可以根据客户数据库中的数据数量进行模拟,否则测试结果会与客户实际情况有一定的差距。,15,测试脚本的录制、编写与调试,制作脚本如下步骤:,脚本录制,录制过程中插入事务,插入集合点;,查找动态数据(关联);,参数替换;,添加检查点;,单脚本回放;,脚本加压回放;,16,三、,LoadRunner,操作介绍,17,LoadRunner,常用组件,Virtual User Generator(,虚拟用户脚本生成器,):,用于捕获最终用户业务流程和创建自动性能测试脚本(也称为虚拟用户脚本)。,Controller,:用于组织、驱动、管理和监控负载测试,负载生成器:用于通过运行虚拟用户生成负载,Analysis,:有助于您查看、分析和比较性能结果,18,LoadRunner,相关术语,1),场景,场景是一种文件,用于根据性能要求定义在每一个测试会话运行期间发生的事件。,2),Vuser,在场景中,LoadRunner,用虚拟用户或,Vuser,代替实际用户,Vuser,模拟实际用户的操作来使用应用程序。一个场景可以包含几十、几百甚至几千个,Vuser,。,3)Vuser,脚本,Vuser,脚本用于描述,Vuser,在场景中执行的操作。,4),事务,要度量服务器的性能,需要定义事务。事务表示要度量的最终用户业务流程,建议录制的时候插入事务而不要等录制完后再插入事务。,5),集合点,为了能够模拟所有虚拟用户同时并发,需要在业务操作前添加集合点,当全部用户到达该集合点时,释放所有用户,注意,只能向脚本,Action,部分添加集合点。,19,利用,vugen,制作脚本,LR,用,Vuser,(虚拟用户)来代替实际的用户。,Vuser,执行的操作是用,Vuser,脚本来描述的。,Vuser,脚本生成器(也称,Vugen,)是,LR,用于开发,Vuser,脚本的主要工具。,Vugen,通过录制客户端与服务器之间的活动来录制脚本。例如:在数据库应用程序中,测试工具的脚本生成器(,Vugen,)会监控数据库的客户端,并跟踪发送到数据库服务器和从数据库服务器接收的所有请求。,当,Vuser,与服务器直接通信时,不需要在用户界面中耗费系统资源,这样就可以在一个工作站中同时运行大量,Vuser,,进而可以使用很少的测试计算机来模拟非常大的服务器负载。,20,选择协议,C/S,(,Client/Server,)结构的,win32,应用程序一般可以选用,winsocket,协议。,B/S,(,Browser/Server,)结构的通过浏览器浏览数据的一般选用,Web(Http/Html),协议。,1,基于浏览器的应用程序推荐使用,HTML-based Script,2,不是基于浏览器的应用程序推荐使用,URL-based Script,。,3,如果基于浏览器的应用程序中包含了,JavaScript,并且该脚本向服务器产生,了请求,比如,DataGrid,的分页按钮等,也要使用,URL-based,方式录制,4,基于浏览器的应用程序中使用了,HTTPS,安全协议,使用,URL-based,21,22,Winsocket,协议,23,Http,协议,24,Vuser,脚本的三个部分,这里我们简单讲讲,Vuser,脚本的三个部分:,创建的每个,Vuser,脚本都至少包含三部分:,vuser_init,、一个或多个,Actions,及,vuser_end,。录制期间,可以选择脚本中,VuGen,要插入已录制函数的部分。通常情况下,可以将登录到服务器的活动录制到,vuser_init,部分中、将客户端活动录制到,Actions,部分中,并将注销过程录制到,vuser_end,部分中。,运行多次迭代脚本,只有脚本的,Actions,部分被重复,而,Vuser_init,和,Vuser_end,部分只运行一次。,如果我们测试的只是登录操作,需要登录操作循环被执行。那么我们也可以将登录操作录制在,action,中。,25,工具条,录制脚本的时候会产生如下图所示的工具条:,26,录制脚本建议,录制脚本的时候,会使用,LR,的默认设置,把脚本录制到,Vuser_init,中,此时我们会等录制完成后,再将脚本剪切粘贴到,actions,和,Vuser_end,部分中去。这是个不可取的做法,比较好的做法是在录制的过程中,就应该通过上图所示的工具条选择我们录制的操作需要录制到脚本的哪个部分。,27,脚本设计常用技巧,-,参数化,参数化,:录制完脚本后点击工具栏上的,28,参数化,此时参数列表中没有任何参数,点击,New,新建一个参数,假如我要参数化用户名,参数取名为,UserName,29,参数化设置,30,参数化设置,Select next row,有以下几种选择:,Sequential:,按顺序一行一行的读取数据。,Random:,随机取值,Unique:,取唯一的值,这样需要保证数据表中有足够的数据。,Update value one,有以下几种选择:,Each Iteration,每一次迭代,Each Occurrence,每一次出现,Once,每次取一样的值,31,参数化,在参数列表中建立好需要的参数后,在脚本中,框选,要参数的字符,右击鼠标,选择,Replace With a,Parameter,,找到所需要的参数,点击,OK,,参数化就完,成了。,32,脚本设计常用技巧,-,关联,关联,:,我们的系统经常会有些动态的数据,比如新增记录之前系统会给一个流水号,我们的脚本在录制的时候捕获了这个号码,但是每次新增流水号肯定不同,拿脚本中的原始流水号去新增记录,肯定违反数据表的主键约束。如果我们在,receive,的包中找到那个流水号,并把它作为参数给,send,包,那么问题就迎刃而解了,这就是关联(其实也是一种参数化),关联是脚本设计中相对麻烦的工作,关联成功与否直接影响脚本执行成功,若实在找不出关联的地方,则可与开发人员咨询哪个地方返回了需要关联的数据。,33,脚本设计常用技巧,-,关联,LoadRunner,有自动关联功能,能自动捕捉脚本中需要关联的数,据,但得把,Tools,Recording OptionsCorrelationEnable,correlation during Recording,选上,或者,脚本录制完成后,运,行一遍,然后点击,则会找了脚本中需要关联的数据,可以点击,Correlate,完成关,联,但自动关联操作往往不能完全按照用户的意图来完成,而且,自动关联公对,web,和数据库应用等有限的协议有效,如果要对其,他的类型的应用的脚本进行关联操作,就须使用手工关联操作方,式。,34,脚本设计常用技巧,-,关联,关联步骤:,1),准备一个固定的操作步骤(包括输入数据等都要求相同),2),在,LoadRunner,的,VU Generator,中使用该步骤录制形成脚本,,并保存脚本。,3),重复上一步动作,使用相同的步骤录制一个新的脚本并保存。,4),执行期间命令,Tools,Compare with vusers,在弹出来的对话,框中选择步骤(,2,)所保存的脚本。,5),在,WinDiff,的比较窗口中查看两个脚本的不同之处,并对每个,脚本的不同之处进行分析,使用关联函数对需要关联的数据,进行关联。,关联常用函数:,Web_reg_save,从,web,服务器返回的信息找到批定的内容并将其保存到参数中。,35,Vuser,脚本的两种查看方式,Vuser,脚本的两种查看方式:,Script View,和,Tree View,。我们通过,View,菜单条,Script View,和,Tree View,来切换。基于图标的,Tree View,和基于文本的,script View,有各自的作用。,注意:,在,Tree View,模式下点击,Start Record,是会出错的。只能在,Script View,下来录制脚本。,如果你在查看,data.ws,文件,那么,Vugen,将不允许你切换到,Tree View,模式下。,36,Tree View,模式查看返回数据,37,Tree View,模式查看返回数据,从图中可以看出,,Tree View,模式下可以看到每个语句相关的,Request,和,Reponse,数据,,Reponse,数据按照,Object,的结构关系用树型表达,击击每个,Object,可以看到,Object,的,HTML,码。,38,如何调试脚本,录制好脚本,进行参数化以及关联后,我们还得确定脚本是能正常运行的,是可以模拟用户操作的,我们脚本很少能录制好后,参数化好脚本后回放时就没有错误的,出错时我们需要调试,,LR,的编译器提供调试脚本的功能。我们可以调试和优化我们的脚本。,39,如何调试脚本,脚本调试先后在单脚本回放下和加压回放下两种情况下进行。也就是在,vugen,中和在,controller,中进行。在,controller,中主要看在加压状态下参数是否能正确地传递与赋值,动态数据是否能正确地获得。,40,如何设计场景,场景,:场景可以理解为单个脚本在某种条件或某种环境,运行时的环境特点,即脚本的运行环境。,比如可以在场景中设置需要监控的服务器及相关计数器,多少并发,用户,虚拟用户产生方式,集合点策略,以及,Run-time setting,(运,行时设置),场景的执行时间,这些如何设置需要根据实际情况进,行,场景的设置过程可以简单理解为模拟真实环境的过程。,场景实则是一种,.lrs,文件,当场景设计完成后,可以将该场景保存,下来,供以后使用,这样就不用重复设计场景了。,41,如何新建场景,打开,Controller,方法:,在,VU-Gen(,脚本生成器,),中,,Tools,Create Controller,Scenario,42,添加,Load Generator Machines,点击,“,Generators,”,按钮,出现,Load Generators,窗口,点击,Connect,,如果状态变成,ready,,则表示连接正常,如果状态为,Failed,该机器不能连接,检查原因。,43,添加虚拟用户数,44,如何确定并发用户数,估算并发用户数公式,C=nL/T,估算峰值并发用户数,C,C+3,C(,根号,),其中:,C,是平均的并发用户数;,C,是并发用户峰值;,n,是,login session,的数量;,L,是,login session,的平均长度;,T,是考,察的时间段长度。,45,估算并发用户数,假如有一个,OA,系统,系统有,3000,个用户,平均每天有,400,个用户要访问该系统,对一个典型用户来说,一天之内从登录到退出系统的平均时间为,4,小时,而在一天的时间内,用户只在,8,小时内使用该系统,求峰值并发数为多少?,由上述两个公式可以得到:,C=400*4/8=200,C,=200+3200=242,46,设置,Schedule,产生虚拟用户,Schedule,里面主要用来设置任务计划。,点击 按钮进入,Schedule,设置窗口,47,设置,Schedule,运行虚拟用户,48,设置,Schedule,退出虚拟用户,49,设置场景运行时间,点击,50,设置集合点策略,51,设置集合点策略,点击,Policy,按钮,进入策略设置窗口,52,添加性能计数器,-windows,在添加性能计数器之前需要具有服务器的系统管理员权限,以便获取机器资源。,Windows:,假设服务器为,windows,IP,为:,192.188.13.14,具有管理员权限的用户名和密码为,administrator/abc,命令如下:,1,)运行,cmd,2)net use,192.168.13.14,/user:administrator,3),按下,enter,,会提示输入密码,4,)输入密码,abc,5,)按下,enter,,提示命令操作成功,则完成连接。,53,添加性能计数器,点击,Add,按钮,输入服务器,IP,54,执行测试,运行场景前需要注意的事项:每个组的虚拟用户数、迭代次数、,think time,、参数化时的取值间隔、确认虚拟机的,LoadRunner Agent Service,打开,运行前使,Generator,机器处理,Ready,状态,确认被监测的机器已经连接上去,并且添加自己所需要的计数器,运行之前一定要确认系统中压力点的数据量是多少,确认以上都设置正确时再点击 运行测试场景,55,四、测试结果分析,56,内存分析方法,内存分析方法用于判断系统有无遇到内存瓶颈,是否需要通过增加内存手段来提高系统性能表现。,1,)首先查看,Memory/Available Mbytes,指标,该计数值是描述系统可用内存的直接指标,如果该指标的数据比较小,系统可能出现了内存方面的问题。,2,)操作系统经常会用磁盘交换的方式提高系统可用的内存量或提高内存的使用率,我们可以关注,page/sec,,,Page/read/sec,和,page fault/sec,的值,这三个值直接反映了操作系统进行了磁盘交换的频度。,Page/sec:,表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。,Page Read/sec:,页的硬故障,,Page/sec,的子集,该值比较大测表示是磁盘读而不是缓存读。阈值为,5,。,Page Faults/sec:,每秒由处理器处理的失效页的全部数量。当一个进程需要的代码或数据不在它的工作区,(,它的空间在物理内存中,),中时,发生失效页。,57,内存分析方法,如果,Page/sec,的计数持续高于几百,很可能会有内存方面的问题产生,但,Page/sec,的值很大不一定表明内存有问题,而可能是使用内存映射文件程序所致。,Page Faults/sec,说明了每秒发生页面失效的次数,页面失效得越多,则说明操作系统向内存中读取的次数越多。,3,)根据磁盘相关计数器综合分析,如果,Page Read/sec,很低,同时,%Disk Time,和,Average Disk Queue Length,的值很高,则可能有磁盘瓶颈,但是,如果队列长度增加的同时,Page Read/sec,并未降低,则是由于内存不足。,58,处理器分析方法,1,),%Processor Time:,如果该值持续超过,85%,,表明瓶颈是,CPU,。可以考虑增加一个处理器或换一个更快的处理器。,2,),%User Time:,表示非核心操作耗费的,CPU,,如数据库操作,如排序,执行,aggregate functions,等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。,3,),%Privileged Time,:(,CPU,内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和,“,Physical Disk,”,参数值一直很高,表明,I/O,有问题。可考虑更换更快的硬盘系统。,4,),%DPC Time:,表示,CPU,消耗在网络上的时间,该计数器越低越低越好。在多处理器系统中,如果这个值大于,50%,并且,Processor:%Processor Time,非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。,59,磁盘分析方法,%Disk Time:,指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。在,Physical Disk,计数器中,如果只有,%Disk Time,比较大,其他值都比较适中,硬盘可能会是瓶颈。若几个值都比较大,且数值持续超过,80%,,则可能是内存泄漏。,Avg.Disk Queue Length:,指读取和写入请求,(,为所选磁盘在实例间隔中列队的,),的平均数。该值应不超过磁盘数的,1.52,倍。要提高性能,可增加磁盘。,根据,Disk sec/Transfer,进行分析:指秒计算的在此盘上写入数据的所需平均时间。,Excellent-15ms,良好,-30,60ms,超过,60ms,则需要考虑更换硬盘的,RAID,方式了。,60,分析原则,服务器硬件瓶颈,网络瓶颈,(,如果是局域网,可以不考虑,),服务器操作系统瓶颈,(,参数设置,),中间件瓶颈,(,参数配置,数据库,,Web,服务器等,),应用瓶颈,(SQL,语句,数据库设计,业务逻辑,算法等,),注:以上过程并不是每个分析中都需要的,要根据测试的目的和要求来确定分析的深度,对于一般的要求,分析到系统在将来大的负载压力,(,并发用户数,数据量,),下,系统的硬件瓶颈在哪里就够了。,61,
展开阅读全文