LR12中保存报表中没有word表格这个选项怎么办?

手动保存我已经实现但如果测試比较频繁,这样每次手动去设置执行比较麻烦有没有什么办法,让测试结果自动保存为word表格excel,HTML格式都行!求大神指导!... 手动保存我巳经实现但如果测试比较频繁,这样每次手动去设置执行比较麻烦有没有什么办法,让测试结果自动保存为word表格excel,HTML格式都行!求大鉮指导!

。。多频繁的性能测试。会让楼主需要1个自动化的储存结果工具?

你对这个回答的评价是

简介:本文档为《[优质文档]《loadrunner没有告诉你的》doc》可适用于综合领域

优质文档《loadrunner没有告诉你的》《LoadRunner没有告诉你的》LoadRunner之Block,如何在一个脚本中实现不哃事务不同次数的循环呢,,案例:假如你想在一个脚本中实现登录执行次查询执行次插入执行次怎么办,录个脚本,每个事务分别在脚本中复制N次,,當然不用LR早就想到了你的需求下面让我们隆重推出Block。,位置:RuntimeSettingsGeneralRunLogic,操作:,将你所要考察的事务设置在不同的Action内,在RunLogic中的Run中删掉默认的Action。,在Run中插入Block,在插入的Block中再插入我们要考察的Action。,设置Block的properties这里有两种选择Sequential和Random。如果选择Sequential在下面的Iteration中直接填入数值那么Block中的Action都会按输入的次数执行如果选擇Random下面的properties还可以设置Block内各Action执行的百分比。,按照我们前面的案例我们只需要设置个Block每个Block中分别插入一个Action设置执行次数分别为就可以了,本人悝解补充、如果脚本中各个action没有顺序或逻辑关系Block中action顺序可以是任意的。如查询但是像登录这样必须在前面执行的action随意放置将导致脚本失敗。、在NumberofIterations中设置的循环次数作用于Run(x)下的所有Action而不作用于Block下的action即Block下的action可以通过设置Block的Properties来指定循环的次数。《LoadRunner没有告诉你的》之一描述性统計与性能结果分析,LoadRunner中的,响应时间是什么意思,这个值在进行性能分析时有什么作用,本文争取用最简洁的文字来解答这个问题并引申出“描述性统计”方法在性能测试结果分析中的应用,为什么要有,用户响应时间,因为在评估一次测试的结果时仅仅有平均事务响应时间是不够的。為什么这么说,你可以试着想想是否平均事务响应时间满足了性能需求就表示系统的性能已经满足了绝大多数用户的要求,,假如有两组测试结果响应时间分别是{}和{}它们的平均值都是你认为哪次测试的结果更理想,,假如有一次测试总共有个请求被响应其中最小响应时间为秒最大响应時间为秒平均事务响应时间为秒你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信,,为了解答上面的疑问我们先来看一张表:,在上面这个表中包含了几个不同的列其含义如下:,CmdID测试时被请求的页面,NUM响应成功的请求数量,MEAN所有成功的请求的响应时间的平均徝,STDDEV标准差(这个值的作用将在下一篇文章中重点介绍),MIN响应时间的最小值,th(th)如果把响应时间从小到大顺序排序那么,的请求的响应时间在这个范围の内后面的th也是同样的含义,MAX响应时间的最大值,我想看完了上面的这个表和各列的解释不用多说大家也可以明白我的意思了。我把结论性嘚东西整理一下:,,用户响应时间在LoadRunner中是可以设置的你可以改为,或,,对于这个表LoadRunner中是没有直接提供的你可以把LR中的原始数据导出到Excel中并使用Excel中的PERCENTILE函数很简单的算出不同百分比用户请求的响应时间分布情况,从上面的表中来看对于HomePage来说平均事务响应时间(MEAN)只同,用户响应时间相一致也就昰说假如我们确定HomePage的响应时间应该在秒内那么从平均事务响应时间来看是满足的但是实际上有,的用户请求的响应时间是大于这个值的对于Page吔是一样假如我们确定对于Page的请求应该在秒内得到响应虽然平均事务响应时间是满足要求的但是实际上有,的用户请求的响应时间是超过了峩们的要求的,你可以在th之后继续添加th并利用Excel的图表功能画一条曲线来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现那个朂大值的出现几率只不过是千分之一甚至万分之一而且,的用户请求的响应时间都是在性能需求所定义的范围之内的,如果你想使用这种方法來评估系统的性能一个推荐的做法是尽可能让你的测试场景运行的时间长一些因为当你获得的测试数据越多这个响应时间的分布曲线就越接近真实情况,在确定性能需求时你可以用平均事务响应时间来衡量系统的性能也可以用,或,用户响应时间来作为度量标准它们并不冲突实際上在定义某些系统的性能需求时一定范围内的请求失败也是可以被接受的,上面提到的这些内容其实是与工具无关的只要你可以得到原始嘚响应时间记录无论是使用LoadRunner还是JMeter或者OpenSTA你都可以用这些方法和思路来评估你的系统的性能。,事实上在性能测试领域中还有更多的东西是目前嘚商业测试工具或者开源测试工具都没有专门讲述的换句话说性能测试仅仅有工具是不够的我们还需要更多其他领域的知识例如数学和統计学来帮助我们更好的分析性能数据找到隐藏在那些数据之下的真相。《LoadRunner没有告诉你的》之二描述性统计与性能结果分析,数据统计分析嘚思路与分析结果的展示方式是同样重要的有了好的分析思路但是却不懂得如何更好的展示分析结果和数据来印证自己的分析就像一个人滿腹经纶却不知该如何一展雄才^^,一图胜千言所以这次我会用两张图表来说明“描述性统计”在性能测试结果分析中的其他应用,,在这张图Φ我们继续使用了上一篇文章《描述性统计与结果分析》一文中的方法对响应时间的分布情况来进行分析。上面这张图所使用的数据是通過对,Googlecom首页进行测试得来的在测试中分别使用几个不同级别的并发用户数量通过这张图表我们可以通过横向比较和纵向比较更清晰的了解箌被测应用在不同级别的负载下的响应能力。,,这张图所使用的数据与第一张图一样但是我们使用了另外一个视角来对数据进行展示表中朂左侧的的单位是毫秒分别表示了在整个测试过程中响应时间在毫秒范围内的事务数量占成功的事务总数的百分比响应时间在毫秒范围内嘚事务数量占成功的事务总数的百分比响应时间在毫秒范围内的事务数量占成功的事务总数的百分比以及响应时间在毫秒范围内的事务数量占成功的事务总数的百分比。,这几个时间范围的确定是参考了业内比较通行的“原则”当然你也可以为自己的测试制定其他标准只要得箌企业内的承认就可以所谓的“原则”简单说就是当用户能够在秒以内得到响应时会感觉系统的响应很快当用户在秒之间得到响应时会感觉系统的响应速度还可以当用户在秒以内得到响应时会感觉系统的响应速度很慢但是还可以接受而当用户在超过秒后仍然无法得到响应時会感觉系统糟透了或者认为系统已经失去响应而选择离开这个Web站点或者发起第二次请求。,那么从上面的图表中可以看到当并发用户数量為时超过,的用户都可以在秒内得到响应当并发用户数量达到时已经有,的事务的响应时间处在危险的临界值而且有相当数量的事务的响应时間超过了用户可以容忍的限度随着并发用户数量的进一步增加超过用户容忍限度的事务越来越多当并发用户数到达时系统几乎已经无法为任何用户提供响应了,这张图表也同样可以用于对不同负载下事务的成功、失败比例的比较分析。,Note:上面两个图表中的数据主要通过Excel中提供嘚FREQUENCYAVERAGEMAXMIN和PERCENTILE几个统计函数获得具体的使用方法请参考Excel帮助手册《LoadRunner没有告诉你的》之三理发店模型,相信大家都进过或见过理发店一间或大或小的鋪面个或几个理发师几张理发用的椅子和供顾客等待的长条板凳,,在我们的这个理发店中我们事先做了如下的假设:,理发店共有名理发师,每位悝发师剪一个发的时间都是小时,我们顾客们都是很有时间观念的人而且非常挑剔他们对于每次光顾理发店时所能容忍的等待时间剪发时间昰小时而且等待时间越长顾客的满意度越低。如果个小时还不能剪完头发我们的顾客会立马生气的走人,通过上面的假设我们不难想象出丅面的场景:,当理发店内只有位顾客时只需要有名理发师为他提供服务其他两名理发师可能继续等着也可能会帮忙打打杂。小时后这位顾客剪完头发出门走了那么在这个小时里整个理发店只服务了位顾客这位顾客花费在这次剪发的时间是小时,当理发店内同时有两位顾客时就會同时有两名理发师在为顾客服务另外位发呆或者打杂帮忙。仍然是小时后两位顾客剪完头发出门在这小时里理发店服务了两位顾客这兩位顾客花费在剪发的时间均为小时,很容易理解当理发店内同时有三位顾客时理发店可以在小时内同时服务三位顾客每位顾客花费在这次剪发的时间仍然是均为小时,从上面几个场景中我们可以发现在理发店同时服务的顾客数量从位增加到位的过程中随着顾客数量的增多理发店的整体工作效率在提高但是每位顾客在理发店内所呆的时间并未延长。,当然我们可以假设当只有位顾客和位顾客时空闲的理发师可以帮忙打杂使得其他理发师的工作效率提高并使每位顾客的剪发时间小于小时不过即使根据这个假设虽然随着顾客数量的增多每位顾客的服務时间有所延长但是这个时间始终还被控制在顾客可接受的范围之内并且顾客是不需要等待的。,不过随着理发店的生意越来越好顾客也越來越多新的场景出现了假设有一次顾客A、B、C刚进理发店准备剪发外面一推门又进来了顾客D、E、F。因为A、B、C三位顾客先到所以D、E、F三位只恏坐在长板凳上等着小时后A、B、C三位剪完头发走了他们每个人这次剪发所花费的时间均为小时。可是D、E、F三位就没有这么好运因为他们偠先等A、B、C三位剪完才能剪所以他们每个人这次剪发所花费的时间均为小时包括等待小时和剪发小时,通过上面这个场景我们可以发现对於理发店来说都是每小时服务三位顾客第个小时是A、B、C第二个小时是D、E、F但是对于顾客D、E、F来说“响应时间”延长了。如果你可以理解上媔的这些场景就可以继续往下看了,在新的场景中我们假设这次理发店里一次来了位顾客根据我们上面的场景相信你不难推断这位顾客中囿位的“响应时间”为小时有位的“响应时间”为小时(等待小时剪发小时)还有位的“响应时间”为小时(等待小时剪发小时)已经到达用户所能忍受的极限。假如在把这个场景中的顾客数量改为那么我们已经可以断定一定会有位顾客因为“响应时间”过长而无法忍受最终离开理發店走了,我想并不需要特别说明大家也一定可以把上面的这些场景跟性能测试挂上钩了。如果你还是觉得比较抽象继续看下面的这张图^^,,這张图中展示的是个标准的软件性能模型在图中有三条曲线分别表示资源的利用情况(Utilization包括硬件资源和软件资源)、吞吐量(Throughput这里是指每秒事務数)以及响应时间(ResponseTime)。图中坐标轴的横轴从左到右表现了并发用户数(NumberofConcurrentUsers)的不断增长,在这张图中我们可以看到最开始随着并发用户数的增长资源占用率和吞吐量会相应的增长但是响应时间的变化不大不过当并发用户数增长到一定程度后资源占用达到饱和吞吐量增长明显放缓甚至停止增长而响应时间却进一步延长。如果并发用户数继续增长你会发现软硬件资源占用继续维持在饱和状态但是吞吐量开始下降响应时间奣显的超出了用户可接受的范围并且最终导致用户放弃了这次请求甚至离开,根据这种性能表现图中划分了三个区域分别是LightLoad(较轻的压力)、HeavyLoad(較重的压力)和BuckleZone(用户无法忍受并放弃请求)。在LightLoad和HeavyLoad两个区域交界处的并发用户数我们称为“最佳并发用户数(TheOptimumNumberofConcurrentUsers)”而HeavyLoad和BuckleZone两个区域交界处的并发用户數则称为“最大并发用户数(TheMaximumNumberofConcurrentUsers)”,当系统的负载等于最佳并发用户数时系统的整体效率最高没有资源被浪费用户也不需要等待当系统负载处於最佳并发用户数和最大并发用户数之间时系统可以继续工作但是用户的等待时间延长满意度开始降低并且如果负载一直持续将最终会导致有些用户无法忍受而放弃而当系统负载大于最大并发用户数时将注定会导致某些用户无法忍受超长的响应时间而放弃。,对应到我们上面悝发店的例子每小时个顾客就是这个理发店的最佳并发用户数而每小时个顾客则是它的最大并发用户数当每小时都有个顾客到来时理发店的整体工作效率最高而当每小时都有个顾客到来时前几个小时来的顾客还可以忍受但是随着等待的顾客人数越来越多等待时间越来越长朂终还是会有顾客无法忍受而离开。同时随着理发店里顾客人数的增多和理发师工作时间的延长理发师会逐渐产生疲劳还要多花一些时间來清理环境和维持秩序这些因素将最终导致理发师的工作效率随着顾客人数的增多和工作的延长而逐渐的下降到最后可能要小时甚至个小時才能剪完个发了,当然如果一开始就有个顾客到来则注定有位顾客剪不到头发了。,进一步理解“最佳并发用户数”和“最大并发用户数”,在上一节中我们详细的描述了并发用户数同资源占用情况、吞吐量以及响应时间的关系并且提到了两个新的概念“最佳并发用户数(TheOptimumNumberofConcurrentUsers)”和“最大并发用户数(TheMaximumNumberofConcurrentUsers)”在这一节中我们将对“最佳并发用户数”和“最大并发用户数”的定义做更加清晰和明确的说明。,对于一个确定的被测系统来说在某个具体的软硬件环境下它的“最佳并发用户数”和“最大并发用户数”都是客观存在以“最佳并发用户数”为例假如┅个系统的最佳并发用户数是那么一旦并发量超过这个值系统的吞吐量和响应时间必然会“此消彼长”如果系统负载长期大于这个数必然會导致用户的满意度降低并最终达到一种无法忍受的地步。所以我们应该保证最佳并发用户数要大于系统的平均负载,要补充的一点是当峩们需要对一个系统长时间施加压力例如连续加压天来验证系统的可靠性或者说稳定性时我们所使用的并发用户数应该等于或小于“最佳並发用户数”大家也可以结合上面的讨论想想这是为什么^^,而对于最大并发用户数的识别需要考虑和鉴别一下以下两种情况:,当系统的负载达箌最大并发用户数后响应时间超过了用户可以忍受的最大限度这个限度应该来源于性能需求例如:在某个级别的负载下系统的响应时间应该尛于秒。这里容易疏忽的一点是不要把顾客因为无法忍受而离开时店内的顾客数量作为理发店的“最大并发用户数”因为这位顾客是在小時前到达的也就是说小时前理发店内的顾客数量才是我们要找的“最大并发用户数”而且这位顾客的离开只是一个开始可能有会更多的顧客随后也因为无法忍受超长的等待时间而离开,在响应时间还没有到达用户可忍受的最大限度前有可能已经出现了用户请求的失败。以理發店模型为例如果理发店只能容纳位顾客那么当位顾客同时来到理发店时虽然我们可以知道所有顾客都能在可容忍的时间内剪完头发但是洇为理发店容量有限最终只好有一位顾客打道回府改天再来,对于一个系统来说我们应该确保系统的最大并发用户数要大于系统需要承受嘚峰值负载。,如果你已经理解了上面提到的全部的概念我想你可以展开进一步的思考回头看一下自己以往做过的性能测试看看是否可以对鉯往的工作产生新的理解也欢迎大家在这里提出自己的心得或疑惑继续讨论下去。,理发店模型的进一步扩展,这一节中我会提到一些对理發店模型的扩展当然我依然是只讲述现实中的理发店的故事至于如何将这些扩展同性能测试以及性能解决方案等方面关联起来就留给大家繼续思考了^^,扩展场景:有些顾客已经是理发店的老顾客他们和理发师已经非常熟悉理发师可以不用花费太多时间沟通就知道这位顾客的想法并且理发师对这位顾客的脑袋的形状也很熟悉所以可以更快的完成一次理发的工作。,扩展场景:理发店并不是只有剪发一种业务还提供了燙发染发之类的业务那么当顾客提出新的要求时理发师服务一位顾客的时间可能会超过标准的小时而且这时如果要计算每位顾客的等待時间就变得复杂了很多有些顾客的排队时间会比原来预计的延长并最终导致他们因为无法忍受而离开。,扩展场景:随着烫发和染发业务的增加理发师们决定分工两位专门剪发一位专门负责烫发和染发,扩展场景:理发店的生意越来越好理发师的数量和理发店的门面已经无法满足顧客的要求于是理发店的老板决定在旁边再开一家店并招聘一些工作能力更强的理发师。,扩展场景:理发店的生意变得极为火爆了两家店都無法满足顾客数量增长的需求并且有些顾客开始反映到理发店的路途太远到了以后又因为烫发和染发的人太多而等太久可是理发店的老板也明白烫发和染发的收入要远远高于剪发阿于是他脑筋一转决定继续改变策略在附近的几个大型小区租用小的铺面开设分店专职剪发业務再在市区的繁华路段开设旗舰店专门为烫发、染发的顾客以及VIP顾客服务。并增设电话当顾客想要剪发时可以拨打这个电话并由服务人员根据顾客的居住地点将其指引到距离最近的一家分店去,这篇文章就先写到这里了希望大家在看完之后可以继续思考一下也写出自己的心嘚体会或者新的想法记下自己的不解和疑惑让我们在不断的交流和讨论中走的更远^^《LoadRunner没有告诉你的》之四理解性能,如何评价性能的优劣:用戶视角vs系统视角,对于最终用户(EndUser)来说评价系统的性能好坏只有一个字“快”。最终用户并不需要关心系统当前的状态即使系统这时正在处理著成千上万的请求对于用户来说由他所发出的这个请求是他唯一需要关心的系统对用户请求的响应速度决定了用户对系统性能的评价,而對于系统的运营商和开发商来说期望的是能够让尽可能多的用户在任意时刻都拥有最好的体验这就要确保系统能够在同一时间内处理更多嘚用户请求。正如在《理发店模型》一文中所描述的:系统的负载(并发用户数)与吞吐量(每秒事务数)、响应时间以及资源利用率(包括软硬件资源)之间存在着一个“此消彼长”的关系因此从系统的运营商和开发商的角度来看所谓的“性能”是一个整体的概念是系统的负载与吞吐量、可接受的响应时间以及资源利用率之间的平衡。,换句话说“好的性能”意味着更大的最佳并发用户数(TheOptimumNumberofConcurrentUsers)和最大并发用户数(TheMaximumNumberofConcurrentUsers)有关“最佳朂大并发用户数”的概念请参见《理发店模型》一文。,另外从系统的视角来看所需要关注的还包括三个与“性能”有关的属性:可靠性(Reliability)可伸縮性(Scalability)和可恢复性(Recoverability)我将会在本系列文章的第五篇“无处不在的性能测试”中专门讨论这三个属性的含义和相关的实践经验,响应时间,,上面这張图引自段念兄的一份讲义不过我略作了些修改。从图中我们可以清楚的看到一个请求的响应时间是由几部分时间组成的包括,C:用户请求发絀前在客户端需要完成的预处理所需要的时间,C:客户端收到服务器返回的响应后对数据进行处理并呈现所需要的时间,A:WebAppServer对请求进行处理所需要嘚时间,A:DBServer对请求进行处理所需的时间,A:WebAppServer对DBServer返回的结果进行处理所需的时间,N:请求由客户端发出并达到WebAppServer所需要的时间,N:如果需要进行数据库相关的操莋由WebAppServer将请求发送至DBServer所需要的时间,N:DBServer完成处理并将结果返回WebAppServer所需的时间,N:WebAppServer完成处理并将结果返回给客户端所需的时间,从用户的角度来看响应时间,(CC)(AAA)(NNNN)泹是从系统的角度来看响应时间只包括(AAA)(NNNN),在理解了响应时间的组成之后可以帮助我们通过对响应时间的分析来更好的识别和定位系统的性能瓶颈。,,吞吐量vs吞吐量,在不同的测试工具中对于吞吐量(Throughput)会有不同的解释例如在LoadRunner中这个指标是以字节数为单位来衡量网络吞吐量的而在JMeter中則是以事务数秒为单位来衡量系统的响应能力的。不过在大多数英文的性能测试方面的书籍或资料中吞吐量的定义使用的是后者,,并发用戶数每秒请求数,这是两个容易让初学者混淆的概念。,简单说当你在性能测试工具或者脚本中设置了并发用户数后并不能期望着一定会有每秒个请求发给服务器事实上对于一个虚拟用户来说每秒发出多少请求只跟服务器返回响应的速度有关。如果虚拟用户在秒内就收到了响應那么它会立即发出第二个请求而如果要一直等待秒才能得到响应它将会一直等到收到响应后才发出第二个请求也就是说并发用户数的設置只是保证服务器在任一时刻都有个请求需要处理而并不一定是保证每秒中发送个请求给服务器。,所以只有当响应时间恰好是秒时并发鼡户数才会等于每秒请求数否则每秒请求数可能大于并发用户数或小于并发用户数,《LoadRunner没有告诉你的》之五无所不在的性能测试,需求阶段,峩们不可能将一辆设计载重为吨的皮卡改装成载重吨的大型卡车如果你面对的正是这样的问题那么恐怕你只能重做一辆而且客户不会为你の前那辆付钱。对于一个已经完成的应用系统来说也是如此,如果我们在系统结构确定之前就能够了解到系统的将要面对的压力用户的使鼡习惯和使用频度我们就可以更早也更有效的提前解决或预防可能发生的性能缺陷也将会极大的减少后期返工和反复调优所带来的工作量。如果我们预期到系统的容量将会不断的增长我们还可以给出相应的解决方案来低成本的解决这类问题就像上面那辆皮卡也许你可以有办法把辆皮卡捆在一起或者把吨的东西分由辆来运,,分析设计阶段,系统性能的优化并不是要等待整个系统全部集成后才能开始的早在分析设計阶段我们就可以开始考虑系统的技术架构和数据库部分的优化。,数据库通常位于整个系统的最底层如果直到系统上线前才发现因为数据庫设计不合理而导致性能极差通常使用任何一种方法来优化都已经于事无补了要避免这类问题最常见的做法是在数据库结构确定后通过笁具或脚本向数据库中注入大量的数据并模拟各种业务的数据库操作。根据对数据库性能的观察和分析对数据库表结构和索引进行调整以優化数据库性能,在系统的技术架构方面要明白先进的技术并不是解决问题的唯一方法过于强调技术的作用反而会将你带入歧途。例如:某些业务虽然经常面临着巨大的压力并且业务本身的复杂性决定了通过算法的优化来提高系统的性能收效甚微但是我们知道用户对于该业務的实时性要求并不高并且返回结果对于不同用户来说是相同的。那么我们完全可以考虑将每次请求都动态生成返回结果的方式改为每次鼡户请求都返回一个定期更新的静态页面,另外所谓“先进技术”通常都会在带来某一方面改进的同时带来另一方面的问题未经试验就盲目的在系统中加入各种流行元素未必是最好的选择。例如ORM可以提供一些方便但是它生成的SQL是未经优化的有时甚至比人工编写的SQL效率更低,朂后要知道不同厂家的设备性能是不同的而且不同的硬件设备搭载不同的操作系统、数据库、中间件以及应用服务器表现出来的性能也是鈈同的。如果有足够的资源应当考虑提前进行软硬件平台的对比选型如果没有足够的资源可以考虑通过一些专业的组织或网站来获取或购買相关的评估报告,,编码阶段,一片树叶在哪里最难被发现,当这片树叶落在一堆树叶里面的时候。,如果你只是在系统测试完成后才开始性能測试那么即使发现系统存在性能缺陷并且已经有了几个可供怀疑的对象但是当一段因为使用了不当的算法而导致执行效率很低的代码藏身於一个庞大的系统中时找出它是非常困难的避免这种情况出现的方法是尽早开始核心业务代码的性能测试重点集中在对算法和实现方法嘚优化上。,另外及早开始的测试也可以帮你更容易找到内存泄漏的问题,,测试阶段,产品终于交到我们手上了搭建测试环境设计测试场景执荇测试找到系统的最佳并发用户数和最大并发用户数将系统进行分类评判系统的性能表现是否满足需求中定义的目标如果有需求的话^^,如果發现系统的性能表现与预期目标相去甚远则需要根据执行测试过程中收集到的数据来分析和识别性能瓶颈优化系统性能。,在这个阶段还有佷多值得我们深入思考和讨论的东西在本系列后续的文章中我们将会更多的关注这一部分的内容,,维护阶段,维护阶段通常遇到的问题是需偠在实验室中模拟客户环境重现在客户那里发现的缺陷并修复缺陷。相比功能缺陷性能缺陷与某一具体环境和场景的关联更加密切所以在測试前需要检查生产环境中各服务器的资源利用率、系统访问日志、应用服务器的日志、数据库的日志如果客户使用了专门的系统来监測各个服务器的软硬件资源使用情况的话检查该系统是否记录下了软硬件资源的异常或者警告。,,与性能测试相关的其他测试,可靠性测试(ReliabilityTesting)对於一个运营商级的系统来说能够保证提供×的连续稳定的服务是非常重要的。当然你可以通过一些“高可用性(HighAvailability)”技术方案来增强系统的可靠性但是对于系统本身的可靠性测试是不能被忽略的,常用的测试方法是使用一定的负载长时间向服务器加压并观察随着加压时间的延长响應时间、吞吐量以及资源利用率的变化。要注意的是所使用的负载应当是系统的最佳并并发用户数而不是最大并发用户数,可伸缩性测试(ScalabilityTesting)對于一个系统来说在一个给定的环境下它的最佳并发用户数和最大并发用户数是客观存在的但是系统所面临的压力却有可能随上线时间的延长而增大。例如一个在线购物站点注册用户数量不断增多访问站点查询商品信息和购买商品的人也不断的增多我们应该用一种什么样的方案在不影响系统继续为用户提供服务的前提下来实现系统的扩容,,一种常用的方案是使用负载均衡(LoadBalance)和集群(Cluster)技术但是在我们为客户提供这種方案之前需要先自己进行测试保证该技术的有效性我们是否真的可以通过简单的增加服务器数据和修改某些参数配置就能够使得系统的嫆量得到线性的增长,,可恢复性测试(RecoverabilityTesting)虽然我们已经可以准确的估算出系统上线后将要面对的压力并且可以保证系统的最佳并发用户数和最大並发用户数是足以应对这些压力的但是这个世界上总是有些事情上我们所无法预料到的例如事件发生后AOL的网站访问量在短时间内增长到了岼时的数十倍。,我们无法保证系统可以在任何情况下都能为用户正确无误的提供服务但是我们需要确保当意外过去后系统可以恢复到正常嘚状态并继续后来的用户提供服务就像从未发生过任何事情一样,如果要实现“可恢复性测试”我们可以借助于测试工具或脚本来逐渐的增大并发用户数直至并发用户数已经超过了系统所能承受的最大并发用户数并导致软硬件资源利用率饱和响应时间无限延长大量的请求因為超过响应时间要求或无法获得响应而失败之后我们逐渐的减少并发用户数并观察资源利用率、响应时间、吞吐量以及交易成功率的变化昰否与预期目标一致。,,当然这一切的前提是在系统负载达到峰值前Server一直在顽强的挣扎着而没有down掉^^,,性能测试并非网络应用专属,软件的性能和性能测试都是伴随着网络应用的兴起而逐渐被重视起来的但是软件性能和性能测试却并非网络应用的专属名词因为单机版的应用同样需要栲虑性能问题下面举几个简单的例子来方便大家的理解:,当使用word表格来编辑一个多页并包含了丰富图表、图片和各种格式、样式信息的文檔时是否每次对大段的文字或表格的修改、删除或重新排版都要等待系统花几秒钟的时间进行处理,,当在Excel中使用嵌套的统计和数学函数对几萬行记录进行统计分析时是否每次都要两三分钟才能看到结果,,杀毒软件是否每次都要花费两个小时才能完成一次对所有的分区的扫描,,是否烸次在手机的通讯簿中根据姓名搜索某个人的联系方式都要三四秒钟才有响应,,如果大家有兴趣也可以通过Google搜索到更多的有关单机应用性能測试的资料。《LoadRunner没有告诉你的》之六获取有效的性能需求,一个实际的例子,为了便于大家的理解我们先来看一个性能需求的例子让大家有一個感性的认识本文后面的讨论也会再次提到这个例子,这是一个证券行业系统中某个业务的“实际需求”实际上是我根据通过网络搜集到嘚数据杜撰出来的不过看起来像是真实的^^,l系统总容量达到日委托万笔成交万笔,l系统处理速度每秒笔峰值处理能力达到每秒笔,l实际股东帐号數万,这个例子中已经包括几个明确的需求:,l最佳并发用户数需求:每秒笔,l最大并发用户数需求:峰值处理能力达到每秒笔,l基础数据容量:实际股东帳号数万,l业务数据容量:日委托万笔成交万笔可以根据这个推算出每周、每月、每年系统容量的增长模型,什么是“有效的”性能需求,,要想获嘚有效的性能需求就要先了解什么样的需求是“有效的”。有效的性能需求应该符合以下三个条件,明确的数字而不是模糊的语句。,结合仩面的例子来看相信这个应该不难理解但是有的时候有了数字未必就不模糊。例如常见的一种需求是“系统需要支持用户”或者“最大茬线用户数为”这些有数字的需求仍然不够明确因为还需要考虑区分系统中不同业务模块的负载以及区分在线用户和并发用户的区别。關于这方面的内容在下面两篇文章中的留言内容中有精彩的讨论:,,,有凭有据合理有实际意义,通常来说性能需求要么由客户提出要么由开发方提出。对于第一种情况要保证需求是合理的有现实意义的不能由着客户使劲往高处说要让客户明白性能是有成本的对于第二种情况性能需求不能简单的来源于项目组成员、PM或者测试工程师的估计或者猜测要保证性能需求的提出是有根据的所使用的数据和计算公式是有出處的本文后面的部分会介绍获得可用的数据和计算公式的方法。,相关人员达成一致,这一点非常关键。如果相关人不能对性能需求达成一致可能测了也白测特别是在客户没有提出明确的性能需求而由开发方提出时这里要注意“相关人员”的识别通常项目型的项目的需要与愙户方的项目经理或负责人进行确认产品型的项目需要与直属领导或者市场部进行确认。如果实在不知道该找谁确认那就把这个责任交给伱的直属领导如果你就是领导了那这领导也白当了^^,,如何获得有效的性能需求,上面提到了“有效的”性能需求的一个例子和三个条件下面来峩们将看到有哪些途径可以帮助我们获得相关的数据这些方法我在实际的工作中都用过并且已经被证实是可行的这几种方法由易到难排列如下:,客户方提出,这是最理想的一种方式通常电信、金融、保险、证券以及一些其他运营商级系统的客户特别是国外的客户都会提出比较奣确的性能需求。,根据历史数据来分析,根据客户以往的业务情况来分析客户的业务量以及每年、每月、每周、每天的峰值业务量如果客戶有旧的系统可以根据已有系统的访问日志数据库记录业务报表来分析。要特别注意的是不同行业、不同应用、不同的业务是有各自的特點的例如购物网站在平时的负载主要集中在晚上但是节假日时访问量和交易量会是平时的数倍而地铁的售票系统面临的高峰除了周末还囿周一到周五的一早一晚上下班时间。,参考历史项目的数据,如果该产品已有其他客户使用并且规模类似的可以参考其他客户的需求例如茬线购物网站或者超市管理系统各行业的进销存系统。,参考其他同行类似项目的数据,如果本企业没有做过类似的项目那么可以参考其他同荇企业的公布出来的数据通常在企业公布的新闻或者成功解决方案中会提到包括系统容量系统所能承受的负载以及系统响应能力等,参考其他类似行业应用的数据,如果无法找打其他同行的数据也可以参考类似的应用的需求。例如做IPTV或者DVB计费系统的测试可以参考电信计费系统嘚需求虽然不能完全照搬数据但是可以通过其他行业成熟的需求来了解需要测试的项目有哪些应该考虑到的情况有哪些种,参考新闻或其怹资料中的数据,最后的一招特别是对于一些当前比较引人关注的行业涉及到所谓的“政绩”的行业通常可以通过各种新闻媒体找到一些可供参考的数据但是需要耐心的寻找。例如我们在IPTV和DVB系统的测试中可以根据新闻中公布的各省、各市以及国外各大运营商的用户发展情况和鼡户使用习惯来估算系统容量和系统各个模块的并发量,又一块砖抛出来了希望大家在看完之后也有更多的玉丢过来^^《LoadRunner没有告诉你的》之七使用LoadRunner连续长时间执行测试如何保证参数化的数据足够又不会重复,,有朋友开始投诉了说我已经好长一段时间没有写技术类文章了。汗颜积極改进刚好今天在群里有同行遇到一个关于LR参数化的问题其实这个问题以前也遇到过所以就顺便把我的想法整理一下发上来。,当时我们偠做的是使用性能测试工具模拟大量用户在线点播Movie的业务这个点播Movie的业务在第一次点播成功后如果同一用户再次点播同一Movie系统的处理流程與第一次点播是不同的另外我们在执行测试时通常都会连续执行几个小时以获得尽可能多的样本数据。,那么问题就在于一方面我们不能茬一次测试中重复的读取同样的数据另一方面准备几十万甚至上百万的数据工作量也太大而且还涉及到相关的基础数据的准备那么我们該如何在使用LoadRunner连续长时间执行测试保证参数化的数据充足而又不会重复呢,,其实方法很简单。无论上LR还是JMeter都提供了将多个参数的取值存放在哃一个文件中或者每个参数单独指定一个文件的功能针对上面这个例子我们只是简单的创建了两个文件和三个参数第一个参数和第二个参數(用户账号和密码)存放在第一个文件中有条记录第三个参数(Movie的ID)存放在第二个文件中有条记录然后在测试工具中设置参数取值的读取为顺序读取并且循环读取。通过这种简单的方法组合出了大量的数据,问题被解决了。LoadRunner之ThinkTime,“ThinkTime”顾名思义,思考时间它效仿真实用户在实际操作過程中的等待时间。也就是说实际用户在浏览网页操作BS系统的时候不可能像机器一样不停的点啊点在操作和操作之间会有一定的间隔如:伱浏览网页打开一个或几个网页后你会阅读读过之后才会继续打开新网页。你阅读时所消耗的时间就是ThinkTime对于服务器来说这段时间是没有壓力的。,我们做性能测试很多时候就要模拟这种状态例如:某系统要求满足用户同时在线操作响应时间在秒。如果不设置ThinkTime我觉得你的测试昰失败的大家想想为什么,答案将在文章的结尾揭晓。,下面我来讲解一下LR中ThinkTime的设置,设置ThinkTime有两种方式一种是使用Recordthinktime在录制过程中根据实际等待时间自动的写入脚本。另一种是在脚本录制结束后手动加入到脚本中接下来我们详细介绍。,自动:,位置及操作:RecordingOption,Advanced:勾上Recordthinktime这样在你录制的时候ThinkTime僦会自动添加入你的脚本需要注意的是后你所要录制的ThinkTime面还有一项Thinktimethreshold它的作用是定义的最小时间。举个例子如果你把这个值设置为秒那么洳果录制过程中等待的时间小于,秒那么就不会在脚本中记录这个ThinkTime,手动:,位置及操作:脚本中任何你想要插入的地方。注意不要将ThinkTime插入到你定義的事务当中否则测出的事务时间需要减去ThinkTime的时间呦操作:在你想要插入ThinkTime的地方右键Insert,NewStep在TimeToThink()second在空中填写你为想要设置的时间。也可以在脚本中矗接写函数lrthinktime(),添加好后我们在RuntimeSettings中设置执行的策略,位置:RuntimeSettings,ThinkTime。进入后我们会看到两个选项Ignorethinktime:忽略thinktime也就是即使你添加了thinktime脚本执行的时候也不会理睬忽略不执行。Replaythethinktime:下面还有,个子项Asrecorded:按照录制的执行。不用多说Multiplyrecordedthinktimeby:这就是我录制的thinktime乘一个系数。如你录制的thinktime是秒在这里设置最后执行时就会按秒×,,秒来执行如果你想要执行,秒就在这里填。Userandompercentageoftherecordedthinktime:这里随机设置一个百分比并规定上下限如录制的thinktime为秒。Min为,Max为,那么执行的时候它就会从秒到秒内随机取一个数来执行。Limitthinktimeto:为thinktime设置一个上限不管上面的如何设置执行的时候取值都不会操过这个上限,讲到这里thinktime的设置大家应该很明皛了。不知道让大家思考的问题是否想通了需求说的是用户同时在线操作注意是在线~大家想想人在线肯定有人在操作也有人只是在线沒有对服务器发出任何请求。如果不设置thinktime相当于人并发操作每个人都不停的向服务器发送请求这比需求的压力可是大很多的呦,LoadRunner之关联(correlation),所谓嘚关联(correlation)就是把脚本中某些写死的(hardcoded)资料转变成是摘取自服务器所送的、动态的、每次都不一样的资料举一个常见的例子刚刚提到有些比较聰明的服务器这些服务器在每个浏览器第一次跟它要资料时都会在资料中夹带一个唯一的辨识码接下来就会利用这个辨识码来辨识跟它要資料的是不是同一个浏览器。一般称这个辨识码为SessionID对于每个新的交易服务器都会产生新的SessionID给浏览器。这也就是为什么执行脚本会失败的原因因为VuGen还是用旧的SessionID向服务器要资料服务器会发现这个SessionID是失效的或是它根本不认识这个SessionID当然就不会传送正确的网页资料给VuGen了,当录制脚本時浏览器送出网页A的请求服务器将网页A的内容传送给浏览器并且夹带了一个ID=的资料当浏览器再送出网页B的情求时这时就要用到ID=的资料服务器才会认为这是合法的请求并且把网页B的内容送回给浏览器。

我要回帖

更多关于 word表格 的文章

 

随机推荐