对于测试用例,可以将其保存在 VM 镜像中,随镜像的启动自动部署,也可以使用 STAF 的 File System 服务自动下载。原理相同,不再赘述。
回页首
使用 python 管理测试信息
Python 是一种功能强大的编程语言。Python 简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
STAF 的执行引擎 STAX 就是基于 Python 实现变量和表达式的处理。也就是说除了 STAX 语言之外,用户也可以使用任何的 Python 库。这种特性极大地丰富了 STAX 的功能,给用户带来了方便。
通常来说,总是由一组测试用例来测试软件的一个功能,我们把这一组用例叫做一个 Bucket 并用一个与之同名的 Python 文件管理所有的信息。格式如下:
清单 3. Bucket 的 Python 文件格式
## Comment: Enter the bucket name here bucketName='bucket1' ## Comment: Enter the owner of the bucket, Your short internet email address owner='Susan' ………… ………… #List of testcases need to run bucket=[ 'com.xxx.testcase1', 'com.xxx.testcase2', 'com.xxx.testcase3', ] |
一次回归测试一般都需要执行很多的 Bucket,而每个 Bucket 的 Python 文件不能完全记录每个 Bucket 的执行条件和场景,所以我们新建了一个 Python 文件来集中记录所有 Bucket 的执行场景以及 STAX 引擎所要用到的变量和表达式,暂命名为 RegInfo.py。这个文件方便与集中管理每个 Bucket 的信息,有利于维护和查找。其格式如下:
清单 4.RegInfo.py
staxMonitor = 'reg1.XXX.com' mailServer = 'reg1.XXX.com' clientMachine = 'reg1.XXX.com' scenario = 'Reg_01A' release = 'releaseMain' workSpaceHome = 'c:/fvt/regression' UtilLoc = 'c:/StaxUtil.xml' importDataPath = 'c:/fvt/data' port = '4444' user = 'ntUser' Password = 'ntPwd' directoryDuration = '90s' compileDuration = '5m' testDuration = '60m' classpath = '%s;%s/classes;%s/lib'%(workSpaceHome,workSpaceHome, workSpaceHome) java142 = 'c:\\Java142\\bin\\' java150 = 'c:\\Java50\\bin\\' java160 = 'c:\\Java60\\bin\\' javaVer = java160 NTV8 = 'NTUWV8' NTV9 = 'NTUWV9' NTV95 = 'NTUWV95' emailList = [ 'yruicdl@cn', 'zhilei@cn' ] BucketList = [ ['bucket1',NTV8ONLY,javaVer,JCCALL], ['bucket2',NT9ABOVE, javaVer,JCCALL,'xmldb'], ['bucket3',NT95ABOVE, javadecFP,JCC3MABOVE,'sample'], ] serverList = [ ['reg1.XXX.com', NTV8 ], ['reg2.XXX.com', NTV9 ], ['reg3.XXX.com', NTV95 ], ] |
在下一节中会详细介绍 STAX 引擎是如何使用这些信息来自动执行测试用例的。
使用 STAF/STAX 自动执行测试
STAX 提供一种基于 XML 的,专为自动化而设计的编程语言。STAX 执行引擎以这个 XML 为输入来管理引擎的行为和任务的执行。所有的 STAF 服务都可以被 STAX 任务所调用。
我们建立一个 XML 文件作为执行回归测试的 STAX 任务,命名为 RegExec.xml。首先 RegExec 需要载入 RegInfo.py 从而读入所需要的信息。脚本如下:
清单 5. 在 STAX 任务中载入 Python 文件
<block name='"Regression Test -- Validating T%s driver"%(driverType)'> <sequence> <!-- Get Global Variables Step 1--> <script> import sys try: sys.path.index('c:/stax/var') except: sys.path.append('c:/stax/var') import RegInfo as reg_type reload(reg_type) </script> <import machine="reg_type.clientMachine" file="reg_type.UtilLoc" /> <script> debug = 1 # Set to 0 (no debug) or 1 (debug) dirTimerDuration = reg_type.directoryDuration compileTimerDuration = reg_type.compileDuration </script> ………… ………… |
在载入回归测试需要的信息之后,STAX 引擎将真正开始执行回归测试。测试的第一步是在测试机上为每个 Bucket 建立一个存放日志的目录,以便测试人员方便的找到每个 Bucket 的日志来分析问题。建立日志目录的脚本如下: