我眼中的自動化測試框架設計要點
對于自動化測試框架,其實并沒有多數人想象中的那么高深玄乎,框架的概念只是一系列的被事先定義好的標準和規范。在自動化測試中我們經常提到的對測試需求的解析、腳本設計、測試執行、測試報告、維護管理等等,通過框架將它們串聯并封裝起來,從而使框架的終端用戶能夠更方便地使用。然而,一個好的自動化測試框架,不僅僅要能讓用戶方便使用,還需要考慮很多其他因素,下面就來分享一下一些個人的經驗。
● 選擇一種類型的框架
目前比較常見的自動化測試框架主要有3種:數據驅動框架、關鍵字驅動框架和混合型框架。
1、數據驅動框架(Data Driven Framework)
數據驅動最適合測試的業務邏輯固定不變的應用程序,只有測試數據會變化。通常測試數據會被配置在外部文件或數據庫中。
2、關鍵字驅動框架(Keyword Driven Framework)
關鍵字驅動顧名思義,它提供了一系列通用的關鍵字,用戶通過調用這些關鍵字并輸入一些參數可以實現單個操作,比如,打開瀏覽器、打開某個網頁、點擊某個鏈接等等,然后通過組織這些關鍵字形成一個完整的測試流程。
3、混合型框架(Hybrid Framework)
混合型框架就是把數據驅動和關鍵字驅動整合起來,同時具備了兩者的優點。與關鍵字框架不同的是,這種框架通常會提供一些針對于特定應用程序的關鍵字,比如登錄、登出等。然后在完整測試流程的基礎上,再應用一層數據驅動,這樣就能使測試邏輯和測試數據更加靈活和可配置。
● 不必重新造輪
在設計框架的時候應該盡可能的沿用自動化測試工具已提供的功能。比如,一個基于selenium的框架,selenium本身就已經提供了打開瀏覽器和網頁,點擊按鈕等功能,就不必花時間再去開發這樣一些關鍵字,以減少開發成本。
● 可重用性
一個好的框架必須具有高度的可重用性。我們可以把一些單獨的操作組合成一些最常用的測試流程,比如,把“輸入用戶名”、“輸入密碼”、“點擊登錄”三個操作組合成一個關鍵字“登錄”。
● 配置管理
如同開發團隊一樣,自動化腳本也需要有配置管理,這樣才能更有效地對腳本的提交、修改、版本控制、基線化等操作進行管理,所以在設計框架的時候需要考慮結合配置管理工具,如CVS、VSS、SVN等。
● 可配置性
1、外部可配置性
腳本的配置項應該放在外部文件中,像URL,路徑,版本信息等,從而能使腳本在不同的環境下運行。另外配置文件的路徑也不能寫死,應采用相對路徑,以保證框架能在不同的機器上順利運行。
2、內部可配置性
當框架部署到不同的機器上時,會有不同的環境,要有能夠自動根據不同的系統環境完成必要配置的能力。舉個例子,比如一個selenium框架被部署到裝有不同瀏覽器的機器上,框架應當能根據當前系統上裝了哪些瀏覽器而分別運行它們。
● 對象庫維護
在自動化測試中遇到的大多數問題基本上都是由于對象的屬性變化導致的腳本失敗,所以,對象庫的維護能力對于一個框架來說十分重要。我們可以把對象庫作為一個共享資源,由專人進行維護。對象庫可以是一個外部的XML、Excel、數據庫等。
● 執行模式
需要考慮到以下幾種用例執行需求:
1、執行一個單獨的用例
2、執行一個測試用例集
3、重新執行失敗的用例
4、根據其他的用例或用例集的運行結果執行相應的用例或用例集
除了這些以外可能還有其他的方法,主要是根據項目的需求來的,所以只需要滿足特定的項目測試需求就可以了,不必全部都實現。
● 狀態監控
在腳本執行的時候,框架應當能夠實時監控腳本的運行情況,如果碰到運行故障的時候應當能進行基本的容錯恢復處理,這樣的話不至于使腳本處在一個被block的狀態,從而浪費大量時間。
● 測試報告
不同的應用程序往往會有不同的測試報告的要求,有時需要把許多用例集的運行結果結合起來(總的運行報告)看,多少個成功,多少個失敗,通過率多少;有時又要看單獨一個用例的執行情況,哪一步失敗,失敗原因是什么。
另一方面,多樣化的測試報告表現形式也是需要考慮的。Excel、word、web、pdf、...等形式可以根據實際項目需要來選擇,但不論做成何種形式都至少要保證測試報告的易讀、易訪問。
● 易調試性
一般情況下,調試(debugging)在開發測試腳本的過程中會占據大量時間,所以是否易于調試也是一個很重要的因素,直接影響到開發和維護框架的成本,不容忽視。
● 測試日志
一個好的框架應當能在測試執行過程中生產足夠詳細的日志信息(文字、截圖等),這對于調試的幫助很大,同時也能我們快速定位到問題所在,節省時間。
● 易用性
易學易用對于自動化測試框架來說也很重要,因為畢竟是要面向最終用戶的,如果框架很難上手,會失去用戶群體,那框架也就沒有存在的意義了。所以在保證易用性的基礎上,最好有一個詳細的框架說明文檔,對于新手來說幫助會比較大。
● 靈活性
靈活性是指框架應當能保證在目前的基礎上做二次開發的能力,這個其實跟軟件開發的標準是一樣的,預留足夠的可擴展性以便未來的版本升級。
● 性能
框架設計不宜過于復雜,太復雜的框架會增加腳本的加載、運行時間,從而導致運行腳本的效率低下。所以在設計框架的時候,也要考慮到性能這一因素。
● 引用外部工具
有一些外部工具本身就提供了自動化接口的,我們不妨可以把它融入到框架中,可以省去不少工作量。比如,經典的QTP+QC框架。
● 編碼規范
好的編碼規范能使腳本易讀、易維護、易管理。下面列出了一些點:
1、變量、常量、函數、文件、腳本的命名規范
2、函數、函數庫的注釋規范
3、對象命名規范
最后需要說一句,自動化測試框架永遠沒有最好的,只有最適合的!
posted on 2013-04-01 10:12 順其自然EVO 閱讀(307) 評論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動化測試學習