對于測試用例,可以將其保存在 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 的日志來分析問題。建立日志目錄的腳本如下: