loadRunner与性能测试_第1页
loadRunner与性能测试_第2页
loadRunner与性能测试_第3页
loadRunner与性能测试_第4页
loadRunner与性能测试_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-6-27loadRunner 与性能测试2012.10.21课程目标课程目标本课程的重点学习性能测试计划,分析与设计学习LoadRunner的脚本设计学习LoadRunner的场景设计与监控学习LoadRunner的结果分析Page 2 请注意性能问题的定位需要多方共同努力,测试人员的主要工作是执行一次完整的性能测试,记录下合适的过程数据,发现设计方案的性能缺陷,产生有说服力的性能测试报告本节目录本节目录Page 31性能测试计划,分析与设计性能测试计划,分析与设计2认识你的工具认识你的工具LoadRunner3LoadRunner的脚本设计4LoadRunner的场景设计与监控5L

2、oadRunner的结果分析6loadRunner 使用时候的FAQ1性能测试计划,分析与设计性能测试计划,分析与设计Page 4 当你接手一个性能测试任务你需要做什么(上)当你接手一个性能测试任务你需要做什么(上) 与相关人员沟通了解这个任务的目标如果只是简单的验证就不要搞的那么复杂如果是全面的测试请认真对待,绝不是跑跑LR那么简单时间是宝贵的,尤其是性能测试 了解性能测试时间通常性能测试需要消耗大量的时间性能测试需要尽量的提前否则更本没有时间和成本修改问题争取性能测试的时间 分析业务流程 请记住不懂业务的情况下完成的性能测试完全不可信。还要了解业务的部署方式1性能测试计划,分析与设计性能测

3、试计划,分析与设计Page 5 当你接手一个性能测试任务你需要做什么(下)当你接手一个性能测试任务你需要做什么(下) 收集相关信息服务器 不要做简单的折算 尽量与现网保持一致组网 尽量与现网保持一致 单机,双机,集群对测试结果影响很大 不同的数据库类型对结果影响同样很大现网的业务模型 不同的现网会有不同的模型,直接关系到你的性能测试设计 每个性能测试应该针对一个确定的现网模型现网的数据模型 直接关系到你在测试之前需要预制多少数据现网用户的使用习惯请区分高峰和低谷的情况1性能测试计划,分析与设计性能测试计划,分析与设计Page 6完成了上面的准备后,其实计划分析与设计的环节也就差不多了。但是还有

4、一些注意点请一定注意否则会吃亏的! 沟通清楚达成一致千万不要等到测试临近结束的时候才有人告诉你你搞错了一定要以邮件等形式正式的高速相关人员你测试方案与计划一定要直接与相关人员面对面的沟通最好有相关人员的正式确认 尽量给自己多争取时间和资源性能测试过程会出现非常多的意想不到不要以为性能测试执行的过程你还能做点别的 每天都要汇报自己的进展测试过程通常是漫长的,不主动汇报会使得相关人员失去对你的信任没有主动汇报会使得相关人员不知道如何支持你的工作 及时上报风险及时的上报风险,减低整个项目的风险通常负责人的领导会喜欢你及时的上报风险上报风险规避自己的风险本节目录本节目录Page 71性能测试计划,分析

5、与设计2认识你的工具认识你的工具LoadRunner3LoadRunner的脚本设计4LoadRunner的场景设计与监控5LoadRunner的结果分析6loadRunner 使用时候的FAQ1 loadRunner的基本使用1、一些基本的术语并发虚拟用户数:就是指 LR 上面的并发数,测试工具中的并发线程并发数:单位时间完成的任务数。严格的并发:LR加上集合点后的并发系统的实际并发数:系统内部实际启动接受任务的线程数。事务响应时间:完成一个操作集合的时间,通常反应的是用户体验的好坏。每秒事务数:每秒钟完成事务总数,反应的是系统的服务能力。每秒点击数:每秒中客户端和服务器交互的总数,反应的是

6、服务器自身的能力throughput:吞吐量反应的是网络通信量,分析是否存在网络瓶颈的时候使用Page 8认识LoadRunner LoadRunnerLoadRunner的基本结构的基本结构 LR是通过创建虚拟用户来代替真实实际用户来操作客户端软件。比如IE,来向IIS、Apache等Web服务器发送HTTP协议请求。 通过VUGen来创建脚本 通过Load Generators来产生负载压力 通过Controller来控制负载生成器工作 通过Analysis 对结果进行分析Page 9认识LoadRunner LoadRunner 主要有三个主要操作界面 脚本编辑器 :creat/Edit

