|
引用:魏可伟, IBM CSDL软件工程师
1.1 验证点的类型
RATIONAL FUNCTIONAL TESTER是RATIONAL最新推出的自动化功能测试工具。RFT具有数据驱动(DATA-DRIVEN)测试、SCRIPTASSURE等特性,因而受到广大功能测试人员的青睐。在RFT中,验证点是脚本(SCRIPT)中非常重要的组成部分,它完成对被测试程序生成的实际数据和期望数据的比较,并将比较结果写入日志。一般情况下,测试的结果是通过对验证点的执行而得到的。
RFT提供了多种形式的验证点,包括:
静态验证点(STATIC VERIFICATION POINT):静态验证点是在录制(RECORD)RFT脚本的过程中通过向导插入的验证点,它在脚本回放(PLAYBACK)的过程中自动被验证。
手动验证点(MANUAL VERIFICATION POINT):如果验证点所要验证的内容是由脚本开发人员在脚本中所提供的,则需要建立手动验证点对其进行验证。例如待验证数据来自外部数据源的情况,脚本开发人员需将数据读取后以参数的形式显式传给验证点。
动态验证点(DYNAMIC VERIFICATION POINT):动态验证点是在脚本首次回放时建立的。验证点一旦建立,其行为就和静态验证点相同了。
如果以录制-回放(RECORD-PLAYBACK)模式使用RFT进行图形界面(GUI)的自动化回归测试(REGRESSION TEST),较常用的是静态验证点。而由于RFT的数据驱动测试特性以及与其他RUP工具的良好集成,使之也是非图形化界面的功能测试的首选工具之一。在这些测试用例中,存在着大量的用户自定义类型对象,这些被测试对象并不能在录制过程中被插入对象映射表(OBJECTMAP)中,也就是不能使用静态验证点来进行验证,这就需要我们使用手动验证点来比较它们。
1.2 验证点执行过程
在RFT中,手动验证点有两种声明形式:
IFTVERIFICATIONPOINT VPMANUAL (JAVA.LANG.STRING VPNAME, JAVA.LANG.OBJECT ACTUAL)
该声明接受两个参数,第一个参数为验证点的名称,第二个参数为被测试对象。可以通过如下方式在脚本中调用该方法:
VPMANUAL("VP1", "THE OBJECT UNDER TEST").PERFORMTEST();
这条语句的作用就是判断被测试对象和基准线(BASELINE)是否一致。这里所说的基准线就是期望数据,它以XML格式被存储在磁盘上,后缀名RFTVP。
当回放脚本时,如果基准线所对应的文件已经在磁盘上存在,则RFT会比较被测试对象和基准线中的数据是否一致,如果一致,则测试结果为成功(PASS),否则为失败(FAILED);如果基准线尚不存在,则会以当前被测试对象作为基准线存入磁盘。
IFTVERIFICATIONPOINT VPMANUAL (JAVA.LANG.STRING VPNAME, JAVA.LANG.OBJECT EXPECTED, JAVA.LANG.OBJECT ACTUAL)
手动验证点的另一种声明接受三个参数,第一个参数为验证点的名称,第二个参数则为期望数据,第三个参数为实际数据,也就是被测试对象。可以通过如下方式在脚本中调用该方法:
VPMANUAL("VP1", "EXPECTED OBJECT", "THE OBJECT UNDER TEST").PERFORMTEST();
当脚本回放时,RFT直接比较期望数据和实际数据,并将比较的结果被写入日志。总的来说,验证点的执行过程如图1所示:
图1 验证点执行流程图
不难看出,在执行验证点的过程中,涉及到了将数据写入磁盘以及从磁盘中恢复数据的操作。将这些数据写入磁盘便于测试人员使用工具查看和编辑。但是这也带来了一个问题,对于开发者自定义类型的对象,哪些属性需要被写入磁盘,这些属性按照什么顺序写入都是类型相关的,需要脚本开发者自行定义。更重要的,如何比较自定义类型也是RFT所不能确定的,换句话说,脚本开发者需要告知RFT对象一致的标准。以上这两个任务都需要通过创建VALUEMANAGER来完成。
VALUEMANAGER可以用类特定(CLASS-SPECIFIC)的形式比较和持久化用户自定义的对象。它是IMANAGEVALUECLASS接口的实现。只有拥有自己的VALUEMANAGER的类型才能作为参数传递给VPMANUAL。这些类型被称为基于VALUE-CLASS的类型。 |
|