測試框架設計

2022-04-11 20:03:41 字數 1548 閱讀 5123

關於測試框架的好處,比如快速回歸提高測試效率,提高測試覆蓋率等這裡就不討論了。這裡主要討論自動化框架包含哪些內容,以及如何去設計乙個測試框架。

1. 什麼是自動化測試框架?

它是由乙個或多個自動化測試基礎模組、自動化測試管理模組、自動化測試統計模組等組成的工具集合。

以常見的前端ui測試為例,乙個測試框架大概包括測試物件,測試元件,基礎類和函式,工具類,測試資料,異常處理,測試日誌,斷言和測試報告等這些模組。

在設計測試框架的時候,我們要盡可能的將這些模組有機的結合起來,將指令碼能夠有效的組織、連貫應用起來,提高測試指令碼的可維護性和可讀性。

2. 沒有萬能的測試框架,適合自己專案的,能提高工作效率的就是好框架。

由於應用系統技術五花八門,幾乎沒有測試框架能應用在多個專案上並體現出應有的價值,所以一般情況都需要根據專案自身情況來定製化我們的測試框架,常用的有資料驅動,關鍵字驅動和兩種方式的混合。

a. 資料驅動 (ddt)- 如果被測系統業務邏輯固定不變或變動較小,我們可以使用資料驅動,通過不同資料來保證測試覆蓋率,通常資料都是儲存在外面檔案或資料庫中,執行時自動獲取。特點是資料與測試指令碼分離,基於模組化的測試庫,乙個驅動指令碼可以執行多個相似測試,這樣非常容易建立新測試。

b.關鍵字驅動 - 將資料與關鍵字結合來描述如何使用資料執行測試。這種方法具備資料驅動的優勢,同時非程式設計人員也能建立新型別測試。

3. 設計框架的思路:

a. 高內聚低耦合,高內聚就是每個模組盡可能獨立完成自己的功能,不依賴於模組外部的**;低耦合就是模組與模組之間介面的複雜程度,比如在類內部盡可能減少方法之間的呼叫,否則乙個方法的變動會影響呼叫它的另乙個方法。

比如,你要做兩個功能:對文字檔案的讀寫,對 word 讀寫,同是io你可以放在乙個類裡的不同方法,高內聚。

比如,寫了乙個類,「人」類,「人」有自己的名字年齡等屬性,每個「人」又有一條狗做為自己的屬性,你可以把「人」類的屬性和「人」的狗的屬性都寫在「人」類裡,這就成了高耦合,

而,把狗的屬性剝離出來,寫成「狗」類,在「人」類裡只放乙個對「狗」的物件做引用,這個「狗」類,即可做為「人」的屬性,也可以做它用。即 低耦合

b. 指令碼分離:

物件、測試資料、業務邏輯相互剝離、靈活呼叫,在前端ui測試上可以得到明顯的效果,我們可以使用pageobject設計模式來實現物件和業務邏輯的剝離,使用dataprovider來實現資料業務邏輯分離。

c. 模組化設計用例,指令碼的可重用

如果時間充裕且專案提供支援,可以遵循以下順序進行測試: 頁面物件 - 功能點 - 業務邏輯 - 業務流程。

從實現來說就是:先測試底層的頁面操作物件,通過呼叫操作物件、及業務邏輯實現對功能點的驗證,再通過呼叫業務邏輯組合功能點實現對業務流程的驗證。不同的業務流程,對於底層的操作元件、中間層的功能點函式是完全可以復用的,只是呼叫的業務邏輯的差異,或者是測試資料的差異性。這樣的好處是指令碼相互獨立性,**復用,易維護,如有新的業務流程可以呼叫已有**來組合。

d. 封裝基礎方法,對於一些較通用的方法,可以封裝,比如log,assert,異常處理,檔案讀寫操作,資料庫讀寫操作,儲存頁面截圖等等。在需要的時候直接在測試用例裡呼叫即可。

如何開展自動化測試

原文:

MegEngine 框架設計

megengine框架設計 megengine 技術負責人許欣然將帶了解乙個深度學習框架是如何把網路的定義逐步優化並最終執行的,從框架開發者的視角來看待深度學習。背景 ai 浪潮一波又一波,彷彿不會演算法就落後於時代。深度學習框架處理了各種裝置的計算細節 求導 計算優化序列的工作,而在動態 靜態兩套...

WCC框架設計

乙個好的框架,不僅能幫助程式開發節約很多時間,同時也能減少bug的引入。這個框架是在ssy同學的基礎上進行了一些改進 主要在於一下幾點 會隨著專案開發逐漸更新這篇文章 1.應用了反射機制,實現網路task的多型。2.應用mvc模式,獨立出資料model,讓activity更加專注在介面響應和基本的業...

框架設計的粒度

先拿乙個常見的oa中的許可權管理舉例,常規的設計方式無非就是許可權 角色 人這三層,關係如下 那麼這樣的許可權設計是可以基本滿足乙個oa的需要的,那麼只需要做乙個filter去進行許可權的控制就ok了。如果考慮到軟體的擴充套件性貌似也足夠用了。但是考慮一下顯示情況,如果上線之後許可權需要增加意味著什...