7、 Script能够支持多种协议的脚本能够在一个脚本中使用多个协议能够支持多种语言(C,java,VB) 压力调度和监控中心: Controller 面向目标的场景面向压力的场景 结果分析器:Analysis能够将过程中的各种图表展现出来能够方便的对图表进行分析,统计来帮助分析结果 压力产生器: Load Generator 可以分布式的部署在多台机器上Page 10认识LoadRunnerLoadRunner的脚本分为三部分:vuser_init、vuser_end 和Action 其中vuser_init 和vuser_end 都只能存在一个,不能再分割,而Action 还可以分成无数多个部

8、分(通过点击New 按钮,新建ActionXXX) 一般情况下在录制需要登陆的系统时,我们把登陆部分放到vuser_init 中,把登陆后的操作部分放到Action 中,把注销关闭登陆部分放到vuser_end 中 在整个脚本运行过程中, vuser_init、vuser_end只会执行一次,反复执行的是Action。所以建议将登陆操作放到vuser_init,退操作放在vuser_end中。 注意:集合点,事务只能增加在Action中,如果登陆和退出就是测试点的话,还是需要放在Action中的。Page 11认识LoadRunner 场景运行示意图场景运行示意图Page 12初始化过程初始化

9、过程User Actions(业务业务流程流程)这这部分在部分在压压力力测试过测试过程中将会循程中将会循环执环执行行结束过程结束过程认识LoadRunner LoadRunnerLoadRunner的执行时候的基本结构的执行时候的基本结构 LR是通过创建虚拟用户来代替真实实际用户来操作客户端软件。比如IE,来向IIS、Apache等Web服务器发送HTTP协议请求。 通过VUGen来创建脚本 通过Load Generators来产生负载压力 通过Controller来控制负载生成器工作 通过Analysis 对结果进行分析Page 13认识LoadRunner LoadRunnerLoadRu

10、nner的可以选择很多协议,的可以选择很多协议, LoadRunnerLoadRunner也可以选择共同使用多组协议也可以选择共同使用多组协议 注意事项注意事项 这里我只是说说而已,我们基本上是没有lisence的,而且其合法的lisence是非常贵的Page 14本节目录本节目录Page 151性能测试计划,分析与设计2认识你的工具LoadRunner3LoadRunner的脚本设计的脚本设计4LoadRunner的场景设计与监控5LoadRunner的结果分析6loadRunner 使用时候的FAQLoadRunner的脚本设计 脚本设计的方式 1、录制后增强Web类型的应用最常见的方式

11、2、独立设计适用于不方便录制,或者对内部处理非常熟悉的方式 3、调用DLL方式适用于可以完全的模拟客户端,但是希望借助loadRunner的分析功能的场景。LoadRunner的脚本设计1、脚本的增强-参数化(重点) 1.1 文本类型的参数化例子如下: Page 17LR的参数更新方法和数据分配更新方法数据分配方法SequentialRandomUniqueEach iteration对于每次迭代虚拟用户将会从数据表中提取下一个值每次迭代虚拟用户从数据列表中提取新的随机值每次迭代虚拟用户从数据列表中提取下一个唯一值Each occurrence参数每次出现的时候虚拟用户将从数据列表中提取下一个

12、值,即使在同一个迭代中参数每次出现的时候虚拟用户将从数据列表中提取新的随机值,即使在同一个迭代中参数每次出现的时候虚拟用户将从数据列表中提取新的唯一值,即使在同一个迭代中Once对于每一个虚拟用户,第一次迭代中分配的值将用于所有的后续迭代对于每一个虚拟用户,第一次迭代中分配的随机值将用于所有的后续迭代对于每一个虚拟用户,第一次迭代中分配的唯一值将用于所有的后续迭代LoadRunner的脚本设计 文本类型的参数化,也可以使用直接将数据库中的数据导入到文本中。但是请注意1、loadRunner默认使用逗号作为列分隔符,导入前请检查数据格式。2、同时该步骤只在执行之前有效,不能做到性能测试过程中实时

13、更新数据。 Page 18LoadRunner的脚本设计1.2 其他类型的参数化1、Date/time:时间类型,请注意可以自己定义时间格式。2、Group name:默认为脚本名。注意中文可能会使得报错3、iteration:迭代数,这个容易理解。4、LoadGenerator name 负载生成器名:其实就是运行机器的计算机名5、Random Number :随机数,这个也比较容易理解6、Table:表类型(存储形式不同啦,小数据量使用file,中的考虑使用table如果是大型的,直接数据库。)7、Unique Number 唯一数,和文本型的唯一数差不多8、User Defind fun

