背景:
很多性能测试工程师在进行性能测试执行时,都会出现工作时间的限制,特别是性能场景的执行,一般由于白天测试环境不稳定、需要进行功能测试。所以许多场景的执行需要放在晚上执行,而且需要一个一个的执行,这样作为性能测试工程师,就必须加班加点或者通宵进行场景执行。那么有没有一个工具或者好的方法实现一键式或者说是自动化的方式,使场景能够按照我们事先设置好的规则进行执行呢?
带着这个问题,查找了网上一些资料发现,这个是完全可以实现的;
wlrun.exe执行
我们先来介绍下loadrunner中场景执行的wlrun.exe命令:
1. 在dos命令下,进入到wlrun.exe目录中:
2. 执行wrrun.exe:
将弹出:
从上面的操作来看,直接通过dos命令是可以打开Controller的:
cd d:\ProgramFiles\HP\LoadRunner\bin
d:
wlrun.exe
3. 下面看下wlrun.exe命令相关参数说明表:
参数 | 参数描述 |
TestPath | 场景路径,例如:d:\Program Files\scenario\ scenario.lrs |
Run | 运行场景、将所有输出消息转存到res_dir\output.txt文件中,并关闭Controller |
InvokeAnalysis | 指示Loadrunner在场景终止时调用Analysis。如果没有指定该参数,Loadrunner将使用场景默认设置 |
ResultName | 完整结果路径。例如:“d:\result|res_01” |
ResultCleanName | 结果名。例如:“res01” |
ResultLocation | 结果目录。例如:“d:\result” |
4. 使用实例:
进入到lr结果目录中:
发现场景结果已经保存了,并且结果保存后,Controller自动关闭了;
以上就初步达到了自动执行的目的。
5. 完整的命令:
cd d:\ProgramFiles\HP\LoadRunner\bin
d:
wlrun –TestPath d:\lr场景\商品图片空间_搜索.lrs –ResultNamed:\lr结果\搜索01 –Run
以上说明用命令是可以对场景进行执行的。
Schtasks.exe执行
这个与Linux下的crontab命令类似
结合之前的wlrun命令:
schtasks /create /tn "test1" /tr D:\test\11.bat/sc once /st 14:55:40 /sd 2014/10/23 /ru SN\KFYFCS03 /rp Administrator90
执行完成后,在任务计划中增加了test1的执行任务:
其中的11.bat中命令是:
cd d:\Program Files\HP\LoadRunner\bin
d:
wlrun -TestPathd:\lr场景\商品图片空间_搜索.lrs -ResultName d:\lr结果\搜索01 –Run
schtasks 参数命令:
/SC 指定计划类型包括minute,hourly,daily,weekly,monthly,once onstart,onlogon,onidle
/tn 后面指定任务的名称;
/tr 后面指定任务运行的程序或命令;
/s 后面指定的远程计算机名称;
/u 后面指定用户账户;
/p 指定该用户账户对应的密码;
/ru 指定用户账户的权限运行任务;
/rp 指定用户账户的密码;
/mo 指定任务在其计划类型的运行频率,默认是1;
/d 指定周或月的几天
/m 指定某月或数月
/st 指定在一天的什么时候开始执行,格式:HH:MM:SS
/sd 指定任务计划开始的日期;
/ed 指定任务计划介绍的日期;对于onceonstart,onlogon,onidle计划无效;
当到14点55分40秒时,会运行D:\test\的11.bat任务计划;
即:
cd d:\ProgramFiles\HP\LoadRunner\bin
d:
wlrun –TestPath d:\lr场景\商品图片空间_搜索.lrs –ResultNamed:\lr结果\搜索01 –Run
这样就完全能够实现性能测试的自动化。
在上面的执行过程中,也需要我们规范脚本和场景的命名规范,从而使很好的区分各自的场景执行时间。
规范脚本和场景
为了规范后面的脚本,场景和能够后面实现性能测试执行的自动化,现在统一规定:
在远程机中统一创建:script, Scenario,bat,result四个文件夹。每个文件夹中统一按照版本/项目组格式命名:
比如:
1117版本中test项目中的test场景:
在script中:/script/1117/test/test
在Scenario中:/Scenario/1117/test/test_100.lrs (说明:场景中并发人数不同分别用下划线人数区别)
在bat中分为两个bat:场景bat:/bat/场景bat /1117/test/test_100.bat ,
执行计划bat:/bat/执行计划bat /1117/test/执行bat/test_100.bat;
其中test_100.bat中的命令是调用lrs命令:
cd d:\ProgramFiles\HP\LoadRunner\bin
d:
wlrun –TestPath d:\Scenario\1117\test\test_100.lrs –ResultNamed: result\1117\test\test_100 –Run
执行test_100.bat 中:
schtasks /create /tn "test1" /tr D: \bat\场景bat\1117\test\test_100.bat /sc once /st 14:55:40 /sd 2014/10/23 /ru SN\KFYFCS03/rp Administrator90
在result中目录: result/1117/test/test_100
注意事项:
1.执行test_100.bat中的执行命令主要是调用lrs命令,在/st和/sd后面的参数按照实际执行时间进行修改;
2. 场景bat中的–ResultName后面结果路径根据实际情况进行修改:比如分别要执行100并发和200并发时。
说明:
当上面的脚本和场景规范后,在后面执行场景时,就可以对bat中进行部分修改就能达到自动化的目的了:
场景脚本中:/bat/场景bat/1117/test/test_100.bat
cd d:\ProgramFiles\HP\LoadRunner\bin
d:
wlrun –TestPath d:\Scenario\1117\test\test_100.lrs–ResultName d: result\1117\test\test_100 –Run
执行脚本中:/bat/执行计划bat /1117/test/执行bat/test_100.bat
schtasks /create /tn "test1" /trD: \bat\场景bat \1117\test\test_100.bat /sc once/st14:55:40 /sd
2014/10/23 /ru SN\KFYFCS03 /rp Administrator90
只需要修改红色部分即可;
在执行时,直接进入到/bat/执行计划bat /中,双击执行bat就可以了;
在执行过程中还需要对后台服务器资源进行监控,也可以在Linux机器上进行nmon命令的任务计划执行:
Crontab –e进行设置
比如:想在晚上23点进行nmon执行(11月11日,周二):
可以:
Corntab –e:然后进行任务编辑
00 23 11 11 3 /home/loguser/nmon/nmon –ft –s1 –c 1 m /home/loguser/nmon