WebUI自動化測試框架, Dagger 1.2 發布
Dagger
是網易
杭州研究院QA團隊開發的一個輕量級、運行穩定的WebUI自動化測試框架,主要基于Selenium及TestNG可以認為是對Selenium進行二次封裝的一個框架(俗稱 造輪子 )。之所以把這個輪子開源出來,主要在于經過了公司內部多個項目的實踐,也取得了不錯的成效,因此,希望開源以后可以對大家有所幫助及參考。
- Home: https://github.com/NetEase/Dagger
- 文檔請參看: https://github.com/NetEase/Dagger/wiki
- Bug及Q&A請至: https://github.com/NetEase/Dagger/issues
- 快速入門詳見: https://github.com/NetEase/Dagger/wiki/Quick-Start
- Javadoc: http://netease.github.com/Dagger
設計理念
Dagger首先是一個WebUI自動化框架,提供了賴以操縱瀏覽器的一些API。API數量不多,少于20個,但從實踐上,已經基本涵蓋95%的應用場景了(其余5%比較 個性 的自動化操作一般是封裝在業務邏輯層面,有時候甚至會須要hack)
Dagger其次是一個測試框架,使用TestNG管理和運行用例,TestNG相關斷言內嵌于上述API中。因此,在我們的測試用例里面不應該看到單獨的TestNG斷言的
Dagger還是一種設計風格:簡約
。無論是Dagger框架本身還是基于Dagger編寫的測試用例,都是十分light
及straightforward
的,以至于會讓人感覺有點土。但實踐中,這兩者確保了低成本、易用性、可維護性
WebUI自動化從業界看,難推進,易爛尾,原因基本在于:維護成本高、運行速度慢、穩定性差
Dagger專注于WebUI自動化,從技術上克服了速度與穩定問題(見下文)。只封裝夠用
的瀏覽器操作為API,并充分簡化/強化這些API,以簡約的風格去降低自動化的學習及使用成本。同時,在實踐中,我們主要使用Dagger編寫冒煙
用例、其次是主干
用例,少寫邏輯復雜功能,不寫邊邊角角功能,讓用例也保持清爽
(在整個自動化實施過程中,會定期進行用例Review),同樣易于后期維護
主要特性
- API極少,易于上手,詳見這里
- 支持單機
多瀏覽器并發
執行,大大縮短用例執行時間,詳見這里 - 通過修改TestNG源碼實現
失敗用例自動重運行
(詳見這里)由此幾乎消除WebUI自動化中常見的虛假失敗 - 默認使用
Chrome
瀏覽器,原因詳見這里 - 失敗用例自動截屏
- 支持數據驅動測試
- 圖片對比功能,主要通過抓取頁面控件和截圖的方式,在圖片的像素級別上對比不同版本的截圖來進行頁面樣式的檢查
在之前版本的基礎上,Dagger進行了多次改進,現發布1.2版本。
新特性如下:
* 新增兩個瀏覽器操作的API。
* getText(String xpath):根據xpath返回該節點text內容。
* select (String xpath, String option):通過select元素并根據可見文本選擇一個選項。
* 新增數據驅動測試功能。
* 新增對Safari瀏覽器的支持。
* 新增圖片對比功能。通過抓取頁面控件和截圖的方式,在圖片的像素級別上對比不同版本的截圖來進行頁面樣式的檢查。
* Apache Maven替代Apache Ant進行項目構建。