l 首先要解决脚本使用命令行启动的问题。由于QTP本身不支持带命令的运行方式。所以要找其他方法。
主要有两种方法可以供参考,
一种是些VBS脚本,利用QTP开放的dll组件调用脚本。
一种是利用现有的QTP执行管理工具MTM(Multi Test Manager)来实现,MTM本身支持命令行启动QTP;并有较好的多用例管理功能。
采用VBS脚本编写比较灵活,但是开发成本高,失败风险高,考虑到项目比较紧张,所以我采用第二种方式
工具安装及配置过程略去,需要注意的是在MTM调用QTP脚本是,需要先启动QTP是MTM版本和QTP版本匹配的bug。关注脚本中Start的方法
脚本如下:
@echo off
Start QTPro.exe
ping /n 20 127.1>nul
Start MultiTestManager.exe /T "C:/Program Files/HP/QuickTest Professional/Tests/QQStart" /CLOSE /CLOSE_MTM /LOG /SUMMARY
为了便于后面调度把脚本存于D:/runbat/TestCase1.bat
#MultiTestManager /NOUI /TB "D:/mytestmtm.mtm"
l 解决完脚本问题之后需要解决远程重启及操作系统问题
由于测试项目需要每做一个测试用例就需要重启机器,再进入测试。所以需要解决远程重启的问题,同时需要机器去除登录过程。
幸好shutdown提供了远程控制的命令如下:
start shutdown.exe -m 10.1.151.31 -r -t 0
去除计算机登录过程,需要修改注册表,详细过程如下链接
http://weiqijun.blog.51cto.com/338163/123922
l 在完成上述两个准备之后,就要解决远程调度的问题了。
按照之前我做过的项目都是采用在执行端做个agent监听工具,然后控制端发命令给agent让它来调度测试脚本的。但是这次我想改变一下思路。
为此我开始采用ssh方法来解决问题。通过Cygwin+openssh来实现远程发送执行脚本命令。
结果发现这种方法对于执行gui的应用程序无效,无法调度。实验宣告失败,耗时2.5个小时。为此只好采用老的方法,开发了一个发送端程序(Client),和一个监听和调度程序
(Server)。通过Server来调度D:/runbat/TestCase1.bat。
l 其他
发送端脚本如下
start shutdown.exe -m 10.1.151.31 -r -t 0
ping /n 300 127.1>nul #等待机器重启的时间
start client 10.1.151.31 TestCase1 #TestCase1表示要执行的测试用例
同时需要将Server程序放到执行机器的启动项里边。
目前未解决的问题:
执行方没有将执行情况告知发送端。发送端不知道何时结束,所以只能根据经验来设置用例之间间隔时间。
补充关于远程重启机器
1、单击“开始”按钮,选择“运行”,在对话框中输入“gpedit.msc”,然后单击“确定”,打开“组策略编辑器”。
2、在“组策略”窗口的左窗格中打开“计算机配置”—“Windows 设置”—“安全设置”—“本地策略”—“用户权利指派”。
3、在“组策略”窗口的右窗格中选择“Force shutdown from a remote system (从远端系统强制关机)”,双击。
4、在弹出的对话框中显示目前只有“Administrators”组的成员才有权从远程关机;单击对话框下方的“添加用户或组”按钮,然后在新弹出的对话框中输入“guest”,再单击“确定”。
5、这时在“从远端系统强制关机”的属性中便添加了一个“guest”用户,单击“确定”即可。
6、关闭“组策略”窗中。
通过上述操作后,我们便给计算机netproxy的guest用户授予了远程关机的权限。以后,我们要远程关闭计算机netproxy,只要在网络中其他装有Windows XP 的电脑中输入以下命令即可:
shutdown -s –m //netproxy -t 30 (其他参数用法同上)
7.关闭对象(机器)必须开启guest用户