簡單說說自動化測試框架
什么是框架framework?
● 整個或部分系統的可重用設計,表現為一組抽象構件以及構件實例間交互的方法;
● 可被開發者定制的應用骨架。
前者是從應用方面、而后者是從目的方面給出的定義。測試框架也是如此,測試框架出現的最終目的是花少量的資源來完成盡可能多的測試任務,所以測試框架的建立以及框架的重用性方面是最值得測試人員深入探究的地方。
什么是測試框架?
測試框架是一組自動化測試的規范、測試腳本的基礎代碼,以及測試思想、慣例的集合。
測試框架的好處在于:
● 減少冗余代碼、提高代碼生產率、提高代碼重用性和可維護性。提高開發速度,提升測試代碼的執行效率;
● 提高軟件代碼質量,同時引入重構概念,讓代碼更干凈和富有彈性;
● 提升系統的可信賴度,作為回歸測試的一種實現方法支持修復后“再測試”,確保代碼的正確性。
自動化測試框架介紹
自動化測試框架一般可以分為上下兩個層次,上層是管理整個自動化測試的開發,執行以及維護,在比較龐大的項目中,它體現重要的作用,它可以管理整個自動測試,包括自動化測試用例執行的次序、測試腳本的維護、以及集中管理測試用例、測試報告和測試任務等。下層主要是測試腳本的開發,充分的使用相關的測試工具,構建測試驅動,并完成測試業務邏輯。
測試驅動_A
測試驅動是一個自動化測試框架的核心,其決定整個自動化腳本設計。當前比較流行的測試驅動有數據驅動和關鍵字驅動。
● 數據驅動
測試驅動引擎從數據源獲取測試數據,然后將數據以參數的形式傳遞給測試腳本,最后通過執行測試腳本,驗證測試結果,并將測試結果輸出。一般數據源與測試結果存儲在數據庫、Excel文件、CSV文件等。數據驅動主要優點是:測試腳本與測試數據的分離,當應用功能變更時,只需要修改該功能部分的腳本;執行測試用例的人員不需要了解測試腳本的實現,只關注測試數據表與測試報告表。而且測試腳本的執行是離散的,即非線性的,測試人員可以有選擇的執行測試用例。
測試驅動_B
● 關鍵字驅動
關鍵字驅動的自動化測試框架是在數據驅動的基礎上進行改進,數據源里包含的不只是數據,還有關鍵字,一個測試用例由一個或若干個關鍵字組成。每個關鍵字對應個不同的業務邏輯,例如,登錄、注銷等。數據表通過關鍵字,查找映射表,執行相關的腳本。
驅動引擎是對數據表的數據進行分析,根據不同的測試數據或關鍵字調用相應測試腳本。驅動引擎還需完成一些測試環境初始化、全局參數設置、測試用例是否執行的判斷,以及測試報告的處理等。
測試腳本開發_A
● 腳本劃分
為了方便以后腳本的維護問題,必須對腳本進行有效的分層,同時,提高了腳本的復用率。
→ 公共類庫
公共類庫包括所有模塊都可能用戶的操作方法,其抽象了不同模塊同性,比如操作excel表的方法、讀寫測試報告、驅動引擎等。
→ 模塊特定類庫
在模塊內部將可以為該模塊共享使用的方法抽象出來,作為一個公共類。它可以是一個單的邏輯操作,也比較獨立。比如客戶端登錄操作、控制臺登錄操作、控制臺更新操作等。
→ 測試用例腳本
測試用例腳在最上層,它根據測試點進行設計,面向具體的應用。它可直接調用公共類庫或模塊特定類庫的方法,即調單個邏輯操作。它是單個或多個邏輯操作的集合,即一個測試用戶腳本。
測試腳本開發_B
● 腳本規范
測試腳本的開發也要遵循編程的規則與標準,應該統一規劃,所有開發腳本的人員按照統一的規定進行編碼。除了編程本身規范,還考慮測試用例與庫函數名的命名。
例如,項目M4.1客戶端登錄測試用例可命名為:TC_M4.1_client_login;讀取excel表的函數可命名為:read_excel。
測試用例
● 測試用例粒度
測試用例的粒度決定了用例模型級的復雜度,也決定了每一個用例內部的復雜度。應該根據每個系統的具體情況來把握各個層次的復雜度,在盡可能保證整個用例模型的易理解性前提下決定用例的大小和數目。用例不能太大,這樣一旦出執行測試用例出錯,不利于定位問題;但也不能太細化,太小則不方便執行。
● 測試用例與測試套件
一個大型的項目有許功能模塊,必然會產生大量的測試用例,怎樣才能有效的管理這些測試用例呢?這就需要創建測試套件,通過測試套件將測試某一個模塊或功能點的測試用例集合起來,方便運行與管理。例如,只驗證“用戶管理”模塊功能,則只需要執行“用戶管理”模塊套件即可。
選擇適合自動化測試的用例
通常適合自動化測試的用例有:
● 產品型項目
產品型的項目,新版本是在舊版本的基礎上進行改進,功能變不大的項目,但項目的新老功能都必須重復的測試。
● 回歸測試
回歸測試是自動化測試的強項,它能夠很好的驗證你是否引入了新的缺陷,老的缺陷是否修改過來了。在某種程度上可以把自動化測試工具叫做回歸測試工具。
● 機械并頻繁的測試
每次需要輸入相同、大量的一些數據,并且在一個項目中運行的周期比較長。
有一些交互性比較強,需要人工干預的操作,就不要指望通過自動化測試來完成了。例如,用戶使用U-Key登錄。
軟件自動化框架的發展
基于界面的軟件自動化測試框架和工具的發展大致經歷了三個階段
1.簡單的錄制/回放:由工具錄制并記錄操作的過程和數據形成腳本,通過回放來重復人工操作的過程。在這種模式下數據和腳本混在一起,幾乎一個測試用例對應一個腳本,維護成本很高。而且即使界面的簡單變化也需要重新錄制,腳本可重復使用的效率低。
2.數據驅動 (data_driven)的自動化測試:從數據文件讀取輸入數據,通過變量的參數化,將測試數據傳入測試腳本,不同的數據文件對應不同的測試用例。在這種模式下數據和腳本分離,腳本的利用率、可維護性大大提高,但受界面變化的影響仍然很大。
3.關鍵字驅動(keyword_driven)的自動化測試:關鍵字驅動測試是數據驅動測試的一種改進類型,它將測試邏輯按照關鍵字進行分解,形成數據文件,關鍵字對應封裝的業務邏輯。 主要關鍵字包括三類:被操作對象(Item),操作(Operation)和值(value),用面向對象形式可將其表現為 Item.Operation(Value)。關鍵字驅動的主要思想是:腳本與數據分離、界面元素名與測試內部對象名分離、測試描述與具體實現細節分離。
從上面可以看到,自動化測試框架和腳本的發展是和軟件工程思想的發展一脈相承的。軟件開發的模式從面向機器、到面向過程、再到面向對象、面向服務,是一個從底層到高層、從具體到抽象、復用的粒度從細到粗的發展過程。而軟件開發中的模塊化、層次化、松耦合等思想對自動化測試框架的設計都具有借鑒意義。