關於測試框架的好處,比如快速回歸提高測試效率,提高測試覆蓋率等這里就不討論了。這里主要討論自動化框架包含哪些內容,以及如何去設計一個測試框架。
1. 什么是自動化測試框架?
它是由一個或多個自動化測試基礎模塊、自動化測試管理模塊、自動化測試統計模塊等組成的工具集合。
以常見的前端UI測試為例,一個測試框架大概包括測試對象,測試組件,基礎類和函數,工具類,測試數據,異常處理,測試日志,斷言和測試報告等這些模塊。
在設計測試框架的時候,我們要盡可能的將這些模塊有機的結合起來,將腳本能夠有效的組織、連貫應用起來,提高測試腳本的可維護性和可讀性。
2. 沒有萬能的測試框架,適合自己項目的,能提高工作效率的就是好框架。
由於應用系統技術五花八門,幾乎沒有測試框架能應用在多個項目上並體現出應有的價值,所以一般情況都需要根據項目自身情況來定制化我們的測試框架,常用的有數據驅動,關鍵字驅動和兩種方式的混合。
a. 數據驅動 (DDT)- 如果被測系統業務邏輯固定不變或變動較小,我們可以使用數據驅動,通過不同數據來保證測試覆蓋率,通常數據都是保存在外面文件或數據庫中,運行時自動獲取。特點是數據與測試腳本分離,基於模塊化的測試庫,一個驅動腳本可以執行多個相似測試,這樣非常容易建立新測試。
b.關鍵字驅動 - 將數據與關鍵字結合來描述如何使用數據執行測試。這種方法具備數據驅動的優勢,同時非編程人員也能建立新類型測試。
3. 設計框架的思路:
a. 高內聚低耦合,高內聚就是每個模塊盡可能獨立完成自己的功能,不依賴於模塊外部的代碼;低耦合就是模塊與模塊之間接口的復雜程度,比如在類內部盡可能減少方法之間的調用,否則一個方法的變動會影響調用它的另一個方法。
比如,你要做兩個功能:對文本文件的讀寫,對 word 讀寫,同是IO你可以放在一個類里的不同方法,高內聚。
比如,寫了一個類,“人”類,“人”有自己的名字年齡等屬性,每個“人”又有一條狗做為自己的屬性,你可以把“人”類的屬性和“人”的狗的屬性都寫在“人”類里,這就成了高耦合,
而,把狗的屬性剝離出來,寫成“狗”類,在“人”類里只放一個對“狗”的對象做引用,這個“狗”類,即可做為“人”的屬性,也可以做它用。即 低耦合
b. 腳本分離:
對象、測試數據、業務邏輯相互剝離、靈活調用,在前端UI測試上可以得到明顯的效果,我們可以使用PageObject設計模式來實現對象和業務邏輯的剝離,使用DataProvider來實現數據業務邏輯分離。
c. 模塊化設計用例,腳本的可重用
如果時間充裕且項目提供支持,可以遵循以下順序進行測試: 頁面對象 - 功能點 - 業務邏輯 - 業務流程。
從實現來說就是:先測試底層的頁面操作對象,通過調用操作對象、及業務邏輯實現對功能點的驗證,再通過調用業務邏輯組合功能點實現對業務流程的驗證。不同的業務流程,對於底層的操作組件、中間層的功能點函數是完全可以復用的,只是調用的業務邏輯的差異,或者是測試數據的差異性。這樣的好處是腳本相互獨立性,代碼復用,易維護,如有新的業務流程可以調用已有代碼來組合。
d. 封裝基礎方法,對於一些較通用的方法,可以封裝,比如log,assert,異常處理,文件讀寫操作,數據庫讀寫操作,保存頁面截圖等等。在需要的時候直接在測試用例里調用即可。
如何開展自動化測試
- 抓住業務測試工作中的痛點和領導的痛點,多溝通多交流,優先解決基層的工作痛點,我相信一個好的領導會看到你的責任心和付出;
- 技術選型和方案可行性調研,多投入時間和精力,有的人性子急,前期做的很快,如果一開始的方向錯了,最終會得不償失;
- 如果是比較復雜的解決方案,盡量前后端分離、保證各模塊的獨立性、可融合性、解耦不解體,做到靈活可擴展,要有下一盤大棋的准備
原文:https://www.cnblogs.com/mabingxue/p/10257005.html