一种高效的对象缓存机制在测试框架中的应用

发表于:2011-02-10来源:作者:点击数: 标签:
一种高效的对象缓存机制在 测试框架 中的应用 软件测试 如果在 IBM Rational Functional Tester (RFT) 项目中完全使用动态搜索的方式获得对象,那么有可能你将面临严重的 性能 问题,尤其是当你需要测试的应用中对象层次十分多而复杂时,比如 Microsoft Offi

  一种高效的对象缓存机制在测试框架中的应用  软件测试

  如果在 IBM Rational Functional Tester(RFT) 项目中完全使用动态搜索的方式获得对象,那么有可能你将面临严重的性能问题,尤其是当你需要测试的应用中对象层次十分多而复杂时,比如 Microsoft Office 软件。Object Map 是一种选择,可 Object Map 常常不能满足你的要求,比如 ObjectMap 经常需要跟随测试的应用改变而更新,而且有很多对象无法使用 Object Map 获取等等。本文提供一种高效的对象缓存机制,不但可以对已经获取的对象进行有效的缓存,快速的提取,还可以在对象层次复杂时,极大的改善动态搜索对象的性能。

  使用 RFT 进行 GUI 测试自动化

  自动测试解决了传统手工测试中的很多问题,把测试人员从繁重而重复的测试工作中解脱出来,节省了很多人工时间。RFT 是一种非常有效,使用方便的测试自动化工具,在很多项目中得到应用。用户可以选择使用 RFT 进行录制播放的方法来进行自动化测试,也可以选择编写测试框架,并在框架的基础上编写脚本的方式实现。前者的缺点很明显,就是在测试的应用发生变化时需要重新进行录制,而当变更涉及到很多 case 时,这将带来很大的工作量,这也许比手工测试花费的时间还长。所以除非能避免这个问题,所有的项目都采用后者。在我们的项目中也是如此

  Object Map

  在 GUI 测试中,RFT 提供了两种获取对象的方法,一种是通过 ObjectMap,由 RFT 对需要测试的对象进行识别,用户可以根据需要选择把哪个对象引入测试脚本,RFT 自动生成 getter 方法供使用者调用。RFT 提供的录制播放功能也是采用 ObjectMap 来实现对象获取。此方法的优点是用户不用关心对象获取的细节。然而缺点与使用录制播放的方式类似,就是当测试的应用界面结构变化时,用户经常需要重新更新 ObjectMap,尽管 RFT 有搜索权重机制,一些微小的变化不会导致更新。而且用户经常会遇到无法使用 ObjectMap 获取的对象。

  有很多关于如何使用 ObjectMap 的文章和资源,这里只给出一个简单的例子。

  Microsoft word 2007 是一个非常适合做例子的应用。测试步骤共两步:

  打开 word 2007;

  在菜单栏中点击”View”,再点击”Home”。

  图 1. “View”和“Home”在 word 2007 的 ObjectMap 结构中的位置

  在 RFT 中新建一个脚本叫做”ObjectMap.java”,在自动生成的代码中,这个类继承自“ObjectMapHelper.java”。然后把“View”和“Home”两个对象插入到这个脚本中。RFT 会自动为这两个对象生成 get 方法,并插入到 ObjectMapHelper.java 中。

  图2. ObjectMapHelper.java

原文转自:http://www.ltesting.net