本文采用LoadRunner11来测试 AEAIPortal门户登录、两个数据分析功能的页面加载,以此来阐述LoadRunner基本使用方法,同时掌握单机运行环境下AEAI Portal的常规页面加载性能参数。
LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具,通过模拟多并发用户实时并发负载及实时性能监测的方式来确认和查找问题。
本文安装的是LoadRuner11,从菜单上看,如下图,LoadRunner的核心应用(组件)主要为三部分:
Virtual User Generator(Vugen)―用户脚本生成器,用于录制、设置脚本;
Controller ― 控制器,用于设计和运行场景;
Analysis ― 分析工具,用于分析压力测试结果。
而顶部LoadRunner,可以认为是一个入口程序,如下图:
可以分别调用启动Virtual User Generator(虚拟用户脚本生成器)、Controller (控制器)、Analysis(分析工具)。
熟练使用LoadRunner之后,可以直接点击菜单来启动Virtual User Generator录制脚本,录制完毕后,编辑完善脚本(如:设置集合点、设置事务、设置思考时间),然后以单用户模拟测试运行一下,确认效果是否正确。
接着,在Virtual UserGenerator界面点击菜单上的工具―》创建Controller场景,直接启动对应脚本的Controller,在控制器界面上可以设置:模拟用户数、启用虚拟用户策略、压力测试时间、用户停止策略等,设置完毕,可以运行测试场景进行压力测试,在测试过程中可以实时看到压力测试运行情况。
测试后完毕后,在Controller界面点击菜单上的结果―》分析结果,来启动分析工具,默认就对Controller的测试结果文件进行多维度分析,以图表方式展现出来。
在下面的测试步骤环节会对上面的三个过程进行详细说明。
虚拟用户(Virtualuser)脚本:在loadrunner中用Vuser模拟实际用户的操作来使用应用程序,整个过程可以录制下来生成脚本文件,以usr后缀结尾,脚本主要有三部分组成,vuser_init,action, vuser_end,其中action部分可以根据设置循环执行。通常情况下录制的脚本不能直接使用,需要编辑完善,如:设置集合点(Rendezvous)、设置事务(Rendezvous)、设置思考时间(lr_think_time)等。
事务(Transaction):可以认为是一个业务操作,可以是一个页面加载,也可以是一次表单提交,当然也可以是几个操作的集合,在loadrunner中可以设置子事务(sub_transaction)。LoadRunner 运行到该事务的开始点时,LR就会开始计时,直到运行到该事务的结束点,这个事务的运行时间在结果中会有反映。
集合点(Rendezvous):设置集合点,可以达到绝对的并发,在测试计划中,可能会要求系统能够承受1000 人甚至更多同时提交数据,在LR 中可以通过在提交数据操作前面加入集合点,当虚拟用户运行到提交数据的集合点时,LR 就会检查同时有多少用户运行到集合点,从而达到测试计划中的需求。集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。
思考时间(lr_think_time):用户在执行两个连续操作期间等待的时间称为“思考时间”,使用lr_think_time 函数模拟用户思考时间,可以编辑已录制的 lr_think_time 语句,也可在脚本中手动添加更多lr_think_time 语句。
场景(Scenario):场景是一种文件,以lrs为后缀,使用Controller进行编辑,一般可是设置模拟用户数、启用虚拟用户策略、压力测试时间、用户停止策略等。
以admin账户登录AEAIPortal,然后点击决策分析中的业务分析、现金流情况两个统计分析页面加载。把整个过程都录制在action中,接着编辑脚本,把登录操作剪切至vuser_init脚本中,接着在action部分插入集合点,把默认页面加载、业务分析、现金流程流情况通过插入事务的起止标识函数,来分隔成三个事务。
然后在Controller中设计场景,action循环执行10次,执行过程监视执行。
启动Visual User Generator,点击新建按钮,弹出如下界面:
选择Web(Http/HTML),点击“创建”按钮,显示界面如下:
注意:各项属性,一定要设置跟上图匹配。然后,点击“选项”显示如下界面:
选择基于HTML的脚本,然后点击“HTML高级按钮”,
设置如上图,然后点击“确定”关闭当前窗口,再点击“确定”,接着再点击“确定”,loadrunner会启动浏览器,还会显示出录制工具条(有时会现在)
在启动的浏览器地址栏录入:http://localhost:8080/portal/login.jsp,回车,显示登录页面,如下:
录入用户名、密码、验证码(注意:由于验证码是随机生成,所以在压力测试期间,需要屏蔽验证码校验,AEAI-Portal自带是否启用验证码校验开关设置),点击“登录”进入Portal主页面,如下图:
点击决策分析―》业绩分析,加载页面:
点击决策分析―》现金流情况,加载页面:
最后,点击如下图的录制工具条上的停止按钮(蓝色方块)
接着会生成脚本,如下图:
点击保存(ctr+s),把脚本保存为portal_test。
把登录页面加载部分以及登录操作脚本从action部分剪切至user_init部分,这样就需要定位登录截止位置的代码,其实很容易定位,只需查找:web_submit_data,且有登录相关参数的代码片段,然后把action最顶部的代码至登录完毕的代码剪切至user_init部分,最终效果如下图所示:
然后在登录代码前插入,开始事务脚本:
弹出窗口:
录入事务名为login,然后点击“确定”,最终如下:
然后,再插入结束事务脚本:
点击“确定”,如下:
由于AEAI Portal的统一身份登录页面,每次加载都有两个随机生成的隐藏域令牌(execution、lt),这两个令牌值需要登录时候提交校验的。因此,在这里要做处理,从登录页面查找两个隐藏域的值,保存起来,然后再提交表单时候,把这两个参数值以变量方式替换:
首先在登录页面加载代码前插入:
点击“确定”,设置如下:
点击“确定”,在脚本中插入代码:
同理设置lt,处理完毕如下:
现在已把隐藏域变量保存起来,在表单提交的时候需要使用,通过变量替换方式使用保存的变量:
把变量名放置于以大括号中实现变量的替换,如:{lt},{execution}。在这里还可以通过,loadrunner的输出脚本把变量输出在loadrunner日志中显示出来:
来验证获取的变量是否正确,如下图所示:
现在user_init部分代码已调整完毕,接下来开始调整action部分的脚本,点击左边代码列表部分的action,切换至action部分脚本,如下:
接着,在顶部先插入“思考时间”,点击插入―》新建步骤,如下:
在弹出窗口上,选择思考时间,如下:
点击确定,然后设置为3秒,如下:
点击“确定”,再点击“确定”。
接着,插入集合,如下:
填写“start”,点击“确定”
分析脚本,要把脚本分成主页面加载、业绩分析、现金流情况三个事务,这样就需要在对应代码前插入“开始事务”,在对应代码后插入“结束事务”,如下:
个人主页页面加载业务开始,如下图:
个人主页页面加载业务结束,如下图:
业务分析页面加载业务开始,如下图:
业务分析页面加载业务结束,如下图:
现金流分析页面加载业务开始,如下图:
现金流分析页面加载业务结束,如下图:
现在已调整完毕脚本,点击保存,然后点击工具―》创建Controller场景:
在弹出窗口,设置如下:
调整Vuser数为100,然后点击确定,启动Contoller,如下图:
双击全局计划处的启动Vuser,弹出窗口如下:
调整默认启动用户数,其中同时表征100个用户一起启动,下面的选项表示,每次多少人一组方式分组启动,后面的时间表征每组之间的时间间隔,调整完毕如下:
然后点击“确定”。
然后双击全局计划处所在“持续时间”所在的行,如下:
双击后显示如下窗口:
设置为“完成前一直运行”,如下图:
然后点击“确定”。
在场景组处默认组所在行上有右键,如下:
点击“运行时”设置,弹出窗口,如下:
设置迭代次数为10,如下图:
然后点击“确定”。
方案现在已经设置完毕,点击“保存”(ctrl+s),把场景也命名为“portal_test”,如下图:
点击“启动”按钮来,启动测试,如下图:
启动后底部的Tab切换至“运行”,如下所示:
在图上A、B、C、D部分都从各维度显示实时运行情况,尤其是底部显示的每个事务运行耗时的最大值、最小值、平均值、标准值、以及最后一个耗时,一般来说,平均值跟标准值偏离越大说明,耗时分别越离散,或者说越不稳定,反之则说明越稳定。
接着使用laodrunner的分析器来对测试结果做分析:
点击菜单上:结果―》分析结果,就可以启动分析工具,且默认分析刚才运行的测试结果。
如下图所示:
通过点击做左上侧的树形菜单显示不同纬度的分析结果,其中平均事务响应时间如下图所示:
点击底部表格上的保存图标,就可以把结果存为cvs格式:
然后用excel打开,整理如下(在单机32位jdk、 100个用户、20个并发性能测试结果,全部通过测试,没有失败)
度量 |
事务名 |
图的最小值 |
图的平均值 |
图的最大值 |
图的中间值 |
图的标准偏差 |
AchievementAnalysis |
业绩分析 |
0.355 |
2.252 |
3.606 |
2.417 |
0.945 |
CashFlow |
现金流统计 |
0.585 |
1.397 |
2.549 |
1.385 |
0.618 |
login |
登录 |
0.369 |
0.642 |
1.19 |
0.473 |
0.3 |
PersonalCenter |
主页面 |
0.736 |
2.245 |
4.705 |
2.148 |
1.143 |
Loadrunner可以做很多复杂的测试,但是在本文中没有被提及其他复杂的测试设置,如:如何从文件或者数据库,或者随机获取提交表单的参数(如:用户名、密码等),以及变量参数化设置、测试CS系统等等,这些需要在后续使用过程中深入学习、熟练掌握。
基于LoadRunner测试AEAI Portal文档 下载