未来已来

Rational Robot的启动

上一篇 / 下一篇  2008-07-05 12:54:53 / 个人分类:自动化测试

 

 

          2004年发表在51Testing第一期杂志上的文章

 

 

作者:pcl

                                      

 

这篇文章是基于论坛上一个问题“如何让脚本定时运行”,提供的一个解决方案。我们都听说过自动化测试应用于每日构建,每天在下班之后编译版本,定时启动自动化测试脚本进行功能测试,第二天相关人员收到相应的报告。但是如何启动自动化测试工具呢,这里主要针对于Rational Robot的提供一种实现方法。

因为Rational Robot支持从命令行启动脚本,所以我们很容易在命令行中启动它。具体参考Rational Robot User’s Guide。基本的命令行语法结构如下:

Rtrobo.exe [scrīptname] [/user userid] [/password PassWrod] [/project Full - path- and – full - projectname] [/play] [/purify] [/quantify] [/coverage] [/build build] [/logfolder foldername] [/log logname] [/nolog] [/close]

 

元素

描述

Rtrobo.exe

Rational robot执行文件

scrīptname

要运行的脚本名称

/user userid

登陆用户名

/password password

登陆用户名密码,如果用户名没有密码,不用该参数

/Project full path and full projectname

包含脚本的工程名字和工程路径

/play

如果指定了关键字,运行scrīptname指定的脚本,如果没有指定,只是在编辑器中打开脚本

/purify

/play参数一起使用,在rational Purify下回放scrīptname参数指定的脚本

/quantify

/play参数一起使用,在rational quantify下回放scrīptname参数指定的脚本

/coverage

/play参数一起使用,在rational purecoverage下回放scrīptname参数指定的脚本

/build build

脚本编译名字

/logfolder foldername

存放测试日志文件的文件夹名称,日志文件夹和build参数相关联

/log logname

日志文件名称

/nolog

当脚本回放时不输出任何日志文件

/close

回放脚本后关闭robot

 

例:用户admin启动testProject工程脚本test,命令行语法如下:

rtrobo.exe test /user admin /project c:\Program\robot\testDelphi\testProject.rsp /play

  那如何定时启动呢,在Windows系统中有“任务计划”提供了定时启动功能,通过它可以预定一些软件在规定的时间运行。利用“任务计划”,可以将任何脚本、程序或文档安排在某个最方便的时间运行。“任务计划”在每次启动Windows的时候开始启动并在后台运行。那么我们完全可以利用它来完成“不可能的任务”。

 

在计划任务中添加任务那么就可以定时启动Rational robot运行脚本。操作如下:

1.开始-〉设置-〉控制面板

2.打开计划任务向导

3.添加启动任务,设置启动时间

4.修改计划任务运行中参数如下:

"c:\Program Files\Rational\Rational Test\rtrobo.exe" test /user admin /project c:\Program\robot\testDelphi\testProject.rsp /play

 

rational robot在预定时间定时启动了。问题得到解决。

   

  备注: 运行过程中仍需要设置相关参数,否则阻止运行。比如默认情况下,脚本运行都会启动编译窗口。这里除了命令行设置参数外还可以设置RobotGUI Playback Option窗体的log页面use default log information项。这样在无人职守的情况下,启动测试工具不会由于测试工具自身设置中止运行。

   但是实际工作需要更加灵活的功能,比如曾经笔者所在公司开发软件为组态监控软件,利用组态软件开发的一个项目是控制大厦的空调系统在夜里定时重新启动。进行功能测试时候,我们不可能真的等到夜里才进行测试(估计夜里上班公司也不会批准给加班费^_^),按照计划任务的实现方法有一定局限性不能随心所欲启动机器进行功能测试。

   熟悉windows编程的人都知道API函数ExitWindowsEx可以实现重新启动系统的功能(具体的用法参看MSDN)。这样只要调用ExitWindowEx函数重新启动系统后启动Rational Robot运行需要的脚本就可以达到任何时候启动系统继续进行功能测试的目的。

