改进 Rational Functional Tester 启动应用程序的过程(3)

发表于:2011-12-08来源:未知作者:领测软件测试网采编点击数: 标签:rational
runCommand 函数用于执行传递的命令,execApp 函数通过参数获得应用程序路径,然后调用 runCommand 函数来启动应用程序。 接着就可以更新 testMain 函数,使用

  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.ltesting.net