1. 程式人生 > >一種新的自動化 UI 測試解決方案 Airtest Project

一種新的自動化 UI 測試解決方案 Airtest Project

今天分享一個自動化UI測試工具airtest——一款網易出品的基於影象識別面向遊UI測試的工具,也支援原生Android App基於元素識別的UI自動化測試。主要包含了三部分:Airtest IDE、Airtest(用截圖寫指令碼)和 Poco(用介面UI元素來寫指令碼)。

來自google的評價:

Airtest 是安卓遊戲開發最強大、最全面的自動測試方案之一。
它具備以下幾個優勢:
1.如果你是個小白,不想進行深度開發只想用作UI自動化測試,那麼你完全可以用AirtestIDE這款IDE通過操作滑鼠來生成並錄製指令碼,一鍵回放
2.支援在 Windows 和 macOS 上執行。基於影象識別的 Airtest 框架,適用於 Android 和 Windows 上的遊戲,此外也支援Android native apps、Windows applications、iOS Support、Selenium Plugin
3.自動生成詳細的HTML測試報告,附帶了每個操作步驟的截圖,方便迅速定位失敗的測試點
4.提供了一種快速進行相容性測試的方案,利用手機叢集進行大規模自動化測試。
5.支援影象識別,可將圖片元素作為引數進行校驗操作
6.支援二次開發,只需要下載airtest的python第三方依賴庫
多說無益,我們開始嘗試使用Airtest進行Android APP測試
環境準備


1.最好使用python2.7以上,建議使用虛擬Pythonvirtualenv環境部署,隔離環境
如果想要利用Airtest的API拓展更多的高階功能,請安裝如下庫
Airtest

airtest
Poco

poco
2.如果測試Android app,需要準備adb環境,其依靠依靠ADB與Android裝置進行通訊
3.下載airtestIDE. 請在官網下載合適你的IDE版本:http://airtest.netease.com/changelog.html
開始使用
1.裝置連線
1.1一切準備妥當後,開始開啟AirtestIDE進行使用,圖中所示分別是連線Android、Windows application、ios

AirtestIDE


1.2我們正常連線我們的手機,開啟USB除錯,點選connect連線即可。如果連線失敗,可重新整理ADB或重啟ADB。連線過程中會向手機安裝RotationWatcher、PocoService等元件,同意安裝即可。如果連線不正常,請檢視是否是不支援該手機http://airtest.netease.com/

AirtestIDE
1.3連線成功後,畫面展示如下,可以看出手機畫面是實時投影在IDE上的,能在左邊實時檢視UI渲染樹層級,獲取各類控制元件元素的屬性

AirtestIDE
2.基於影象識別的指令碼
2.1首先來看一看官方提供的啟動demo

AirtestIDE
掌握以上操作,已經可以完成大部分的自動化測試任務了。實際編寫中你甚至不用動手寫指令碼,你只需要滑鼠操作錄製指令碼即可,所有的東西都已經封裝好了,可以直接截圖作為引數,非常的方便、簡單
2.2來看一個實際例子

AirtestIDE
用例可以使用touch等語句來手動編寫,也可以在AirtestIDE中通過點選輔助窗中的各類語句按鈕,然後框選按鈕來生成語句。
一些常用語句:
assert_exists:斷言圖片存在於當前畫面上,驗證執行結果是否正確,專屬的斷言語句
assert_not_exists:斷言圖片不存在,驗證執行結果是否正確,專屬的斷言語句
touch:當前畫面中尋找符合圖片內容的座標並點選,沒有找到相符的圖片則丟擲一個異常
swipe:可以從一個位置滑動到另外一個位置
wait:等待畫面中某個圖片出現
exists:判斷畫面中是否存在某個圖片
text:呼叫輸入法,輸入一段文字
sleep: 等待一段時間,確保上一步的操作已經完成
snapshot:當前畫面截圖
如果你想了解這種基於影象識別的原理或者是進行更多複雜操作,可以去官方檢視airtest.core.api,官方提供了詳細的說明文件,篇幅有限不做更多說明
3.基於控制元件識別的poco指令碼
3.1直接看一個例子吧

AirtestIDE
poco的初始化應該放在遊戲啟動以後再進行,如果是測試遊戲,因為poco需要與遊戲中的poco-sdk進行通訊,需要等待遊戲將poco-sdk初始化完成,才能初始化poco
4.測試報告
airtest提供了很詳細的的測試報告,為每一個用例的操作步驟都做了截圖(sleep不截圖),方便我們定位失敗的測試點

AirtestIDE
好了,Airtest的分享簡單介紹到這裡。