runCommand 函數用于執行傳遞的命令,execApp 函數通過參數獲得應用程序路徑,然后調用 runCommand 函數來啟動應用程序。
接著就可以更新 testMain 函數,使用 execApp 函數代替 startApp 。如清單 5 。
清單 5. testMain 函數
public void testMain(Object[] args) { // 啟動應用程序 execApp(sAPPPath); ...... } |
傳遞給 execApp 的變量可以通過讀取配置文件獲得應用程序路徑。下面添加讀取配置文件代碼和相關變量。如清單 6 。
清單 6. 讀取配置文件代碼
// 配配置文件 public static String sFileLocation="C:\\workspace\\Project1\\conf.properties"; // 應應用程序路徑變量 public static String sDBAPPPath; // 讀讀取配置文件 public static String getPropertyFromFile(String sKey, String fileName){ Properties prop = new Properties(); File file = new File(fileName); FileInputStream fis=null; String sPropVal = ""; try{ fis= new FileInputStream(file); prop.load(fis); sPropVal = prop.getProperty(sKey); fis.close(); }catch(Exception e) { e.printStackTrace(); } return sPropVal; } |
getPropertyFromFile 函數根據配置文件里的鍵值對返回相應的值。配置文件 conf.properties 里添加鍵值對為 AppLocation = < 應應用程序路徑 > 。對于本文的測試場景,< 應應用程序路徑 > 就就是 Lotus Connections 2.0 安裝程序在本機上的文件路徑,如 C :\Build\LC2.0_20080427\install.bat 。
然后給 sAPPPath 變變量賦予 getPropertyFromFile 的返回值,將其傳遞給 execApp 。如清單 7 。
清單 7. 更新后的 testMain 函數
public void testMain(Object[] args) { // 讀讀取配置文件里的路徑 sAPPPath=getPropertyFromFile("AppLocation",sFileLocation); // 啟動應用程序 execApp(sDBAPPPath); |
...... } |
同時,為了使命令行調用腳本更方便,我們可以將應用程序路徑做為命令行的一個參數傳遞。
進一步修改 testMain,使之既可以讀取配置文件獲得應用程序路徑,也可以通過命令行來獲取。如清單 8 。
清單 8. 添加 testMain 獲取命令行參數代碼
public void testMain(Object[] args) { if(args.length > 0 && args.length == 1){ // 通過命令行方式讀取應用程序路徑 sDBAPPPath = args[0].toString(); System.out.println("Read App Info with command"); }else{ // 通過配置文件方式讀取應用程序路徑 sDBAPPPath=getPropertyFromFile("AppLocation",sFileLocation); System.out.println("Read App Info with properties"); } // 啟動應用程序 execApp(sDBAPPPath); ...... } |
如此,就可以在命令行中加上應用程序路徑參數。當需要測試新 build 時候,通過改變此參數,可以使調用更靈活。如清單 9 。
清單 9. 傳遞參數的 RFT 命令行代碼
"C:\Program Files\IBM\SDP70\jdk\bin\java" -classpath
"C:\Program Files\IBM\SDP70\FunctionalTester\bin\rational_ft.jar"
com.rational.test.ft.rational_ft
-datastore "C:\workspace\Project1"
-playback testcases.install.Script1<App location>
|
總結
通過以上的做法,解決了現實應用中出現的問題:
當有新 build 需要測試的時候,用戶只需要在配置文件里改變一下路徑,就完成了配置過程。不需要重新打開 RFT 的配置應用程序窗口進行配置。
當需要自動化測試的時候,用戶可以使用命令行方式來調用測試腳本,并且在命令行里傳遞新 build 的路徑信息。除了可以采用計劃任務來觸發 RFT 命令行外,也可以使用 STAF (Software Testing Automation Framework) 來實現 RFT 的自動化框架。關于自動化測試框架實現的話題超出了本文的討論范圍。但是這一切得以實現來源于本文所討論的改進 RFT 啟動應用程序的過程。
免責聲明
本文僅代表本人觀點,并非代表 IBM 的立場、策略和觀點。
原文轉自:http://www.anti-gravitydesign.com