如果在 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
文章来源于领测软件测试网 https://www.ltesting.net/