淺談自動化測試框架設計


筆者結合實際項目經驗以及學習其他前輩經驗,總結分享一下自動化測試框架設計的思想

  • 自動化測試一般有數據驅動和關鍵字驅動兩種模式,這里將兩種思想結合起來,即有關鍵字驅動也有數據驅動。從架構層面設計,采用開發常用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創建好任務,發布新版本之后,直接運行任務,自動部署版本包,下載自動化測試用例並執行,生成報告,這樣的一條流水線,在當今敏捷開發模式下效率是很高的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM