压力测试与性能测试是不是都可以用loadrunner11性能测试?

  IT168 技术软件测试已逐渐成为软件开发过程中的必不可少的重要环节,随着功能测试的必要性被普遍认同,自动化测试以及性能测试也逐渐崭露头角。性能测试是指在一定的负载情况下,系统的响应时间等特性是否满足特定的性能需求。  用于性能测试的工具有很多,常见的有:  1)HP LoadRunner(简称LR,商用软件):是一款适用于各种体系架构的自动化性能测试工具。LR的测试对象是整个企业的系统,通过模拟实际用户的操作行为和实时性能监控,来帮助你更快地查找和发现性能瓶颈。  2)IBM Rational Performance Tester(简称RPT,商业软件):也是一款性能测试工具,适用于基于 Web 的应用程序的性能和可靠性测试。RPT将易用性与深入分析功能相结合,从而简化了测试创建、负载生成和数据收集,以帮助确保应用程序具有支持数以千计并发用户并稳定运行的性能。  3)Apache JMeter(开源软件):基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等。  相比于其他测试工具,LoadRunner能支持更广泛的协议和技术,能测试各种IT基础架构,为用户的特殊环境提供特殊的解决方案。本文将以当前最新的LoadRunner12社区版来进行阐述。相比于之前版本,LoadRunner12社区版主要有以下新特性:  1)支持50个免费虚拟用户。  2)支持基于云平台的负载生成器。  3)支持HTML5及SPDY协议的脚本录制。  4)支持IE11、Chrome以及Firefox浏览器,支持Win8.1及Win2012 Server操作系统。  本文主要包括如下几个方面的内容:  LoadRunner组件  LoadRunner工作原理  基于LoadRunner的测试案例  一、LoadRunner组件  LoadRunner主要由以下4个部分组成:  1.脚本生成器(Virtual User Generator)  简称VuGen,提供了基于录制的可视化图形开发环境,可以方便简洁地生成用于负载的性能测试脚本。  2.负载生成器(Load Generator)  简称LG,负责将VuGen脚本复制成大量虚拟用户对系统形成负载。  3.负载调度监控器(Controller)  负责对整个负载的过程进行场景设置,指定负载的运行方式和周期,同时提供了系统监控的功能。  4.数据收集分析器(Analysis)  通过Analysis我们可以对负载生成后的相关数据进行整理分析,从而定位性能瓶颈。图1-LoadRunner主要组件  二、LoadRunner工作原理  首先通过VuGen来录制模拟用户行为的脚本;然后根据性能测试目标,在Controller中设计场景,指定负载生成的方式(如LG使用数,并发用户数,执行时长等);接着执行场景并监控被负载服务器的性能指标;待场景执行完毕,调用Analysis来对生成的数据进行分析,最后得出性能测试报告。图2-LoadRunner工作原理  三、基于LoadRunner的测试案例  使用LoadRunner进行性能测试,大体可分为3个步骤:  1.用户行为模拟  性能测试的第一步也是最重要的一步,就是生成虚拟用户脚本(Vuser t)。VuGen是基于录制-回放的工具,提供了整个脚本的开发环境。当你在应用程序中执行业务流程时,VuGen会将你的操作录制下来,自动转换成脚本,作为用户行为的模拟。使用VuGen进行用户行为模拟的流程如下:  1)录制脚本  如果你对Vuser t的函数非常熟悉,可以跳过录制过程来手动编写脚本。大多数情况下,我们会在录制生成的脚本上根据需求进行修改。录制流程主要包括以下协议选择、录制选项设置、开始录制、插入命令、停止录制。对一般B/S架构的Web应用,选择Web - HTTP/HTML协议就可以了。图3-协议选择  如果不能确定目标系统使用了哪些协议,可以使用Protocol Advisor 来进行协议分析。图4-Protocol Advisor工具  选择协议之后,进行录制选项设置,再点击红色按钮开始录制脚本。图5-starting recording窗口  可以看到,Vuser t脚本由以下三部分组成:  vuser_init: 虚拟用户的初始化函数,一般将用户初始化的操作放在这里,如登录操作,只会运行一次。  Action: 虚拟用户要做的业务操作,也就是测试内容的主体。可以迭代多次。  vuser_end: 与vuser_init相对应的收尾工作,如退出登录操作,只会运行一次。  开始录制脚本后,可以在recording界面进行执行插入事务、插入集合点、插入注释以及结束录制等命令。图6-recording界面  完成录制后,脚本通常会包含web_url()等函数。Vuser t脚本中常用函数有:  web_add_cookie():负责为Vuser脚本添加一个cookie信息。  web_url():可以模拟用户的HTTP Get请求。  web_submit_form():基于页面表单模拟用户的HTTP Post请求。该函数会自动检测在当前页面上是否存在form表单,然后将表单中数据进行传送。  web_submit_data():无需页面form支持就可以模拟用户的HTTP Post请求。  web_custom_request():可以模拟用户的HTTP Get以及Post请求。图7-常见函数  2)回放脚本  点击replay按钮进行回放验证。有时候回放脚本会出错,常见的错误原因及解决方式:  脚本中的数据存在动态部分。需要通过修改代码或关联处理来解决。  脚本没有录制到所有的协议请求。请选择正确的协议。  防火墙或杀毒软件的干扰。关闭不必要的防火墙和杀毒软件。  服务器连接失败。请确认当前服务器能正常访问。图8-回放验证  3)关联设置  关联就是把服务器返回的响应内容保存为参数,在请求时使用该参数,可实现动态数据。  如常见的系统登录功能,在登录后服务器会返回SeesionID,登录后的操作都需要提交该SessionID以确认身份。使用Vugen录制脚本时,将会记录服务器返回的SessionID并在下一个请求中发给服务器,如图9所示。图9-录制时的请求响应  等到回放脚本时,服务器会在接收到用户名密码后返回新的SessionID,而脚本仍然发送旧的SessionID给服务器,最终导致脚本回放失败。如图10所示。图10-回放时的请求响应  LoadRunner的两种关联方式:  自动关联  自动关联是通过录制和回放时的服务器返回值的比较,来确定需要关联的内容,然后帮助生成对应的关联函数。对于大多数脚本回放失败的情况,都可以通过自动关联来解决。图11-自动关联  手动关联  自动关联也有局限性,无法识别的特殊动态数据,需要手动关联。在LR11 Patch3之前的版本,使用web_reg_save_m_ex()函数来设置参数的左右边界实现手动关联;之后的版本则使用支持正则表达式的新函数web_reg_save_m_regexp(),如图12图12-自动关联  4)添加事务及思考时间  事务是指用户在客户端执行某种业务所需要的操作集。事务函数可以标记完成该业务所需要的操作内容。通过在业务操作开始前添加一个事务开始的计数器,在业务操作结束后添加一个事务结束的计数器,VuGen可以自动计算出函数间的时间差,即事务响应时间。添加事务主要涉及以下2个函数:  事务开始函数:lr_start_transaction(“事务名”)  事务结束函数:lr_end_transaction(“事务名”,LR_AUTO)  另外事务还支持事务嵌套:  lr_start_sub_transaction(“子事务名”,“父事务名”)  lr_end_sub_transaction(“子事务名”,“父事务名”)  一般地,录制得到的脚本都会包含思考时间。思考时间是LoadRunner提供的用于模拟用户等待的方式。在性能测试时只有启用思考时间,才能真正地按照用户的操作速度来完成请求,得到真实情况下的负载数据;否则则是全负载下的理论峰值数据。  思考时间函数:lr_think_time()图13-插入事务及思考时间  5)添加集合点  集合点函数能让虚拟用户集合在同一时间点上来进行操作,帮助生成有效可控的事务并发。集合点有以下三种集合策略,一般可以使用c策略来明确指定并发数。  a.当百分之多少的用户到达集合点时继续执行脚本  b.当百分之多少的运行用户到达集合点时继续执行脚本  c.当多少个用户到达集合点时继续执行继续  集合点函数:lr_rendezvous()图14-插入集合点  6)参数化  当我们录制完脚本后,需要对脚本进一步改进,通过参数化来确保脚本能够动态运行,从而更加真实地模拟真实用户操作。图15-参数化目的  参数化的步骤主要包括:选择要参数化的内容;设置参数取值以及参数更新方式;回放脚本验证参数值等。参数更新方式有顺序取值、随机取值、唯一取值三种类型,这里就不一一介绍了。  选择要参数化的内容,右键菜单选择“Replace with a meter”,点击“Create New meter”。图16-选择参数化内容  设置参数取值,参数类型可以是File类型、Table类型、Random Number类型、Date/Time类型等。这里使用Table类型,同一行中列名为username及password的记录将作为表单中用户名和密码的动态参数值。除了手动添加参数值外,也可以通过ODBC方式从DB中获取参数值。图17-设置参数取值  参数化后,脚本中的username及password字段取值已经不是静态值了,而是由“”包围起来的动态参数值。图18-参数化结果  2.场景设计与监控  当Vuser t开发完成后,使用Controller将这个执行脚本的用户从单人转化为多人,从而模拟大量用户操作以形成系统负载。场景是一种模拟大量用户操作的技术手段,通过配置和执行场景向服务器产生负载,监控系统的各项性能指标。  1)场景设计  通过对场景的设计,可以生成和用户需求相同的真实负载。场景分为目标场景和手动场景。一般地,我们使用使用自动场景来进行验收测试,使用手动场景来定位性能瓶颈。  目标场景:  通过设置一个运行目标,Controller会自动逐渐增加负载,测试系统能否稳定达到预期目标。如果达标则说明系统的性能符合测试目标,否则提示无法达标。自动场景是定性型性能测试,我们只关心最后性能测试的结论是否符合性能需求。  自动场景提供了5种目标:  1.虚拟用户(Vitual Users):指被测系统所需要支持的用户数;  2.每秒点击数(Hits Per Second):指在1秒内能做到的点击请求数;  3.每秒事务数(Transactions Per Second):反映了系统处理能力;  4.事务响应时间(Transactions Response Time):单位秒,反映了系统的处理速度;  5.每分钟页数(Pages Per Minute):指每分钟页面的刷新次数,反映系统每分钟能提供的页面处理能力。  手动场景:  自行设置Vuser的变换,通过增减Vuser来模拟真实的用户请求,完成负载的生成。手动场景是定量型性能测试,通过观察在负载增加过程中系统各个组件的变化情况,来定位性能瓶颈。  在这里,我们对上述录制完成的脚本创建手动场景来进行性能测试,如图19。然后点击OK按钮进入Controller的场景设计主界面,如图20。图19-创建手动场景图20-场景设计主界面  场景设计主界面主要包括以下3部分:  1.Scenario Groups  在这里可以添加多个脚本,并为每个脚本指定Vuser数目,添加目标LG,如图21、22所示。图21-Scenario Groups图22-添加目标LG  2.Scenario Schedule  对Global Schedule进行如下设置(将适用于该group中所有脚本):每隔1s初始化2个Vuser,总共10个Vuser。 Vuser入场时,每隔5s增加2个Vuser,在到达最多用户数时持续运行5min,Vuser退场时每隔5s减少2个Vuser。图23-Scenario Schedule  3.Interactive Schedule Graph  在交互计划图中可以直观地显示场景计划的用户负载情况。如图23所示,Vuser数目先陆续增加,在第20s时到达峰值10并持续5min,然后逐渐减少至0,整个场景持续5min 40s。图24-Interactive Schedule Graph  2)场景监控  完成场景设计后,点击Run标签页切换到场景监控主界面,如图25。在左侧Scenario Groups中列举了所有Vuser的运行状态;在右侧Scenario Status中列举了当前场景的运行情况;在下方Available Graphs中列举了所有可监控的计数器类型,通过添加计数器实例可以让LR监控其性能数据(如CPU、内存使用率等)。  我们可以监控本地服务器或远程Windows/Linux/AIX服务器(监控Linux/AIX需要先安装rstatd组件)以及Weblogic/WebSphere等应用服务器的性能数据。图25-场景监控主界面  点击Start Scenario按钮执行场景,可以看到交互计划图开始变化,监控主界面的Vuser状态开始变化,Running Vuser开始增加,Transaction Graphs等计数器开始显示数据。图26-交互计划图执行情况图27-Running Vuser图28-Transaction Graphs  点击Vusers 按钮可以查看当前所有Vuser的状态,并可以在执行过程中通过Add Vuser及Stop Vuser来动态调整负载情况,如图29。选中Vuser,右键选择Show Vuser可以查看该Vuser真实的运行情况,如图30。图29-动态调整负载图30-查看Vuser运行情况  3.数据分析  待场景执行完毕后,点击Results-&Analyze Results来启动数据收集分析器,如图31。它会导入场景数据并生成性能测试报告,如图32。  Summary Report包括了场景统计信息、事务摘要、HTTP响应摘要等信息;Graphs默认只包含最基本的一些计数器数据图,可以通过右键Add New Item-&Add New Graph来添加你需要的计数器。图31-启动Analysis图32-Analysis Summary  在Analysis中经常需要和各种Graphs打交道,这就涉及到图的设置,常用设置包括:  Set Filter/Group By:对图形设置过滤规则;  Set Granularity:设置数据采样点的间距,以秒为单位;  View Raw Data:打开图形对应的原始数据;  Comments:在图中添加注释;  Display Options:设置图形显示样式,如显示为3D饼图/柱状图/折线图,如图34。  Merge Graphs:对图形进行合并,来直观的获取相关计数器之间的关联关系,如图35。  Auto Correlate: 自动分析该图形与其他计数器的关联性,通过它可以发现数据之间的相互依赖性,从而定位性能瓶颈,如图36。图中的Collrelation Match代表关联性的强弱程度,数值越大说明关联性越强。图33-常用图形设置图34-平均事务响应时间的3D饼图展示图35-Running Vuser与Hits per Second的合并图图36-Throughput与Hits per Second的自动关联图  四、总结  本文主要介绍了LoadRunner的组成部分及工作原理,并通过完整测试案例来展示性能测试的具体实施过程,希望对有志于从事性能测试方面工作的朋友有所帮助。LoadRunner只是进行性能测试的一种测试工具。工具本身并不难掌握,但是运用它来高度模仿真实用户的行为(集合点、参数化、虚拟IP、分布式LG等技术),对生成的计数器数据进行分析并定位系统性能瓶颈,则需要不断地实践和总结。  五、参考资料  《性能测试进阶指南-LoadRunner11实战》  /cn/zh/software-solutions/loadrunner-load-testing/index.html  http://www.ltesting.net/ceshi/zhuanti/4053.html  /html/04/104.html  六、作者简介  赵金荣 软件开发工程师  任职于某大型IT外资企业,主要从事J2EE开发、测试工作。相关文章推荐
