利用 Rational Functional Tester 实现 ITCL (或者 IBM) 框架
IBM 框架以前被称作为 ITCL 框架,由质量软件工程(Quality Software Engineering) 和 IBM 中有经验的自动化团队合作开发而成的。这个框架由三层架构组成,架构的实现贯穿了应用对象、任务和测试用例包(IBM 包)。
潜在于应用对象、任务和测试用例包之下的基本原理是:
- 层次化的体系架构
- 将“做什么”与“如何做”分离开来
- 代码重用
- 一致和清晰的组织结构
- 快速增强的能力
- 迅速的调试
- 有效地组织文件
- 启用协作
- 学习他人
下面是对应用对象、任务和测试用例的解释说明:
- 应用对象:储存有关你的应用程序中的GUI元素信息。同时在这里也可以编写你的Getter 方法,这些 Getter 方法可以返回对象,使 调用者能够对这些GUI元素进行查询和操作。一般情况下,这些方法在Task层中进行调用。
- 任务:在这里你将编写可重用的方法,这些方法在你的应用程序中执行通用功能。同时在这里,你将编写可以处理和查询复杂的特定应用程序控件的方法。在任务中的方法可以被测试用例调用。
- 测试用例:导航一个应用程序,验证其状态,并记录其结果的方法。
|
在本章节中概述的方法论详细说明了实施IBM框架的5个步骤。
步骤1. 首先,在你的本地驱动器上创建一个新的项目。这个项目中有一个你可以储存、维护、编译和运行你的自动化代码的储存库。在Functional Tester中,选择File > New > Functional Test Project。给这个项目命名,并点击Finish。
步骤2. 将 IBM 的包― 它包括将在自动化脚本中广泛使用的工具类 ― 导入到你的项目中。尽管这可能只是简单地将路径关联到ibm.jar文件,但是将 IBM 的包导入到你的项目中就可以使你更容易地检查这个包的内容,然后在调试的时候进入到包中。这个IBM的包可以在这篇文章末尾的下载部分中进行下载。
- 在 IBM Rational Functional Tester中,进入屏幕左边的Projects视窗,点击在步骤1中创建的项目
- 选择File > Import。选择Zip file然后点击Next。使用Browse按钮在你储存这个文件的指定位置上查找ibm.jar 或者ibm.zip 文件。
- 保留所有默认设置并点击Finish。
- 你现在应该可以在Functional Test Projects视窗中扩展你项目的名称。你可以在它下面看到一个名为ibm的文件夹。
步骤3. 创建一个名为AppObject的包
- 在IBM Rational Functional Tester中,进入屏幕左边的Projects视窗,在步骤1中创建的项目上点击。
- 选择File > New > New Test Folder。
- 给文件夹命名为AppObject。
- 点击Finish。
- 重复1-4的步骤,创建Tasks和TestCase文件夹
什么是 AppObject 包?
在这个包中你必须映射所有被测试应用的对象。一个最常见的建议是为每一个屏幕准备单独的脚本,以此确保更好的对象以及分类的的重用和组织。比如,创建一个名为login的脚本,它将使所有的对象跟login界面保持相关。你同样可以创建其它与sent,inbox 界面等等相关的脚本。
- 在 AppObject 包中建立一个空脚本
- 选择 AppObject 包,点击右键并选择 Add Empty scrīpt,如图1所示。
图1. 添加一个空脚本
- 将其命名为Login,并点击Finish
- 从脚本资源管理器中双击Private Object Map。
- 确保 mail.yahoo.com site 网站(或者被测试应用)是打开的。
- 从 Private Object 图中,点击Test Object > Insert Object(s),如图2所示。
图2. 插入一个测试对象
- 将指针图标工具从下面的对话框拖到你想映射的目标位置,如图3和图4所示。
图3. 通过拖拽选择一个对象
图4. 选择的对象
- 点击Finish。
- 你的Private Object Map窗口应该看起来如图5所示。
图5. 已完成的 Private Object Map
- 选择你最近添加的对象,点击右键并选择Add to scrīpt AppObject.Login。
- 对所有你想要添加到这个脚本的对象重复6-10的步骤。
- 点击File > Save并关闭它。你的脚本资源管理器应该看起来如图6所示。
图6.Login的脚本资源管理器
- 类似地,你可以尽可能创建更多的脚本到你的项目中,并添加相关的对象。
一旦你将你的对象添加到你的对象地图中,就可以通过编写几行代码自动产生你的getter 方法。这些getter 方法将帮助你访问跨越或在项目中被添加的脚本中的对象。你将在AppObject文件夹中创建一个空的脚本,编写如列表1中所示的代码来自动产生getter方法
- 在AppObject文件夹中创建一个名叫getter的空脚本文件。
- 创建列表1中的代码。
列表1.自动生getter的代码
//IMPORT THESE 2 STATEMENTS AT THE TOP OF scrīpt import java.util.Vector; import ibm.tools.ClassGenerator; //WRITE DOWN THE BELOW CODE IN TESTMAIN FUNCTION public void testMain(Object[] args) { Vector v = new Vector(); v.addElement (new AppObject.Login ()); //ADD ELEMENT FOR ALL THE scrīptS YOU HAVE IN YOUR AppObject new ClassGenerator().updatescrīpts(v); } |
- 你的Getter脚本内容看起来应该如图7所示。
图7. Getter 脚本
- 选择scrīpt > Run来运行这个脚本。
- 运行一次以后,当你点击你的Login脚本时,它将查询你是否要装载这些变更。
- 点击Yes,你应该可以看到你的Login脚本已经有了Getter功能,如图8所示。
图8. 用 Getter 脚本登陆系统的功能
步骤4. 创建任务
任务是你可以编写最大限度重用和最复杂代码的位置。
- 首先在Tasks文件夹中创建一个脚本(跟前面的AppObject Folder操作一样)
- 选择Tasks文件夹,右键点击它并选择Add Empty scrīpt。
- 指定详细的名称并点击Finish。
- 将列表2中的代码插入到脚本中。
列表2. 登陆任务
//DECLARE THE OBJECT OF THE scrīptS EXIST IN APPOBJECT public AppObject.Login lgn = new AppObject.Login(); …. …. public AppObject.Login lgn = new AppObject.Login(); public void AssignLoginInfo() { lgn.getText_login().setText("abc"); lgn.getText_passwd().setText("New1"); } public void testMain(Object[] args) { } |
- 你的脚本内容应当看起来如图9所示。
图9. 修正脚本内容
- 你可以在同一个脚本或者新的脚本中根据每个应用程序的需要随意增加各种功能。
接下来,你将使这些功能实现自动化
步骤5. 创建测试用例
在测试用例中,你可以编写现有的步骤来完成这些行为,这将继承一些 Tasks 和 Appobject的属性特征。
- 首先在Tasks文件夹中创建一个脚本(跟前面的AppObject Folder操作一样)
- 选择Tasks文件夹,右键点击它并选择Add Empty scrīpt。
- 指定详细的名称并点击Finish。
- 将列表3中的代码插入到脚本中。
列表3. 测试用例
//DECLARE THE OBJECT OF THE scrīptS EXIST IN TASKS //OBJECT CREATION OF TASKS LOGINTASK scrīpt public Tasks.LoginTask lt = new Tasks.LoginTask(); …. …. public void testMain(Object[] args) { //INVOKING THE BROWSER startBrowser("mail.yahoo.com"); //ASSIGNED THE USER NAME AND LOGIN INFO lt.AssignLoginInfo(); //CLICKED ON LOGIN/SUBMIT BUTTON lt.lgn.getButton_signInsubmit().click(); //FURTHER ACTION CAN BE WRITTEN ACCORDIUNLGY } |
- 你的脚本内容看起来应当如图10所示
图10. 最后的脚本
- 现在运行这个脚本,打开浏览器,输入用户名和密码,然后登陆到Yahoo帐户