近年自動化測試發展迅猛,幾乎每個行業,如GUI、APP、雲等都開發出自己的自動化開源框架來滿足本行業自動化測試的需求,但這些自動化開源架構大多是偏向自動化實現技術的。從自動化工程角度出發,給出通用的自動化測試框架。
從自動化工程的角度來說,自動化測試框架主要分為4層。
最頂層是“使用者層”,包含的子系統如下。
總結分享一下自動化測試框架設計的思想
- 自動化測試一般有資料驅動和關鍵字驅動兩種模式,這裡將兩種思想結合起來,即有關鍵字驅動也有資料驅動。從架構層面設計,採用開發常用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