button_search().click();
httpWwwLotusCom_textVP().performTest();
}
Java語言的腳本有很好的可讀性,稍有Java知識的人便能看懂這些操作的具體含義。
接下來我們試著回放這段腳本(注意:此時搜索結果頁面尚未關閉)。點擊工具欄上的按鈕"運行Functional Tester腳本",開始回放。
整個回放過程大約需要1分鐘,但回放日志中有2條警告信息:"對象識別較困難(在警告閾值以上)",并給出了識別分數和警告閾值。這是由于Rational Functional Tester所使用的ScriptAssure? 技術認為這兩次識別是弱識別,可能存在問題。下面我們來看看具體原因:
ScriptAssure技術給各個界面元素賦予了一定的權重,再綜合目標對象的各個屬性得出一個量化的特征值,便于在對象之間進行比較,因此可以大大提高腳本對頻繁變更的應用程序界面的彈性適應能力,ScriptAssure技術的原理并不難懂。打開腳本資源管理器中的對象"document_htmlDocument",可以看到這個對象在識別時,使用到3個屬性:".class",".title"和".url",權重各有不同。
權重用來標識這個屬性在識別過程中的重要程度,權重為100,表明這個屬性非常關鍵,必須和原值完全一致;權重為0,表明這個屬性是無關緊要的。識別分數就是在這些權重的基礎上進行一定的運算而得到的。識別對象時,如果有一個權重100的屬性值與原值不符,識別分數就要加上"權重×100",即10000分。在這個例子中,錄制時使用的是空白的IE頁面,而回放時使用的是錄制遺留下的搜索結果頁面,導致".title"和".url"這兩項屬性值不符,因此它的識別分數就是".title權重×100"再加上".url權重×100",一共是9000分+4000分=13000分,這就是警告信息里識別分數的由來。
至于警告信息里提到的"警告閾值",可以在Rational Functional Tester "首選項"的ScriptAssure高級選項里修改。缺省值是10000,表明有一個閾值為100的重要屬性不匹配。"警告閾值"越小,則意味著識別過程越嚴格。
對于這一例子而言,使用空白頁面和非空頁面對結果都沒有影響,只要操作對象是瀏覽器即可,因此我們可以把".title"和".url"這兩項屬性的權重設為0。修改之后,保存,再回放一次。同樣使用剛才的結果頁面,但在回放日志里不再有警告信息,而且回放過程也僅僅用了13秒,快速合格地完成了測試。
在錄制腳本中,除了有錄制時瀏覽器頁面的限制,還有一處隱藏的限制:腳本中沒有打開瀏覽器的操作。如果沒有在回放前打開一個瀏覽器頁面,回放操作肯定會失敗。幸好Rational Functional Tester的API提供了這樣的功能,在所有Java腳本的公共父類com.rational.test.ft.script.RationalTestScript里,有一個方法startBrowser(java.lang.String url),可以用來啟動瀏覽器,并打開某個URL。因此需要在腳本的第一行前加上"startBrowser("");"用來打開一個空白頁面,然后再執行其他操作。
通過修改頁面對象的識別屬性和添加必要的Java代碼,我們完成了對腳本內容和錄制環境的解耦工作。
二 擺脫時間的束縛
回放時,Java腳本是由Java虛擬機解釋執行,進行速度很快;而瀏覽器的打開,頁面的裝入則往往由于機器性能、網絡帶寬、服務器負載而速度緩慢。如果被測程序的運行和腳本執行的時間差過大,極有可能導致測試的失敗,因此等待時間是我們應該妥當設置的一個要素?梢栽诠ぞ呒壓统绦蚣夁@兩個層次上進行設置。
1) 工具級設置
在Rational Functional Tester "首選項"的"回放"選項里,可以看到四項時間有關的回放設置。缺省的"嘗試查找測試對象的最長時間"值為20秒。由于此處設置比較簡單,而且是一個對所有項目和腳本都有效的全局設置,因此很難設定一個能滿足所有腳本的值。建議接受默認設置,不在這一層上做時間定制,而是去程序級進行更為靈活的控制。
2) 程序級設置
我們可以在程序級上,對腳本做適量的加工。在某些關鍵操作后加上適當的等待,直到該操作完全執行完畢,再繼續之后的操作。"步步為營"地執行腳本,確保每一步的前提都是正確的。
文章來源于領測軟件測試網 http://www.k11sc111.com/