上篇博客介绍了loadrunner
上有一篇讲解了性能的重要指标代表什么,下面对LoadRunner性能测试结果分析思路做一下介绍:
性能测试结果分析思路:
关注Transaction Summary...
处理好录制的脚本,
随着智能手机近年来的快速增长,从游戏娱乐到移动办公的各式各样的手机APP软件渗透到我们的生活中,对于大型的手机APP测试不仅要关注它的功能性、易用性还要关注它的性能,最近发现LoadRunner12可...
Android内存限制
java虚拟机有内存使用上限的限制
adb shell进入手机,这此参数被纪录在/system/build.prop中,如果想直接查看可以使用adb shell...
随着手机APP用户量的增大,大的手机APP一般都需要进行压力测试,这几天用了Loadrunner 12进行了手机APP的压力测试,整理了下,大家可以参考参考怎样给Andorid / IOS手机APP进...
使用Loadrunner录制手机终端App脚本
目前手机APP上的功能日益丰富,对手机应用功能的性能测试需求也越来越多。公司比较抠门没有花钱买Loadrunner,可怜我们工作中一直用...
1、创建一个wifi,用手机连上创建的wifi,可以用的是160wifi
注:猎豹wifi录制的代码是空的;
2、配置手机wifi连接的HTTP代理地址和端口,代理地址(服务器)为电脑的ip地址,端...
随着手机APP用户量的增大,大的手机APP一般都需要进行压力测试,这几天用了Loadrunner 12进行了手机APP的压力测试,整理了下,大家可以参考参考怎样给Andorid
从我们接触loadrunner开始,书本上的案例都是讲用loadrunner录制web端用例,对于测试小白,手机端的性能测试该如何进行?
loadrunner官方资料,loadrunner1...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)使用loadrunner进行压力测试遇到的问题总结
使用loadrunner进行压力测试遇到的问题总结
&出处: 搜狗测试
&作/译者: baiyang
一、无法生成虚拟用户,运行报错:CCI compilation error -vuser_init.c
问题出现情景是:loadrunner当天可以正常运行,保存好后,脚本和参数化也保持一致,第二天再次打开不能使用。在controller中,脚本运行,提示错误:LR8.1 Error: CCI compilation error -vuser_init.c& 直接在loadrunner generator打开之前保存的脚本,点击运行无法执行,在回放日志栏提示:vuser_init.c:No such file or directory& 分析其原因是,缺少文件
解决办法:拷贝一个init.c文件放在测试脚本目录下或者重建一个文件;
二、Error: Failed to send data by channels - post message failed
寻找解决办法,多数测试人员给出解答如下:出现这个问题,目前判断是因为lr和测试机环境或者测试服务的兼容性出现了问题,而且一般的这个问题只是在测试大数据访问的时候才会出现。& 解决办法:在LR的controller负载生成器的菜单栏中的Diagnotics-&configure-&Web Page Diagnotics[max vuser sampling 10%]默认的Enable关掉,重新运行以后这个问题就很少出现了。
原网loadrunner help center,链接如下: 原因详见下图
三、服务器监测—top命令
性能测试过程中,利用top命令,对服务器的实时性能进行监测。& 详解:(Top命令及参数详解,不再赘述)& Cpu: 309.0% 用户空间占用CPU百分比& 对于多核cup,此值是个比例值,相对每个cup内核。当前服务器为24核实机。
四、服务器性能检测-io峰值,尖峰的原因
有波动,和开发讨论,有可能是虚拟机垃圾回收了~& 清理内存时,好像卡了一下,在服务器的监测数据中,明显有尖峰。
五、响应时间和点击率一直上不去的原因—kv数据添加机制
针对本次活动接口测试,服务端布的环境中,会将用户的deviceid和领奖等信息添加到kv中(相当于一个数据池),具体添加数据到kv时间或时机因需求而异。项目中有每天定时添加数据到kv中的数据信息,也有实时添加到kv的数据信息。& KV数据,同步和异步,服务端性能的区别;& (1)同步写KV数据,占用耗时,平均响应时间在3~4秒左右;& (2)异步写KV数据,请求的响应时间大大降低,在0.3~0.4秒左右;& 在开始压力测试之前,建议需要先和服务端开发沟通相关数据读写细节。
六、Linux内存回收机制-学习
关于Linux的内存回收机制,我也在学习中,O(∩_∩)O,感受到了Linux的美!
七、日志满,无法写log,点击率突降
测试中,用户不断增加,服务器性能较好,感觉不到什么压力,吞吐量也在增加,稳定一定时间后,点击率突然降低,响应时间骤升,此时测试机性能良好。到达极限后应保持,怎么会突然降低呢?查找原因,是开发将日志写在了一个较小的服务器磁盘中,压测过程中产生大量的日志,在测试一段时间后,当前磁盘已经接近饱和,达到100%,报警!
这也让我想到,之后的接口测试除了基本的接口参数、功能等基本内容沟通,还要和服务端开发更深入的沟通了解,部署环境的策略以及日志记录的机制等等,避免此类事情发生,提高测试效率。
该内容对我有帮助
欢迎给测试窝投稿或参与内容翻译工作,请邮件至。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
202°|2024 人阅读|0
后发表评论
& 测试窝,促进软件测试领域知识的传播。
测试窝常年法律顾问:
| 执业证号:80720压力测试和性能测试的区别问题?_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
压力测试和性能测试的区别问题?
压力测试:在性能可接受的前提下,测试系统可以接受的负载。
性能测试:在一定负载下,系统的反应时间可以接受或小于预定值。
举例:测试web系统,100个用户同时登录网站,网站系统响应时间不超过3秒。
操作:进行压力测试,前提网站系统响应时间时间不超过...
我有更好的答案
.压力测试是性能测试的一部分2.压力测试是测试系统的一个最大的负载情况.如果有一定的硬件资源可以弥补性能缺陷,意思就是假如一个系统我用一台服务器来支撑,性能测试是测试系统存在的瓶颈,通过发现瓶颈来解决性能缺陷3
采纳率:21%
为您推荐:
其他类似问题
您可能关注的内容
压力测试的相关知识
换一换
回答问题,赢新手礼包}

我要回帖

更多关于 loadrunner压力测试 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信