14、ction:用户自定义的方式。9、VUser ID:虚拟用户ID:每一个用户有唯一的IDPage 192、一个在痛苦中学到的经验、一个在痛苦中学到的经验如何进行参数化建议的参数化的方法sequserIDuserGroupIDIterationNumberparam这种方式能够用最短的时间,重新准备一次测试。 LoadRunner的脚本设计1、录制模式的比较HTML-based Script 脚本比较简单,脚本增强容易,脚本的适应性差,回放出错率高。URL-based Script 脚本比较详细,脚本增强困难,脚本的适应性好,回放成功率高。推荐的规则1.基于浏览器的应用程序推荐使用HTML- b

15、ased scrpt;2.不是基于浏览器的应用程序推荐使用URL-based scrpt;3.如果基于浏览器的应用程序中包含了Javascrpt,并且该脚本向服务器发送了请求,推荐使用URL-based scrpt;4.基于浏览器的应用程序中使用了HTTPS安全协议,建议使用URL-based scrpt;此处必须要说的函数此处必须要说的函数 web_concurrent_start 和int web_concurrent_end 两个函数组成一个并发组。在并发组中的函数不是立即执行的,在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。 在并发组中,可以包含的函数有

16、:web_url、web_submit_data、web_custom_request、web_create_html_param、web_create_html_param_ex、web_reg_save_param、web_add_header。Page 20LoadRunner的脚本设计soap消息脚本设计有两种方法1、使用loadRunner自带的soap_request,不过其需要额外的Lisence。2、使用loadRunner的通用http消息的函数web_custom_request。一般情况下我们如果了解soap消息的结构可以直接设计脚本。如果不了解soap消息的消息体,可以

17、通过抓包的方式抓到消息体,然后模拟消息体设计脚本下面提供了一个例子mySoapTest.zip请解压到一个支持axis2的tomcat的webapp路径下soapTest.zip是loadRunner的脚本helloWorld.wsdl 就是soap消息体的wsdlPage 21LoadRunner的脚本设计关于事务 事务的作用 获得某些操作的所消耗的时间 获得某些操作的成功率Page 22 添加事务的具体步骤: 点击菜单栏(或右键菜单)上的InsertInsertStart TransactionStart Transaction,创建事务开始,事务名称可随意。 点击菜单栏(或右键菜单)上的

18、InsertInsert End End TransactionTransaction,创建事务结束,事务名称可随意。 需要注意的是: 事务必须有结束,就是说有Start Transaction Start Transaction 必须要有End End TransactionTransaction 事务可以嵌套 每个事务的名字不能相同 需要多个脚本同时跑的时候建议不要依赖Action_TransactionLoadRunner的脚本设计关于集合点 集合点的作用 集合点用以同步虚拟用户以便恰好在同一时刻执行任务 集合点能够模拟瞬间浪涌压力,使得系统承受的压力在某个时间点承受最大的压力。 添加事

19、务的具体步骤: 点击菜单栏(或右键菜单)上的InsertInsert R Rendezvousendezvous,创建集合点,集合点名称可随意。 集合点的原理 集合点的实现是Controller发现某一个虚拟用户已经运行到了一个集合点的未知。Page 23 需要注意的是: 如果你定义了事务,集合点一定要在Start TransactionStart Transaction之前 如果你的测试需要持续一段时间,集合点的存在实际上是降低了系统受到的压力获得某些操作的成功率 每个事务的名字不能相同 需要多个脚本同时跑的时候建议不要依赖Action_TransactionLoadRunner的脚本设计1

20、、Web_submit_form和Web_submit_data的区别 从工具的角度来说,厂商推荐使用Web_submit_form函数,因为这个函数看起来更易用,需要关注的东西较少。但是,从个人的角度来说,我推荐使用Web_submit_data函数。因为这个函数提供更多技术细节。在测试的过程中可控性更高。 因为,Web_submit_form只提供了和Cache中有差别的数据,其余的数据会自动从Cache中取。而Web_submit_data则提供了所有的数据,不管Cache存在不存在Web_submit_data都是可以工作的。 所以厂商会推荐使用Web_submit_form,因为它看

21、起来更易用,甚至关联都不需要作,就能直接回放。但是这种情况只能对于简单系统适用。对于一些银行或者移动的复杂系统来说,有时侯会对Cache作特殊操作,Web_submit_form有时侯就会报一些莫名其妙的错出来。而Web_submit_data则跟Cache内容无关。稳定性和可控性都要比Web_submit_form要高很多。所以个人推荐尽量使用Web_submit_data函数。Page 24LoadRunner的脚本设计1、不是http的协议的情况 可以使用windows Socket 协议,例如 telnet,tcp消息等。因为是windows Socket 协议是基础协议,所以可以用于