一般情况下登陆系统时需要输入登陆名和密码,如果不能自动登陆,那么就成为运行脚本进行测试的障碍。在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon位置添加DefaultDomainName,DefaultUserName,DefaultPassword三项,赋予相应的值。重新启动系统后自动登陆。

那么最后面对的一个问题就是怎样让robot随着系统而启动。这个相对来说比较简单,在系统开始启动菜单中建立一个快捷方式就可以实现随着系统启动的功能,其实就是在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加键值。附录提供笔者实现的robot脚本代码供大家参考。

Brian Bryson提供组件– RobotHelperComponent帮助我们实现利用Robot重新启动系统并启动Rational Robot运行脚本的功能。该组件下载地址为:http://www-106.ibm.com/developerworks/rational/library/content/03July/2000/2155/2155_RobotHelperComponent.zip关于该组件的介绍请看Brian BrysonRebooting Your System一文。该文地址http://www-106.ibm.com/developerworks/rational/library/959.html

 

本文到此告以结束,希望大家对于Rational Robot的启动问题有了一个满意的答案。

   

   

参考:

1.    microsoft msdn 2003

2.    Rational Robot User Guide

3.    Rational Robot Tips and Techniques: Rebooting Your System –作者Brian Bryson

 

 

附录:

 

Const REG_SZ=1

Global Const HKEY_LOCAL_MACHINE =H80000002

Declare Function RegOpenKey Lib“advapi32” Alias “RegOpenKeyA”(ByVal hkey As Long, ByVal lpszSubKey As String,phkResult As Long) As Long

 

Declare Function RegSetValueEx Lib “advapi32” Alias “RegSetValueExA” (ByVal hkey As Long,ByVal lpszValueName As String,ByVal dwReserved As Long,ByVal fdwType As Long, lpbData As Any,ByVal cbData As Long) As Long

 

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long        

 

Declare Function RegCloseKey Lib “advapi32” Alias “RegCloseKey” (ByVal hkey As Long) As Long

 

编写功能函数

 

Function oRegOpenKey (ByVal hkey As Long, ByVal lpszSubKey As String,phkResult As Long) As Boolean

 Dim lResult As Long

 On Error GoTo 0’错误跳转

 lResult=RegOpenKey(hkey,lpszSubKey,phkResult)

 If lResult=0 Then

  oRegOpenKey=True

 Else ōRegOpenKey=False

 End If

End Function

 

Function RegSetStringValue(ByVal hKey As Long, ByVal strValueName As String, ByVal strData As String, Optional ByVal fLog) As Boolean

Dim lResult As Long

   On Error GoTo 0

   lResult = RegSetValueEx(hKey, strValueName, 0&, REG_SZ, ByVal strData, LenB(StrConv(strData, vbFromUnicode)) + 1)

   If lResult = 0 Then

RegSetStringValue = True

   Else

       RegSetStringValue = False

End If

 

End Function

 

调用函数测试代码

SubMain

 

Dim hkey As Long

Dim MyReturn As Long

MyReturn=oRegOpenkey(HKEY_LOCAL_MACHINE,

SOFTWARE\Microsoft\Windows\CurrentVersion\Run”,hkey)

If hkey=0 Then

MsgBox“主键未创建或者输入有误,请仔细核对后再次运行本程序!”

Exit Sub

End If

MyReturn=RegSetStringValue(hkey, “robot”,“””路径/rtrobo.exe”” test /user admin /project c:\Program\robot\testDelphi\testProject.rsp /play”,False)

 

If MyReturn Then

MsgBox“您的程序已成功添加到系统启动中,再次启动Windows时系统将自动运行您的程序!”

Else

MsgBox“代码中存在错误”

End If

RegCloseKey(hkey)

 

End Sub

 

以上代码在Rational Robot 2002上测试通过。


TAG: 自动化测试

 

评分:0

我来说两句

Open Toolbar