UI自動化測試主要是通過一系列的測試框架和代碼包對web UI(比如:Selenium)、app UI(比如selenium、appium)、桌面應用UI(比如Autoit)模擬手工操作的步驟完成自動化測試用例的創建。通常可以通過錄制和腳本開發兩種方式編寫測試用例。現在有很多自動化測試框架可以將錄制的步驟腳本化以實現維護性高的目的。針對某些UI控件定位不准確的難題,也運用了圖像識別(比如Airtest)等新技術。UI自動化投入了人力、物力、財力,但往往收獲頗微,位於自動化分層金字塔的最上一層,這其中的因素有很多,包括UI的迭代性強、使用不同的JS框架導致控件定位不准等等。但如果app開發項目需要適配多個品牌的不同型號的手機(特別是安卓這個大家族),如果遇到后台重構,難道我們要去挨個機型點一遍嗎?想想都頭大。如果這個時候我們有一批測試核心功能的UI自動化用例,拿來跑跑不是很爽嗎?即便是有些用例需要修改甚至需要寫新用例,我相信也比我們去挨個點點點快很多。UI自動化測試工具遵循結合本身或團隊的條件選擇接口自動化測試工具原則選擇UI自動化測試工具。
業界主要使用appium實現appui自動化,使用Selenium IDE實現webui自動化;部分APP使用KIF和uiautomator實現iOS UI自動化,使用espresso實現Android UI自動化,未形成平台,維護成本高。調研了市場已有工具,Webui自動化測試:Selenium+RobotFrameWork、selenium+unittest(python),Appui自動化測試:KIF和uiautomator(ios)/espresso(java,android)、SoloΠ(Soapui ,Android)、appium、robotium(java、android)具體如下:
工具
對比 |
Selenium 1 Webdriver(Selenium 2) Selenium IDE |
UiAutomator |
Appium |
AirTest |
TestCafe/TestCafe Studio |
puppeteer |
RobotFramework |
|
||||
UI元素提取方式 |
代碼實現 ide界面錄制 |
代碼實現 |
界面錄制+代碼實現 |
代碼實現+界面錄制+sikuli圖像識別 |
界面錄制+代碼實現 |
代碼實現 |
關鍵字實現 |
|
||||
瀏覽器支持 |
Firefox、chrome、ie Firefox、chrome |
-- |
-- |
Firefox、chrome、ie主流 |
Firefox、chrome、ie主流 |
Chrome |
Firefox、chrome、ie |
|
||||
瀏覽器兼容性 |
不兼容,需要webdriver驅動 Ide不兼容,不同插件 |
-- |
-- |
不兼容、代碼設定 |
兼容 |
不兼容 |
不兼容 |
|
||||
操作系統/平台 |
Windows、linux、android、ios Ide(Windows) |
android |
Windows、linux、android、ios |
Windows、android、ios |
Windows、linux、ios |
Windows、linux |
Windows、linux、android、ios |
|
||||
開發語言 |
Python、java、js、php、ruby… ide錄制腳本可轉換成其他語言 |
Js |
python、java、php、ruby…
|
Python |
Javascript |
Javascript |
Python、java |
|
||||
持續集成工具 |
支持(ide不支持) |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
|
||||
是否支持headless |
支持(ide需要runner) |
支持 |
-- |
支持 |
支持:testcafe”chrome:he |
支持 |
支持 |
|
||||
是否支持錄制 |
不支持(ide支持) |
支持 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
|||||
是否開源 |
是 |
是 |
是 |
是 |
是 |
是 |
是 |
|||||
測試報告 |
無(ide支持) |
支持 |
支持 |
詳細 |
詳細 |
無 |
詳細 |
|||||
入門難度 |
難(ide入門級) |
中 |
中 |
中 |
入門級 |
難 |
中 |
|||||
優勢 |
1、多語言支持 2、Devops友好接入 3、插件眾多 4、社區支持 5、跨多平台 Ide:1、操作簡單,入門容易 2、執行速度快 3、代碼轉換功能易用,易生成其他編程語言的測試用例代碼 |
1、支持跨應用測試 |
1、支持Native App、Hybird App、Web App 2、支持Android、iOS、Firefox OS |
1、框架基於推形識別和UI,控件識別,操作簡單 2、對代碼能力要求低,可錄制腳本一鍵生成報告,支持python進行個性化編程 |
1、操作簡單,不需專業知識 2、可兼容瀏覽器,無需各種瀏覽器插件 3、完整測試框架 |
1、chrome團隊開發維護node庫,支持headless |
1、關鍵字驅動 2、可隨意加載多個三方庫 3、可適用於邏輯復雜場景 4、框架功能較全面 |
|||||
劣勢 |
1、學習曲線陡峭 2、沒有報告功能,需融入testng、pytest等測試框架 3、瀏覽器兼容問題較多 Ide:1、瀏覽器不兼容 2、無法完成復雜邏輯校驗 3、借助selenium-side-runner可實現命令行執行,但兼容性不好 4、無數據准備 5、錄制穩定性不好 |
1、不支持webview |
1、不支持H5 2、不支持跨應用 |
1、控件定位不夠精確,當控件位置變更或控件圖案修改時,會出現找不到控件的情況 2、平台覆蓋比價有限 3、更適合游戲軟件測試 4、不支持斷點續傳 5、不兼容瀏覽器 |
1、啟動速度慢 2、不具備豐富的社區幫助 3、開發語言單一 |
1、只支持chrome,門檻較低,適合前端開發寫用例 |
1、元素提取需一定的知識 2、不能錄制 3、不兼容瀏覽器 |
調研結果:針對不同項目考慮用多種工具實現UI自動化,然后持續集成。