22、几乎所有的类型的消息。2、FTP 也是常用的消息Page 25LoadRunner的脚本设计关联与参数的联动这两个概念放在一起,是因为它们让人感觉比较相似,但是它们是完全不同的两个功能。1、关联 关联简单的说就是前一步的结果,能够给后一步使用,例如ID。我们的业务中常见需要走流程的业务。比如,第一步先创建一个表单。第二步再提交这个表单。显然手动操作的时候,知道我要提交哪个表单,但是loadRunner是模拟发送提交的消息,他怎么知道会系统自动赋予的该表单的ID值是多少呢,所以需要用到关联。关联有两种方式:a、自动关联 录制完成脚本后,点击如图所示的按钮或者,直接回放一遍,LR会自动提示你是否需

23、要自动关联。这种方式虽然比较容易,但毕竟是自动做的,容易出错。Page 26LoadRunner的脚本设计b、手动关联 手动关联其实也没复杂到哪里去,而且两种方式本质上是一样的。关键是一切都可控。因此推荐使用该方法。 具体的操作时,先使用web_reg_save_param函数记录下返回页面中的参数值,然后将该参数赋予到下面的操作的响应的对象中。 web_reg_save_param(“参数名”,“LB=返回消息左边”,“RB=返回消息的右边, LAST)Page 27LoadRunner的脚本设计2、参数的联动 参数的联动是File类型参数中常用的手段。就是说如果前面的参数取第10个值,后一

24、个参数也会取第10个值。 这样做通常用于两个参数之间有一一对应关系的场景。 Page 28LoadRunner的脚本设计web_reg_find 和web_find 之争脚本中位置的不同脚本中位置的不同web_reg_find是先注册(register)后查找的;使用时将它放在请求语句的前面。而web_find是查找前面的请求结果;使用时将它放在请求语句的后面。匹配方式的不同匹配方式的不同另二者的参数也完成不一样的,web_reg_find参数中SaveCount记录查找匹配的次数,web_find的机制是一旦查找匹配成功就立即返回,并不继续查找和记录匹配次数对设置要求不同对设置要求不同再者R

25、un-time设置中的“enable image and text check”对web_find有效,而对web_reg_find无效。注意:web_find不支持URL模式下录制的脚本。执行效率的不同执行效率的不同web_reg_find可以直接在内存里面检查所指定对象是否存在。而web_find是文本检查点,需要对应页面完全显示出来之后,才会执行检查。概言之,使用web_reg_find不用启用文本检查点功能;使用web_find就一定要启用文本检查点功能,否则检查点无效。很显然,前者比后者执行效率要高,这也是LR要不建议使用后者的原因。Page 29文本检查点文本检查点 对于一个性能测

26、试脚本而言,如果只负责产生消息和发送请求,而不管服务器是否正确响应,这个脚本是不完善的。使用其完成的性能测试也是不可信的。因为,LoadRunner只要接到服务器的返回消息,就认为请求已经成功。所以脚本中是否有完善的检查点是判断脚本是否成熟的关键标志。loadRunner的高级编码Page 30lLR的的错误处错误处理理函数函数不要让无关紧要的错误,毁了你的性能测试lRun-time Settings中可以设定出错处理的方式l可以使用lr_continue_on_error函数来增强错误处理能力llr_continue_on_error函数语法结构如下:void lr_continue_on_

27、error ( int value );l同时还可以使用错误信息上报函数llr_error_message函数能够将错误信息上报到场景例子在备注中常量名称常量名称常量值常量值含义含义LR_ON_ERROR_NO_OPTIONS 0取消出错继续执行设置LR_ON_ERROR_CONTINUE 1发生错误继续运行脚本LR_ON_ERROR_SKIP_TO_NEXT_ACTION 2发生错误跳至下个Action运行LR_ON_ERROR_SKIP_TO_NEXT_ITERATION 3发生错误跳至下一迭代来运行LR_ON_ERROR_END_VUSER 4发生错误结束当前用户LoadRunner的脚

28、本设计LoadRunner的脚本设计1、使用动态链接库a、使用VC 6.0新建DLL的工程,编写动态链接库。b、编译通过后,将DLL放到LR的工程中c、使用lr_load_dll(“1970ToNowDLL.dll”)加载动态链接库;d、运行fun(cha)使用动态链接库;例子:1970年到现在的秒数计算Page 31本节目录本节目录Page 321性能测试计划,分析与设计性能测试计划,分析与设计2认识你的工具认识你的工具LoadRunner3LoadRunner的脚本设计4LoadRunner的场景的场景设计与监控设计与监控5LoadRunner的结果分析6loadRunner 使用时候的F

