基于只使用一种捕获工具例如IBM Rational® Robot来录制并且回放测试用例而得出自动化测试工作量是有缺陷的。只使用一种捕获工具来运行复杂且巨大的测试是非常耗费时间和昂贵的。因为这些测试是随机创建的,他们的功能性是很难追踪和重现,而且维护成本也是非常昂贵的。
对于一个刚刚起步的自动化测试小组,更好的选择是使用一种测试自动化框架,它已经定义好了由一些假设,概念和制定工作平台或为自动化测试提供支持的实践组成的集合。在这篇文章中我试着将一些我熟悉的测试自动化框架-特别是测试脚本模块化,测试库构架,关键字驱动/表格驱动测试,数据驱动测试和混合的测试自动化。我并不会评价哪一个框架更好或更差,而只是提供了一些关于他们的描述和演示,所适用的地方和如何使用IBM Rational工具集实现的一些技巧。
测试脚本模块化框架(The Test Script Modularity Framework)
测试脚本模块化框架需要创建能够代表测试下应用程序(application-under-test)的模块,零件(Section)和函数的小的,独立的脚本。然后用一种分级的方式将这些小脚本组成更大的测试,实现一个特定的测试用例。
在我将提及的所有的框架中,这种框架应该是最容易精通且掌握的。就在一个部件前面构建一个抽象层以掩藏应用程序其他的部件方面,它是一个很著名的编程策略。它把应用程序从在部件的修改中隔离开来并规定了在应用程序设计中的模块性。为了提高自动化测试套件(test suite)的可维护性和可测量性,测试脚本模块化框架应用了抽象或封装的原则。
为了演示这种框架的应用,我以自动化Windows计算器程序中的测试其基本功能(加,减,乘和除)的一个简单测试用例(如图)为例。
脚本层次结构的最下层是独立的加减乘除的脚本。下面的第一个脚本是加法,第二个是减法。
然后在层次结构中下一级的两个脚本用来代表视图菜单中的标准视图和科学视图。就像下面的关于标准视图的脚本中表现的一样,这些脚本调用了我们在之前创建的脚本。
最后,在层次结构中最顶层的脚本应该是用来测试应用程序不同视图的测试用例。
从这个简单的例子中你可以了解到这种框架是如何产生高度的模块化并且增加测试套件的全面的可维护性。如果以后计算器上的某一个控制键被移动了,你所需要改变的只是底层调用这个控制键的脚本,而不是测试这个控制键的所有测试用例。
测试库构架框架(The Test Library Architecture Framework)
测试库构架框架和测试脚本模块化框架非常相似,有着同样的优势,但是它把测试下的应用程序分成过程和函数,而不是脚本。这种框架要求创建代表测试下应用程序模块,零件和函数的库文件(SQABasic libraries, APIs, DLLs等等)。然后这些库文件被测试用例脚本直接调用。
为了演示这种框架的应用,我将自动化同上的测试用例,但使用了一个SQABasic的库文件。这个库文件包括执行操作的一个函数。以下是头文件(header file (.sbh))和库文件(library source file (.sbl))。
使用这个库文件,产生以下测试用例脚本。
从这个例子中,你能够看到这种框架也产生了高度的模块化,同样增加了测试套件的全面可维护性。就像在测试脚本模块化一样里,如果计算器中的一个控制键移动了,你所要做的只是更改库文件,这样同时也更新了所有调用控制键的脚本。
关键字驱动或表驱动测试框架(The Keyword-Driven or Table-Driven Testing Framework)
关键字驱动和表格驱动测试是一种独立于应用程序的自动化框架,它们是可以互相替换的术语。这种框架要求开发于用来运行的自动化工具,驱动测试下应用程序和数据的测试脚本代码相独立的数据表和关键字。关键字驱动测试看上去非常象手工测试。在关键字测试里,应用程序的功能特性被写在表格和每个测试的详细指引里了。
如果要映射出手工测试Windows计算器功能过程中用鼠标执行的操作,我们可以创建如下的表格。” Window”一列包含了我们执行鼠标操作的应用程序窗口的名字(在这个例子中,他们都发生在计算器窗口里)。” Control”一列指出了鼠标点击的控制键的类型。” Action” 一列列出了鼠标的操作(或是测试人员的)。”Arguments”列指出了特定的控制键(1, 2, 3, 5, +, -等)
这个表格代表了一个完整的测试,为了表示一系列测试可以根据需要增加。一旦你创建了数据表,你就可以简单地编写用来读取每一个步骤的程序或脚本集,基于Action字段中的关键字执行步骤,完成错误检查,然后记录任何相关的信息。这种程序或脚本集看上去象下面的伪代码:
从这个例子里你可以看到为了生成许多的测试用例,这种框架只要求非常少的代码。用数据表生成不同的测试用例却可以重用相同的代码。IBM Rational工具集可以通过使用交互式的文件读取,查询或数据池延伸开来,或者你可以连同IBM Rational一起使用其他的工具(免费,其他的开发工具等)来构建这种类型的框架。
原文转自:http://www.uml.org.cn/Test/2008060510.asp