RFT(Rational Functional Test)是IBM开发的一套自动化测试工具,可以测试web, GUI和console。

自动化测试工具有QTP, RFT等,下面就介绍下用RFT测试Flex (SDK version: 2.0.1)的步骤:

RFT(Rational Functional Test)是IBM开发的一套自动化测试工具,可以测试web, GUI和console。

前提条件:

1. Flex SDK installed
2. RFT installed
3. jdk installed
4. flex automation support available

   如果没有装Flex automation软件,可以下载包含下面两个文件的附件
   automation_agent.swc
   automation_agent_rb.swc


准备工作:

1. 复制automation_agent.swc 到 /Flex SDK 2/frameworks/libs 目录下

2. 复制automation_agent_rb.swc 到 /frameworks/locale/en_US 目录下

3. 打开IE[Internet Options] - [Security] - [Local Intranet],

   点击[Custom Level],设置安全级别为[Medium-low],

   将[Initialize and script ActiveX controls not marked as safe for scripting]设置为Enabled
  

RFT测试Flex必须要准备Flex test automation runtime环境,两种方式:

1. 将Runtime的swf文件嵌套在html页面中,被测flex以参数传进去

a. 从RFT的安装目录里找到RuntimeLoader.mxml and RuntimeLoadingTest.html

b. 编译RuntimeLoader.mxml文件,加入runtime支持:

Cmd代码   收藏代码
  1. %FLEX_BUILDER_DIR%\bin\mxmlc.exe -include-libraries+="%FLEX_BUILDER_DIR%\frameworks\libs\automation.swc;%FLEX_BUILDER_DIR%\frameworks\libs\automation_agent.swc;%FLEX_BUILDER_DIR%\frameworks\libs\automation_charts.swc;%IBM_RATIONAL_RFT_INSTALL_DIR%\rft.swc;%IBM_RATIONAL_RFT_INSTALL_DIR%\rftProp.swc"; %1  

注:如果FLEX_BUILDER_DIR或IBM_RATIONAL_RFT_INSTALL_DIR没有设置到系统环境变量中,请替换成实际路径。

把上面这段代码复制并保存为flex_automation.bat文件中,然后运行命令

Cmd代码   收藏代码
  1. flex_automation.bat RuntimeLoader.mxml  


可以使用ant脚本:
Xml代码   收藏代码
  1. <target name="flexAutomation" depends="initProperties">  
  2.     <property name="FLEX_HOME" value="E:/Program Files/Flex_2"/>  
  3.     <property name="rftBinDir" value="C:\Program Files\IBM\SDP\FunctionalTester\bin" />  
  4.       
  5.     <for param="fileName">  
  6.         <path>  
  7.             <fileset dir="flex/src">  
  8.                 <include name="RuntimeLoader.mxml"/>  
  9.             fileset>  
  10.         path>  
  11.         <sequential>  
  12.             <mxmlc file="@{filename}" keep-generated-actionscript="true">  
  13.                 <source-path path-element="flex/locale"/>  
  14.                 <compiler.include-libraries dir="${FLEX_HOME}/frameworks/libs">    
  15.                     <include name="automation.swc"/>    
  16.                     <include name="automation_agent.swc"/>    
  17.                     <include name="automation_charts.swc"/>    
  18.                 compiler.include-libraries>    
  19.                 <compiler.include-libraries dir="flex/lib">  
  20.                     <include name="graphLayout.swc" />  
  21.                     <include name="unComponentToolbox.swc" />  
  22.                     <include name="PrimitiveIcons.swc" />  
  23.                 compiler.include-libraries>  
  24.                 <compiler.include-libraries dir="${rftBinDir}">    
  25.                     <include name="rft.swc"/>    
  26.                     <include name="rftProp.swc"/>    
  27.                 compiler.include-libraries>   
  28.             mxmlc>  
  29.         sequential>  
  30.     for>  
  31.     <copy todir="D:/" preservelastmodified="yes">  
  32.         <fileset dir="flex/src">  
  33.             <include name="RuntimeLoader.swf"/>  
  34.         fileset>  
  35.     copy>  
  36. target>  


c. 把生成的RuntimeLoader.swf、RuntimeLoadingTest.html和被测试flex文件(testApp.swf)一同拷贝到web容器目录下

d. 开启web服务,在url输入下面字符串:
   http://localhost/RuntimeLoadingTest.html?automationswfurl=testApp.swf

现在就可以用RFT去抓取Flex对象了。


2. 重新编译被测flex code, 加入Runtime支持

a. 和上面方法的b步骤一样,这里只要运行:

Cmd代码   收藏代码
  1. flex_automation.bat testApp.mxml  


b. 生成一个testApp.html文件,里面嵌套testApp.swf

Html代码   收藏代码
  1. ...  
  2.   
  3. <object id="myFlex" ... >  
  4.    <param name="movie" value="testApp.swf"/>  
  5.    ...  
  6.    <embed src="testApp.swf" ... >  
  7.    embed>  
  8. object>  
  9.      
  10. ...  



c. 把testApp.html和testApp.swf一起拷贝到web容器目录下

d. 开启web服务,在url中键入以下字符串:

引用

http://localhost:8080/testApp.htm


注意:

1. 准备工作3必须要做,IE的默认设置会阻止Flex automation runtime运行(因为没有标记为安全的)

2. 直接输入http://localhost:8080/testApp.swf是可以显示Flex的,但不能够被测试

3. 第一种方案是把识别Flex组件的swc编译到一个RuntimeLoader.swf中,被测试的swf不需要添加这些swc。
   第二种方案是把每个要测试的swf文件重新编译,加入支持的swc。
  
   在实际生产环境中,如果swf文件需要从其它地方接受数据,第二种方案比较合适,但也会造成swf文件增大,性能降低。

4. 这里的测试是基于Flex SDK 2.0.1的,如果是其他版本的,请搜索网上其它文档。
  • Flex.rar (75.9 KB)
  • 下载次数: 7

你可能感兴趣的:(RFT(Rational Functional Test)是IBM开发的一套自动化测试工具,可以测试web, GUI和console。)