軟件測試 | 常見的自動化測試架構
一個自動化測試架構就是一個集成體系,其中定義了一個特殊軟件產品的自動化測試規(guī)則。這一體系中包含測試功能函數庫、測試數據源、測試對象識別標準,以及各種可重用的模塊。這些組件作為小的構建模塊,被組合起來代表某種商業(yè)流程。自動化測試架構提供了自動化測試的基礎,降低了自動化測試的難度。
常見的自動化架構包括如下。
1.數據驅動測試
數據驅動測試將測試腳本與測試數據放在同一測試架構中。該測試架構提供可重用的測試邏輯,目的是減少測試維護工作量和改善測試覆蓋率。測試輸入數據和測試結果數據都會被存儲在一個或者多個數據源/數據庫中,數據存儲格式和數據組織方式依賴于具體實現。測試數據與測試邏輯分離,當測試數據發(fā)生改變時,不會影響測試邏輯。同一個測試邏輯可以針對不同數據來進行測試,提高了測試邏輯的使用效率和可維護性。
2.模塊驅動測試
模塊驅動測試使用獨立的小腳本來對應待測系統(tǒng)的模塊、零件和子功能。這些不同層級的小腳本按照一定規(guī)則,組合成更大級別的測試,如此就實現了一個特定功能的自動化測試案例。在所有自動化測試架構中,它應該是最容易領回和控制的一種。有這樣一種編程策略,它的應用非常廣泛,即屏蔽組件的內部實現,僅提供組件的對外抽象接口。如此下層的測試組件發(fā)生變動時,對上層自動化測試案例來說是透明的。“模塊驅動測試”引入了抽象和封裝的原則,目的是提升自動化測試的可維護性和可擴展性。
3.關鍵字驅動測試
關鍵字驅動測試也被成為“表格驅動測試”或者“操作名測試”,它是一種軟件自動化測試的方法論。它將自動化測試的創(chuàng)建過程分為兩個不同的階段:設計階段和實現階段
(1)設計階段的一個簡單例子如下。

一個更復雜的例子如下。

(2)實現階段依賴于具體使用的測試工具,通常自動化測試引擎會提供設計階段定義的關鍵字,類似于“check”或者“enter”。測試人員基于這些關鍵字來編寫測試案例。測試案例執(zhí)行時,會有一個驅動程序來讀取這些關鍵字,并執(zhí)行響應的代碼。
優(yōu)點:
1.在一個較長的軟件維護周期內,顯著減少維護工作量,使得:
測試案例簡介;
測試案例可讀性高;
測試案例易于修改;
新的測試案例可以很方便地反復已經存在的關鍵字。
2.關鍵字可以跨越多個測試案例進行復用
3.不依賴于某種語言或者某個工具
4.讓員工集中精力在自己所擅長的地方,比如:
測試案例的構建需要專業(yè)領域知識——不需要太多編程/測試工具知識;
關鍵字的實現要求豐富的測試工具/編程知識——不需要太多的專業(yè)領域知識。
5.可以對自動化測試劃分抽象層級
缺點:
1.創(chuàng)建自動化測試需要更長的時間(相比于手工測試和錄制/回放技術)。
2.需要更長的學習、掌握周期。
4.混合自動化測試
混合自動化測試是由其他自動化測試框架綜合發(fā)展起來的。成功的自動化測試框架,通常都融合了“關鍵字驅動測試”和“數據驅動測試”。它們即擁有測試邏輯與測試數據相互分離的優(yōu)點,又集成了關鍵字驅動的先進架構。這一架構會使得數據驅動腳本更加簡潔,并減小運行時意外失敗的可能性。另一方面,該架構可以實現一些純粹的“關鍵字驅動測試”難以實現的自動化測試任務。該架構由核心數據驅動引擎、功能函數組件,以及支持庫所構成。
5.基于模型測試
基于模型測試適用于采用“基于模型設計”的軟件系統(tǒng)。在這種架構下,會有一個成熟的測試模型來描述測試數據的所有方面,以及測試案例和案例的執(zhí)行環(huán)境。通常這一測試模型是全部或者從待測系統(tǒng)功能模型中提取出來的。測試模型描述了待測系統(tǒng)的抽象行為,因此從測試模型中可以派生出功能測試案例。這些測試案例構成了抽象測試案例集,不過抽象測試案例集不能直接在待測系統(tǒng)上執(zhí)行。真正可以執(zhí)行的測試案例集(可以與待測系統(tǒng)進行交互),是從抽象測試案例集派生出來的。有些基于模型測試的測試工具,支持從模型(包含足夠信息)產生可執(zhí)行測試案例集,如圖1-1和圖1-2所示。
從模型派生出案例,可以有很多種方式,因為測試很多時候是依靠經驗去嘗試,并沒有固定的最佳方法。你需要事先收集“測試需求”、“測試目標”、“用戶用例”,因為它們包含待測系統(tǒng)模型的信息。測試案例集是從模型二非代碼派生出來的,因此基于模型測試可以被視為某種黑盒測試。事實上,基于模型測試目前只適合于功能不太復雜的軟件系統(tǒng),復雜商業(yè)軟件系統(tǒng)的基于模型測試,還處在探索階段。


注:IXIT—“implementation extra information”,其中包含將抽象測試案例集轉換為可執(zhí)行測試案例集需要的所有信息。通常其中包含數據映射、待測系統(tǒng)配置、測試裝備等。