本文引入了一种使用 Rational
Functional Tester 来支持关键字驱动(Keyword-Driven)测试的开源架构 SAFS(Software
Automation Framework Support)。它覆盖了实现此方案所需要的一些不同的组件。
介绍
您已经拥有了IBM®Rational®Functional Tester。购买它用来实现"更加快速开发质量更好的软件"的范例。它使您能够做许多事情,如创建动态验证点,在记录的同时进行数据驱动测试,等等。但是,您发现您的测试自动化工程师和非技术测试人员和/或者业务分析师产生了脱节。非技术测试团队对Functional
Tester感到畏惧。他们宁愿停留在使用英文进行脚本的编写,而不愿使用Functional Tester的Java™
语言。所以您如何消除这两组人员之见的脱节问题呢? 何不尝试实现一个关键字驱动的自动化体系架构,比如SAFS。
软件自动化框架支持(Software Automation Framework Support,或者SAFS),起初是一个开源架构,由SAS研究所的Carl
Nagle开发。最早它被设计用来作为实现关键字驱动测试的一个待定工具框架。这就意味着SAFS可以在多种测试自动化工具中使用同样的关键字文件。这是通过让在下层的
SAFSDRIVER(SAFS如何执行)命令调用不同的"工具引擎"来实现的。其中一个引擎用于Rational
Functional Tester,它可以使非技术测试人员开发自动化的测试。现在,自动化测试可以覆盖整个测试团队--不仅仅局限在只有测试自动化工程师才可以完成。
实现
将SAFS应用在Functional Tester环境中并不是一件很困难的事情。实际上,您会发现它把需要书写的Java代码减少到了最低程度。它的安装包括了以下高层的步骤:
- 安装SAFS(框架的本身)
- 安装STAF(用于实现工具独立服务的软件测试自动化框架,比如写日志)
- 设置已存在的项目(包括一些目录更改以及安装java/class文件)
一旦安装和配置工作完成,测试的开发将会包括以下表文件:
- .MAP 文件
- Step Table (.SDD) 文件
- Suite Table (.STD) 文件
- Cycle Table (.CDD) 文件
- safstid.ini 文件
MAP文件将Functional Tester对象(例如classicsJava, tree2,
placeOrder,等等)和对您的团队有意义的日常关键字(例如ClassicsMainWin,ComposerTree,PlaceOrderButton,等等)关联在一起。它还可以让您指定应用程序的常量,比如输入文本(例如
composer="Haydn")。以下的例子描述了MAP文件的样子。
图1. MAP文件
Step Table (.SDD)文件是一些“固定的”步骤,用来告诉Functional Tester该做些什么。每一行都表示一个指令。例如,以下行
…
T,ClassicsMainwin,PlaceOrderButton,Click
…指示Functional Tester点击在ClassicsMainWin上发现的PlaceOrderButton。Functional
Tester参照MAP文件中的PlaceOrderButton和ClassicsMainWin关键字,并Functional Tester知道需要点击的对象叫作
placeOrder ,并且这个对象能够在基于classicsJava的窗口上被找到。下图显示了执行测试用例的SDD文件的片断。
图2. 执行测试用例
Suite Table (.STD) 文件是一个中间媒介文件,它可以用于把多个SDD文件组织在一起。这些文件可以用在许多事情上,比如测试一个包含多个输入的用例。这个功能与Functional
Tester中的shell脚本概念有些相似。下图展示了一个调用3个独立SDD文件的STD文件。
图3. 调用三个独立的SDD文件
Cycle Table (.CDD)文件是更高层的文件,它用于调用多SDD文件并且设置一定的元数据。例如,一个CDD文件可以被用于调用所有描述系统级测试的SDD文件。STD文件通过调用相应的SDD文件可以管理应用程序不同部分(组件,用例,功能的主要区域,等等)的回归测试。CDD文件可以通过调用必要的STD文件管理整个应用程序的回归测试。下图阐述了一些元数据的设置(例如测试版本,什么应用映射被使用,等等)同时调用了一个
Suite Table 文件。
图4. 设置元数据并且调用一个 Suite Table 文件
最后,safstid.ini文件是配置SAFSDRIVER执行的方法。它可以告知SAFS使用哪些测试自动化工具,在哪里可以找到我们的项目目录
(包含了我们的表格文件),我们想要获得什么样的日志,以及如何自动启动。下图阐述了 Rational Functional Tester
Engine 的配置。
图5. Rational Functional Tester Engine 配置
结论
总的来说,引入了一个关键字驱动体系架构,比如像SAFS,可以极大地提高您测试团队的生产力。然而,就如同自动化本身一样,它不是万能的。在实现这个框架,开发最佳实践,开发必需的表、映射以及配置文件等时仍然会存在许多问题。此外,您还需要计算成本/收益,以分析哪些地方应该采用自动化,而哪些地方则不必采用。 |