自動化測試框架的AW模式

konglingbin發表於2024-04-01

近年自動化測試發展迅猛,幾乎每個行業,如GUI、APP、雲等都開發出自己的自動化開源框架來滿足本行業自動化測試的需求,但這些自動化開源架構大多是偏向自動化實現技術的。從自動化工程角度出發,給出通用的自動化測試框架。

從自動化工程的角度來說,自動化測試框架主要分為4層。

自動化測試架構的底層是“被測系統/測試環境層”,主要包括自動化測試物件的實際物理裝置和虛擬化環境。自動化指令碼實際就執行在這一層上。
第二層是“自動化測試架構層”,這是自動化測試架構的核心層,主要包含幾個子系統。
·指令碼語言執行環境和各種框架的集合:包含自動化測試相關的語言環境、庫、開源/自研框架等。
·業務負載發生器:主要作用是模擬所需的業務負載。
·測試資料生成器:根據測試要求生成所需的測試資料。
·被測系統管理系統:包括配置檔案的管理、相關資料庫管理等。
·測試環境管理系統:主要是對測試環境的管理,如測試拓撲、資源等。
·AW(Action Word,動作關鍵字):在自動化測試中,所有的操作都需要抽象封裝為關鍵字,供上層自動化指令碼呼叫。
·工具:與自動化測試相關的工具元件(如測試報告生成工具)和其他系統(如需求管理系統、測試用例系統或缺陷系統關聯的工具外掛等)。
第三層是“自動化指令碼和套件層”。建議從“特性——測試型別”這樣的角度來組織自動化指令碼。還可以根據場景、專項等將滿足特定條件的自動化指令碼組合起來,形成自動化測試用例集(又稱自動化測試套件),方便使用者層排程使用。

最頂層是“使用者層”,包含的子系統如下。

·指令碼排程執行系統:如Jenkins Jobs等,提供與指令碼排程和執行相關的能力。
·自動化測試報告:提供自動化測試結果,為測試失敗的指令碼提供詳細資訊,以供自動化測試執行人員分析使用。
·儀表盤:提供當前自動化專案的整體狀態、統計等資訊。
·使用者管理系統:提供基本的賬號管理、許可權等能力。
AW是第二代自動化測試框架新的架構中的思想其中之一。(ActionWord)

總結分享一下自動化測試框架設計的思想

  • 自動化測試一般有資料驅動和關鍵字驅動兩種模式,這裡將兩種思想結合起來,即有關鍵字驅動也有資料驅動。從架構層面設計,採用開發常用MVC框架思想,分為邏輯控制層(Controller)、持久層(Model)、展示層(View)。如下圖所示,以Java語言為例,每層應用到的技術:

  邏輯控制層:Selenium適用於Web自動化,真實模擬使用者操作瀏覽器;HttpClient應用於介面自動化;TestNG是一個目前很流行實用的單元測試框架,有完善的用例管理模組,配合Maven能夠很方便管理依賴第三方外掛,事半功倍。如果適用python,也是有類似的開源庫可供選擇,如python+selenium+request+unittest。

  持久層:這一層注意用例測試資料的管理,很多是適用excel表格的形式去管理測試資料,這裡也不是說不好,畢竟也是經過市場的考驗。例外介紹一個筆者覺得更加優秀的思路,採用MyBatis+MySQL的方式管理資料,可能很多測試人員開發經驗不足,不太熟悉MyBatis框架,這裡有必要可以學一學。總體的思想就是首先做好測試分析,根據業務設計好測試資料庫表結構,然後將測試資料儲存在MySQL資料庫,實現測試資料和期望結果資料的線上管理,這裡只需要在MyBatis框架下面寫好對應的SQL語句即可實現資料驅動的自動化測試。筆者對python的第三方庫不是很熟悉,想必python應該也有類似的管理MySQL的庫。

  展示層:主要是測試報告的展示,採用ExtentReport框架實現測試報告的展示,該框架的測試報告效果目前來看是比較好的。

  • 邏輯業務層的具體實現來看,主要分基礎框架類、封裝工具類、封裝業務類和自動化指令碼。如圖所示:

  基礎框架類:這裡可以直接使用maven引入即可,管理起來很方便。

  封裝工具類:這個類主要包括連線資料庫、讀取配置檔案、讀取excel檔案等基本工具類,還包括對selenium、HttpClient等框架進行二次封裝的類,可能有人會說,這是多餘的,為什麼要做這個封裝,做這個主要是為了解耦業務類與框架。如果某天發現這個框架有點缺陷,業務類不好使,當我們更新框架可能會需要大量修改封裝的業務類,維護工作量巨大,如果有這一層,那我們只需要修改二次封裝類的具體實現就可以了,對業務類提供的API不變,這樣維護工作量小很多。

  封裝業務類:這一層採用關鍵字驅動的自動化測試思想,根據被測物件的特性,設計很多個不同的業務類,比如登入操作,如果很多個登入的入口,就寫一個登入基類,不同入口繼承基類分別實現子類。如果是介面自動化,這個設計起來就比較簡單了,有多少個介面就設計多少個業務類,這些類我們稱之為AW(Action Word),是為了自動化測試指令碼測試不同場景直接引用方法,組合AW,形成一條條測試用例。這樣,我們測試人員即使程式碼能力一般,也能依葫蘆畫瓢,組合各個AW寫自動化測試用例。如果公司資金人力允許,還可以針對開發一個桌面工具或者網站,實現表格式開發測試用例,這樣的話,即使不懂程式碼的測試人員,也能根據業務邏輯自己在桌面工具或者頁面組合AW,形成測試用例,程式自動組裝TestNG測試用例。筆者用到過的類似這種框架就有Robot Framework,一個非常優秀的開源python自動化測試框架。

  自動化指令碼:直接組合業務類寫好的AW。針對這一層需要測試人員懂一點點Java程式碼就可以勝任這個工作,如果想要小白都能寫,需要針對開發一個桌面工具或者網站,實現表格式開發測試用例,前面已經講到不再贅述。

  • 最後說一說測試執行,目前用的比較多的就是Jenkins,持續整合;將我們寫好的測試用例使用git倉庫管理,事先在Jenkins建立好任務,釋出新版本之後,直接執行任務,自動部署版本包,下載自動化測試用例並執行,生成報告,這樣的一條流水線,在當今敏捷開發模式下效率是很高的。

參考:https://www.cnblogs.com/andrew209/p/10091841.html

相關文章