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 的立场、策略和观点。