实现LoadRunner多个场景的顺序执行 (转)

上一篇 / 下一篇  2010-11-03 23:09:03 / 个人分类:性能测试

实现LoadRunner多个场景的顺序执行
注:以下内容部分总结自51testing论坛。

应用场景
假设有3个不同的测试场景,分别为并发登录、核心业务、可靠性测试,3个场景有先后执行顺序。由于白天测试机器另有用处,只能在晚上进行性能测试,这时我们的期望是能否把测试场景都设定好之后晚上自动运行,第二天我们回来看测试结果呢?
答案是肯定的,可以有两种方式实现。

第一种,相对简单
充分利用LR Controller里面Group的功能。
新 建一个场景把3个脚本都添加进来,在Edit Schedule中选择“Schedule by Group”的方式,在StartTime中设置3个脚本的运行顺序为“Start when Group xxx finished”,并在“Scenario Start Time”中设定场景在晚上的运行启动时间。设定完定时执行场景后,点击StartScenario按钮,会出现一个倒计时窗口,这样在固定的某个时间 上,测试场景中的3个脚本将乖乖的按照设定的先后顺序进行测试。注意,如果没有点击StartScenario按钮激活测试,是不会真正进行测试的。(感 谢Athenst朋友的提醒,^_^)

第二种,比较灵活
我们把应用场景稍微扩展一下,假设其中1、3场景只有一个测试脚本,而核 心业务场景由数据录入、数据查询、数据上报3个脚本组成,同样的,3个场景仍需按顺序进行测试。这时如果采用第一种方式,由于第2个场景有3个脚本,所以 第三个脚本的启动时间就是一个问题了。由于Controller中每个脚本都对应一个Group,而且GroupName不能重复,这时第三个场景的 StartTime中“Start when group finished”则只能是选择第二个场景中的某个Group,而并非是第二个场景的3个脚本都完成之后再进行,无法达到我们的初衷。
这时,可以通过命令行的方式来进行。
首先创建并设置好3个测试场景,再创建一个一个批处理程序按先后顺序调用这3个场景进行测试,最后通过Windows的定时任务设定批处理的执行时间。
批处理示例如下:
cls
SET M_ROOT="D:\Program Files\MI\Mercury LoadRunner\bin\"
%M_ROOT%\wlrun.exe -TestPath "D:\Program Files\MI\Mercury LoadRunner\scenario\Test\TestScen_1.lrs" -Run
%M_ROOT%\wlrun.exe -TestPath "D:\Program Files\MI\Mercury LoadRunner\scenario\Test\TestScen_2.lrs" -Run
%M_ROOT%\wlrun.exe -TestPath "D:\Program Files\MI\Mercury LoadRunner\scenario\Test\TestScen_3.lrs" -Run
这种方式比较灵活,但需要注意在Result Settings中设置“Automatically create a results directory for each scenario execution”,以免后面的测试结果覆盖了前面的。


另外补充一下,如果想对某个脚本进行50、100、150...等用户数递增的测试,也可以用以上方法实现,但需要注意的是将事务名称区分开以便进行分析。
 
 
 
 
 
 
 
*************************************分隔线*****************************
 
批量执行场景:
 
@echo off
 
echo =====================================
 
echo 批量执行场景...
 
echo =====================================
 
SET M_ROOT="C:\Program Files\Mercury LoadRunner\bin\"
 
%M_ROOT%\wlrun.exe -TestPath "D:\Fin\scenario\Scen_1.lrs" -Run
 
echo Scen_1执行完毕
 
%M_ROOT%\wlrun.exe -TestPath "D:\Fin\scenario\Scen_2.lrs" -Run
 
echo Scen_2执行完毕
 
%M_ROOT%\wlrun.exe -TestPath "D:\Fin\scenario\Scen_3.lrs" -Run
 
echo Scen_3执行完毕
 
%M_ROOT%\wlrun.exe -TestPath "D:\Fin\scenario\Scen_4.lrs" -Run
 
echo Scen_4执行完毕
 
echo. & pause
 
批量执行脚本:(说明,有些时候我们需要把LR 当作功能测试使用,但是又能做到QTP所做不到的东西,例如协议验证测试中,我们通过LR脱离客户端,直接向后端服务器发送报文这时需要用到脚本1中的结果保 存成文件给脚本2做数据执行。LR 只是一个工具,并非只能做功能测试。因为他的是真实的向目标服务器进行交互。)
 
@echo off
 
echo =====================================
 
echo XX项目自动化脚本执行开始...
 
echo =====================================
 
echo 读取Data文件...
 
echo 传送文件中...
 
copy .\Data\login.txt .\PGCreateGroup_ex\login.dat
 
copy .\Data\Apply.txt .\PGApplyGroup_ex\login.dat
 
copy .\Data\ipport.txt .\PGApplyGroup_ex\ipport.dat
 
copy .\Data\ipport.txt .\PGSetMemberPermission\ipport.dat
 
copy .\Data\ipport.txt .\PGCreateGroup_ex\ipport.dat
 
echo 传送完毕...
 
SET M_ROOT="C:\Program Files\Mercury\LoadRunner\bin"
 
%M_ROOT%\vugen.exe -TestPath ".\PGCreateGroup_ex\PGCreateGroup_ex.usr" -RUN
 
echo 传送文件中...
 
copy .\PGCreateGroup_ex\login.dat .\PGSetMemberPermission\login.dat
 
echo 传送完毕...
 
%M_ROOT%\vugen.exe -TestPath ".\PGApplyGroup_ex\PGApplyGroup_ex.usr" -RUN
 
echo 传送文件中...
 
copy .\PGApplyGroup_ex\AddGroup.dat .\PGSetMemberPermission\AddGroup.dat
 
copy .\PGApplyGroup_ex\login.dat .\PGSetMemberPermission\MemSip.dat
 
echo 传送完毕...
 
%M_ROOT%\vugen.exe -TestPath ".\PGSetMemberPermission\PGSetMemberPermission.usr" -RUN
 
echo 执行完毕...
 
echo copyright in 02-24-2009 , Fin.
 
echo. & pause
 
曾经用过的两种用用法,另外配上有一个兄弟发的自己做的定时执行批处理文件工具,就更完美了。技术共享。。。

TAG:

引用 删除 gjtang   /   2010-11-04 15:39:12
好贴
引用 删除 gjtang   /   2010-11-04 15:39:02
5
 

评分:0

我来说两句

Open Toolbar