使用Functional Tester 實現自動化框架[1] 自動化測試
抽象、封裝,以及其它計算機科學術語
我通常不會大量使用術語,但是由于模塊化框架是基于一些計算機科學基本原理的,所以看起來我們要花一些時間來談論這些基本原理。一個模塊化框架的第一個基本原理是,努力嘗試在一個時間關注于一個邏輯功能塊,也稱作為抽象。使用抽象,您可以減少和排除一些細節,不用立即關聯到您要進行編碼的功能上。在模塊中,您要關注于將控制從您的測試用例中分解出來。通過控制,我的意思是被測試應用程序中的用例流和功能。對比數據驅動的框架(本系列中所涵蓋的下一個框架),在那您更加關注于將數據從您的測試用例中提取出來。而控制的抽象就是活動的抽象。
模塊化框架的第二個基本原理與抽象緊密相關。這就是封裝的基本原理。在封裝中,您要將關系緊密的程序元素(腳本、類等等)放在一個更大的、更抽象的實體(其它腳本和類)中。封裝為您提供了將相關聯的任務和操作集成在一起的技術。它也通過提供一個穩定的接口來為您保護您的腳本免受程序變更的影響,此接口能夠隱藏您的腳本所執行的實際操作。這是一類隱藏的信息,您將在這里保護您的測試腳本;讓它們都調用相同的腳本和類集合,這樣在您需要進行變更時,這些變更將自然地對您的所有測試腳本生效。
模塊化框架的第三個基本原理關注分離。關注分離是將一個程序分解成在功能上盡可能少重疊的獨立特性。這個基本原理在您執行封裝時會給您提供指導。通常,在您計劃如何為被測試應用的特性和行為進行分離和組織測試代碼時,您將會使用關注分離這個基本原理。
在本系列的三個框架中,模塊化應當是最容易理解和掌握的。以上描述的這三個基本原理是眾所周知的編程方法,并且今天的大多數開發人員在使用它們時甚至沒有積極地思考過。模塊化框架的目標就是通過應用這些基本原理,以改進您的自動化測試套件的可維護性和可擴展性。讓我們看一下模塊化的幾個簡單例子,然后我們將返回來,討論一下有關這種方法的優勢和劣勢。
使用一個類來實現模塊化
在這個例子中,我們將使用對 www.BookPool.com 的一個測試。在列表1中所顯示的記錄腳本啟動了訪問 BookPool.com 的瀏覽器,搜索有關軟件測試方面的書籍,并驗證應當在第一個返回結果頁面中的三本書。
列表 1. 記錄的 BookPool.com 搜索腳本
package tests;
import resources.tests.bookpool_search_recordHelper;
import com.rational.test.ft.*;
import com.rational.test.ft.object.interfaces.*;
import com.rational.test.ft.script.*;
import com.rational.test.ft.value.*;
import com.rational.test.ft.vp.*;
public class bookpool_search_record extends bookpool_search_recordHelper{
public void testMain(Object[] args){
//Start the browser and load BookPool.com
startApp("www.BookPool.com");
//Search for 'software testing'
text_qs().click(atPoint(74,7));
browser_htmlBrowser(document_bookpoolDiscountCompu(),