如果在 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.anti-gravitydesign.com/