29、AQLoadRunner的场景设计与监控1、场景的设置a、面向目标的场景 这种场景适用于不清楚系统的能力,需要找到系统的能力情况。需要搞清楚系统的最优能力的情况b、面向压力的场景 该场景适用于模拟浪涌压力的时候确定了系统的压力目标,检查是否达到的情况进行长期稳定性测试的情况Page 33LoadRunner的场景设计与监控1、面向目标场景的设置a. Goal Type 目标类型b. Reach goal of 目标值 c. Using a minimum of and a maximum 使用虚拟用户数的区间 d. If target cannot be reached 如果无法达到目标时候的

30、处理方式 e. Scenario Start Time 场景开始时间(非常有用的)f. Receive notification:目标没达到时给出错误信息 Page 34LoadRunner的场景设计与监控1、面向压力场景的设置Page 35LoadRunner的场景设计与监控多台协助方式生成负载当你自己的机器已经无法模拟足够的压力的时候当你需要在多个网段同时产生负载的时候 这个时候你就需要一个这样一个技术在帮你。Page 36LoadRunner的场景设计与监控1、运行场景的过程中微调场景Page 37LoadRunner的场景设计与监控1、IP 欺骗当你测试的应用对IP做了限制,不允许相同

31、的IP完成同一个事情。此时你就需要IP欺骗来帮您骗过应用的限制措施。例子Page 38注意事项注意事项1、本地IP需要是静态IP否则会报错的。2、使用一次最好保存的你的设置。3、不管是设置IP欺骗还是取消IP欺骗都需要重启本地的机器。通常我们最需要关注的视图1、并发用户数2、平均事务响应时间3、每秒事务数4、每秒点击数5、吞吐量6、资源使用情况7、错误状态Page 39LoadRunner的场景设计与监控loadRunner的结果分析Page 40关注的内容关注的内容关注点关注点正确率最重要指标,反应测试的有效性和系统的正确性每秒事务数系统的服务能力平均事务响应时间直接反应用户的感官体验,特别

32、需要注意90%用户的平均事务响应时间并发虚拟用户数压力大小的最重要的指标,注意服务器的响应时间,通常不是随着用户数的增加而增加或者减少,通常有一个拐点每秒点击数反应服务器和容器的能力吞吐量反应的是网络情况服务器资源反应对服务器资源,磁盘,CPU,内存之类的消耗LoadRunner的场景设计与监控 Unix资源监控 CPU utilization: CPU资源利用率很好理解 average load :过去一分钟平均负载 paging rate:内存与硬盘交换的页数,判断内存的使用情况 Swap-in rate:和Swap-out rate: 综合判断内存是否为瓶颈 Disk traffic:

33、disk传输率 等价iostat d,判断是否存在IO负载过高的情况 System mode CPU utilization 和 User mode CPU utilization 可以综合判断负载是出现在何处Page 41loadRunner的过程数据监控Page 42lOracle的的资资源源监监控控控控pCPU used by this session:所有session的cpu占用量pexecute count:执行的sql语句数量pdb block changes:那部分造成SGA中数据块变化pparse count (hard)未命中的sql语句pparse count (tota

34、l)解析调用总数 Sql软解析比例 = 1 - parse count (hard)/ parse count (total)pphysical reads:包括插入到SGA缓存区的物理读以及PGA中的直读pphysical writes:LoadRunner的场景设计与监控本节目录本节目录Page 431性能测试计划,分析与设计性能测试计划,分析与设计2认识你的工具认识你的工具LoadRunner3LoadRunner的脚本设计4LoadRunner的场景设计与监控5LoadRunner的结果分析的结果分析6loadRunner 使用时候的FAQloadRunner的结果分析Page 44打

35、开结果分析视图的方法打开结果分析视图的方法 1、在场景中可以设定结果保存目录测试结束后,可以在该目录下面找到一个。Lrr的文件,双机打开即可以进入结果分析视图2、点击场景中的如右图所示的位置LoadRunner的结果分析loadRunner的结果分析Page 45结果分析视图的常用操作结果分析视图的常用操作 1、合并2、分解loadRunner的结果分析Page 46使用使用awrawr报告来定位不合理的报告来定位不合理的SQLSQL该工具主要是给DBA来用的,我们主要用他的SQL分析功能方法很简单: cd $ORACLE_HOME/rdbms/admin sqlplus / as sysdba awrrpt后面按照提示做就好了loadRunner的结果分析Page 47使用使用j

温馨提示

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

评论

0/150

提交评论