论文部分内容阅读
[摘要]介绍Flex的事件流的框架及其对自动化的支持,自动化测试工具与Flex源码的交互机制,从Flex自动化支持、流程、维护三方面框架提出Flex自动化工程的重要因素。
[关键词]AdobeFlex自动化框架测试SilkTest
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1120059-01
任何长期的软件项目的测试工作最终都会进入自动测试阶段。软件开发的过程中在不断的更新旧的功能增加新的功能,在此基础上必须保证不影响原有的正常功能。自动化测试的引入使测试人员从繁重而枯燥的工作中解放出来,同时还能保证精确性。
随着Adobe Flex编程技术的流行,基于Flex的软件项目应运而生。然而,其美观的界面却相应带来了测试的复杂性,它不同于数据驱动测试只顾输入输出,也不同于事件驱动测试只关注行为与结果,Flex产品与Flash一样可作出动态的美丽的外观效果,在事件处理上也及其复杂,这对测试带来一些极大的挑战。本文将介绍基于Flex的自动化测试框架。
一、自动化测试框架
首先让我们看一下自动化测试框架,如图1:基于自动化测试工具的测试过程不外乎三步:自动化测试初始化;自动化录制;自动化回放。即测试工具能够识别Flex的控件,通过录制用户的操作步骤模拟用户操作,生成测试脚本,回放录制的步骤,检测结果,以达到自动化测试的效果。
二、Flex与测试工具交互框架
然而自动化测试工具如何能够识别用户各种操作并进行模拟呢?让我们再来看一下Flex事件流框架(如图2):
Stage相当于树的根部为枝叶输送养份而服务的,一个事件的触发必须首先通过这个平台进入,在对象的显示列表中找到基类,再顺延找到子类,在相应的地方去实现一个事件的处理程序。所有的显示对象都有一个Stage的属性用于指向应用平台。每当事件触发时,都会经历从Stage到目标节点再从目标节点返回Stage的过程:抓获阶段,这个过程会抓获在Stage上的所有节点的父节点;目标阶段,查找到目标子节点;浮出阶段,将查获的子节点通过其父节点返回至Stage平台上。
自动化测试工具对Flex事件的支持便是按照其事件流处理框架的标准来实现的,首先必须能够找到所谓的Stage,然后识别Stage上的所有对象,进而找到那个唯一的子对象去获得它的属性及事件处理方法,自动化测试工具通过记录用户UI上的操作然后触发事件流达到自动化操作的过程,再由用户添加检查点以达到测试的目的。因而,测试工具要模拟用户操作必须要求能够识别对象,而且用户操作的事件流也必须按照如上图所示的事件流来操作,即必须通过一个Stage平台到Flex对象。
Flex在技术上又是如何与自动化测试工具交互的呢?为了支持Flex的自动化,Flex特提供了一个重要的包,即Adobe Flex自动化包(mx。automation。*):这个包为开发者创建Flex测试案例提供了自动化编程的接口。此包包含了:自动化库-automation。swc与automation_agent。swc这两个库用于帮助实现Flex框架的组件的派生类。Automation_agent。swc文件以及与其相关的包提供普遍的代理机制。代理,如SilkTest代理,是建立在这些库之上的。有了这些支持才便于测试工具去模拟Flex处理机制。而对于自动化工具本身也提供了支持Flex的接口,以达到自动化工具与Flex的通信与交互。如SilkTest也提供一个支持自动化的SDK,它是基于Flex自动化的API的。SDK以与Flex的AutomationAPI同样的方式为Flex组件提供自动化支持。SilkTest的开放代理(Open Agent)使用了Adobe的Flex自动化代理库。FlexTechDomain。swc文件即包含了SilkTest的具体实现实现方法。
Flex测试工程的准备工作与其它项目类似:开启支持Flex应用程序测试的接口;创建可测试的Flex应用程序;编译Flex容器(相当上面提到的Stage);使Flex事件与组件工具化(目的是为了使测试工具能够识别Flex对象,并模拟其事件处理程序)。
三、测试维护框架
为了提高自动化测试套件的可维护性,还需要采取一些措施。推荐采用测试脚本模块化框架。通过创建独立的脚本来代表被测试应用程序的模块、对象或函数,利用抽象和封装的原则将过程对象与源应用脱离开来,增强测试脚本的重用性,可维护性,降低由源代码的改变而带来的脚本大量的变动、失效。由此,才得以更为有效的提高自动化测试的效率与可用性。例如,SilkTest将一项工程分为四类文件来管理,即测试计划文件(.pln),由测试脚本与参数构成,类似于Function的一个实例,可用于分类管理测试案例;测试脚本文件(.t),可分类管理各类各个测试案例的过程描述;包含文件(.inc),可用于管理各种封装后的函数;配置文件(.ini)。这种规划管理一个复杂的工程项目得以有序清晰方便的进行管理。
四、结束语
由此,回顾整个过程,二个方面是我们在实现自动化测试的过程不可不关注的,它是自动化支持的瓶颈,是开启自动化的钥匙,即被测应用程序与测试工具的相互支持及测试脚本的有效维护。
参考文献:
[1]《Programming ActionScript 3.0》,2008 Adobe Systems Incorporated.
[2]《Borland SilkTest 2008 Help》,Borland Software Corporation.
[3]《Design,Automation and Test in Europe》,Nice Acropolis,France April 16-20,2007.
[关键词]AdobeFlex自动化框架测试SilkTest
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1120059-01
任何长期的软件项目的测试工作最终都会进入自动测试阶段。软件开发的过程中在不断的更新旧的功能增加新的功能,在此基础上必须保证不影响原有的正常功能。自动化测试的引入使测试人员从繁重而枯燥的工作中解放出来,同时还能保证精确性。
随着Adobe Flex编程技术的流行,基于Flex的软件项目应运而生。然而,其美观的界面却相应带来了测试的复杂性,它不同于数据驱动测试只顾输入输出,也不同于事件驱动测试只关注行为与结果,Flex产品与Flash一样可作出动态的美丽的外观效果,在事件处理上也及其复杂,这对测试带来一些极大的挑战。本文将介绍基于Flex的自动化测试框架。
一、自动化测试框架
首先让我们看一下自动化测试框架,如图1:基于自动化测试工具的测试过程不外乎三步:自动化测试初始化;自动化录制;自动化回放。即测试工具能够识别Flex的控件,通过录制用户的操作步骤模拟用户操作,生成测试脚本,回放录制的步骤,检测结果,以达到自动化测试的效果。
二、Flex与测试工具交互框架
然而自动化测试工具如何能够识别用户各种操作并进行模拟呢?让我们再来看一下Flex事件流框架(如图2):
Stage相当于树的根部为枝叶输送养份而服务的,一个事件的触发必须首先通过这个平台进入,在对象的显示列表中找到基类,再顺延找到子类,在相应的地方去实现一个事件的处理程序。所有的显示对象都有一个Stage的属性用于指向应用平台。每当事件触发时,都会经历从Stage到目标节点再从目标节点返回Stage的过程:抓获阶段,这个过程会抓获在Stage上的所有节点的父节点;目标阶段,查找到目标子节点;浮出阶段,将查获的子节点通过其父节点返回至Stage平台上。
自动化测试工具对Flex事件的支持便是按照其事件流处理框架的标准来实现的,首先必须能够找到所谓的Stage,然后识别Stage上的所有对象,进而找到那个唯一的子对象去获得它的属性及事件处理方法,自动化测试工具通过记录用户UI上的操作然后触发事件流达到自动化操作的过程,再由用户添加检查点以达到测试的目的。因而,测试工具要模拟用户操作必须要求能够识别对象,而且用户操作的事件流也必须按照如上图所示的事件流来操作,即必须通过一个Stage平台到Flex对象。
Flex在技术上又是如何与自动化测试工具交互的呢?为了支持Flex的自动化,Flex特提供了一个重要的包,即Adobe Flex自动化包(mx。automation。*):这个包为开发者创建Flex测试案例提供了自动化编程的接口。此包包含了:自动化库-automation。swc与automation_agent。swc这两个库用于帮助实现Flex框架的组件的派生类。Automation_agent。swc文件以及与其相关的包提供普遍的代理机制。代理,如SilkTest代理,是建立在这些库之上的。有了这些支持才便于测试工具去模拟Flex处理机制。而对于自动化工具本身也提供了支持Flex的接口,以达到自动化工具与Flex的通信与交互。如SilkTest也提供一个支持自动化的SDK,它是基于Flex自动化的API的。SDK以与Flex的AutomationAPI同样的方式为Flex组件提供自动化支持。SilkTest的开放代理(Open Agent)使用了Adobe的Flex自动化代理库。FlexTechDomain。swc文件即包含了SilkTest的具体实现实现方法。
Flex测试工程的准备工作与其它项目类似:开启支持Flex应用程序测试的接口;创建可测试的Flex应用程序;编译Flex容器(相当上面提到的Stage);使Flex事件与组件工具化(目的是为了使测试工具能够识别Flex对象,并模拟其事件处理程序)。
三、测试维护框架
为了提高自动化测试套件的可维护性,还需要采取一些措施。推荐采用测试脚本模块化框架。通过创建独立的脚本来代表被测试应用程序的模块、对象或函数,利用抽象和封装的原则将过程对象与源应用脱离开来,增强测试脚本的重用性,可维护性,降低由源代码的改变而带来的脚本大量的变动、失效。由此,才得以更为有效的提高自动化测试的效率与可用性。例如,SilkTest将一项工程分为四类文件来管理,即测试计划文件(.pln),由测试脚本与参数构成,类似于Function的一个实例,可用于分类管理测试案例;测试脚本文件(.t),可分类管理各类各个测试案例的过程描述;包含文件(.inc),可用于管理各种封装后的函数;配置文件(.ini)。这种规划管理一个复杂的工程项目得以有序清晰方便的进行管理。
四、结束语
由此,回顾整个过程,二个方面是我们在实现自动化测试的过程不可不关注的,它是自动化支持的瓶颈,是开启自动化的钥匙,即被测应用程序与测试工具的相互支持及测试脚本的有效维护。
参考文献:
[1]《Programming ActionScript 3.0》,2008 Adobe Systems Incorporated.
[2]《Borland SilkTest 2008 Help》,Borland Software Corporation.
[3]《Design,Automation and Test in Europe》,Nice Acropolis,France April 16-20,2007.