airtest 官網(wǎng)
文檔和IDE下載,請點(diǎn)擊下方鏈接废士。
airtest 概念
airtest
是一個(gè)跨平臺的UI自動(dòng)化測試工具,官方提供了一套完整的開發(fā)體系耗啦,并推出了強(qiáng)大的自動(dòng)化編輯工具岳守,airtest IDE
艾杏。
airtest IDE
提供了兩個(gè)測試框架,airtest
和poco
极颓,airtest
是一套基于圖像識別的技術(shù)朱盐,poco
是一套UI自動(dòng)化框架,提供了豐富的API處理UI上的各類操作菠隆。
airtest IDE
創(chuàng)造了極為簡單易懂的操作工具兵琳,非常適用于沒有任何自動(dòng)化基礎(chǔ)的開發(fā)測試人員。利用airtest
圖像識別骇径,可以簡單通過點(diǎn)擊躯肌,選擇,截圖完成一套UI自動(dòng)化代碼破衔,快速完成自動(dòng)化測試羡榴。
如何開始
airtest
支持ios
和android
移動(dòng)平臺的APP應(yīng)用UI測試,以下以android
為例运敢。
airtest IDE
可以在Windows (x64) 和 macOS 系統(tǒng)上安裝。
相對于其他UI自動(dòng)化庫(如macaca
)忠售,airtest
更輕量更簡單传惠,安裝只需要下載airtestIDE
即可。不需要龐大的node_modules
稻扬,不需要冗雜的配置操作卦方,不需要指定APP安裝包,任何操作都只有一個(gè)入口泰佳,就是airtest IDE
盼砍。
連接手機(jī)
android手機(jī)依賴adb shell
作為電腦與手機(jī)的鏈接。首先必須確保adb devices
可以連接手機(jī)逝她。刷新側(cè)邊欄的ADB
浇坐,查看airtest是否識別到手機(jī),點(diǎn)擊connect
鏈接黔宛,即可實(shí)時(shí)查看到手機(jī)屏幕狀態(tài)近刘。
圖片識別的魅力
可以觀察到airtest
支持的語言是python
,但是對于python不是很熟悉也沒有關(guān)系臀晃,因?yàn)?code>airtest IDE擁有完全傻瓜式的操作體驗(yàn)觉渴,非常適合新手玩家,如下圖所示
左側(cè)邊欄有各類基本UI操作類型徽惋,如touch
,swipe
,exist
,text
,keyevent
等等案淋,選擇任意操作類型,在右側(cè)屏幕截取圖片區(qū)域险绘,即可錄入想要操作的區(qū)域(如一個(gè)按鈕 或 某個(gè)logo)踢京。如果覺得截圖需要微調(diào)誉碴,也可以雙擊編輯區(qū)的圖片,即可進(jìn)入微調(diào)模塊漱挚,調(diào)整到最適合的尺寸翔烁。
airtest
會(huì)將截取圖片保存在本地工作區(qū),一方面在IDE上可以顯式告知用戶點(diǎn)擊區(qū)域的具體內(nèi)容(如上圖代碼區(qū))旨涝,另一方面在執(zhí)行自動(dòng)化測試時(shí)蹬屹,python
會(huì)讀取本地圖片,在屏幕上識別找到與圖片對應(yīng)的操作區(qū)域白华,執(zhí)行操作慨默。流程如下圖所示:
在IDE上顯式的圖片,在實(shí)際的python
代碼中弧腥,會(huì)表現(xiàn)為下圖(python代碼)所示厦取,通過Template
方法,在IDE中即可實(shí)時(shí)展示具體圖片管搪。這個(gè)只是代碼的存儲(chǔ)方式虾攻,想要深入研究底層原理的同學(xué)可以參考了解下。
圖片識別的應(yīng)用范圍
在實(shí)際APP應(yīng)用中更鲁,不可能所有的操作區(qū)域都是一成不變的霎箍,比如產(chǎn)品列表中某個(gè)產(chǎn)品的標(biāo)簽,價(jià)格澡为,特性都會(huì)隨著時(shí)間漂坏、產(chǎn)品配置、運(yùn)營標(biāo)準(zhǔn)做適當(dāng)變更媒至。所以我們不能過度依賴圖片識別來查找元素顶别。通過圖片識別來查找的內(nèi)容,包含但不限于以下內(nèi)容:
- 固定的按鈕區(qū)域
- 固定的圖片拒啰,如
logo
,icon
,標(biāo)簽
- ...
對于固定的文案驯绎,雖然也可以通過圖片識別來操作,但是建議采用文本識別來作為查找標(biāo)準(zhǔn)图呢。圖片終歸是比文案更不方便操作和維護(hù)的条篷。如果文案發(fā)生了變更,我們可以簡單通過修改代碼完成基礎(chǔ)維護(hù)蛤织,而不需要重新截圖赴叹,來更新用于識別的圖片庫。
.air和.py文件的區(qū)別
新建airtest
工程指蚜,有兩類文件選擇乞巧,.air
和.py
,實(shí)際上airtest
只是個(gè)python的第三方庫摊鸡,代碼層永遠(yuǎn)只有.py
的python文件绽媒。
.air
實(shí)際是一個(gè)文件夾蚕冬,里面存放了python腳本和工程內(nèi)部的文件集合,如圖片是辕,logs等囤热。
報(bào)告
一套完整的UI自動(dòng)化框架必然少不了輸出報(bào)告,airtest IDE
也在軟件嵌入了報(bào)告系統(tǒng)获三,執(zhí)行完成后一鍵導(dǎo)出報(bào)告旁蔼。報(bào)告內(nèi)容也包含了基本的信息,如執(zhí)行時(shí)長疙教,執(zhí)行步驟棺聊,操作截圖等。
poco
airtest IDE
默認(rèn)安裝了poco 插件
贞谓,我們可以在工具上查看到Poco Assistant
面板限佩,poco
作為一個(gè)常規(guī)的UI自動(dòng)化框架,查找元素的方式同樣是全局查找目標(biāo)文案或節(jié)點(diǎn)裸弦,可以幫助我們快速理解頁面結(jié)構(gòu)祟同,精簡代碼。如果不想在代碼中植入圖片理疙,或者不需要使用圖片識別的場景耐亏,我們可以使用poco
的api來處理交互。
同時(shí)poco
提供了豐富的API操作頁面UI元素沪斟,便于處理復(fù)雜的UI交互操作, poco
還支持主流的游戲引擎暇矫,如Unity3D
, Cocos2dx
主之。
4種引擎
poco
提供4種UI引擎,Unity
, Cocos-js
, Netease SDK
, Android App
李根。對于非游戲類型的應(yīng)用槽奕,我們一般選用Android App
就足夠了。我們可以在如下的Poco Assistant
上選擇模式和工具房轿。選擇后粤攒,IDE會(huì)自動(dòng)為我們初始化該模式代碼。
錄制poco腳本
如下圖所示囱持,點(diǎn)擊錄制按鈕夯接,在屏幕上的任何操作都會(huì)以自動(dòng)化腳本的形式錄制下來,可以快速生成自動(dòng)化腳本纷妆。生成的自動(dòng)化腳本可以直接運(yùn)行盔几。
airtest CLI
https://airtest.readthedocs.io/en/latest/README_MORE.html#running-air-from-cli
airtest提供了與IDE對應(yīng)功能齊全的CLI工具。
自動(dòng)化執(zhí)行效率
對比與其他UI自動(dòng)化框架掩幢,采用普通的全局元素查找方式逊拍,airtest的執(zhí)行效率并沒有很大提升上鞠。因?yàn)榈讓拥膶?shí)現(xiàn)方式,各大UI自動(dòng)化框架大同小異芯丧。普遍的現(xiàn)狀芍阎,ios始終是個(gè)性能瓶頸,airtest
也采用了facebook
的webdriveragent
缨恒,并使用服務(wù)連接控制設(shè)備谴咸,性能相對較差。android
性能一直有很大的優(yōu)勢肿轨,接入成本也相對較低寿冕。
但是airtest IDE
提供的簡易操作,快速代碼生成等功能椒袍,的確可以提高自動(dòng)化的開發(fā)效率驼唱。而在某些場景,如結(jié)構(gòu)復(fù)雜驹暑,層級較深的頁面(列表頁)玫恳,圖片識別
也能解決元素查找耗時(shí)長的問題。
總結(jié)
總的來說优俘,airtest
作為UI自動(dòng)化工具京办,的確可以解決很多開發(fā)和測試的痛點(diǎn),工具學(xué)習(xí)成本也較低帆焕,編輯case效率可以得到很大提升惭婿,強(qiáng)大的圖片識別工具補(bǔ)充了很多自動(dòng)化難以覆蓋的場景,如果有python
語言的基礎(chǔ)可以根據(jù)實(shí)際場景叶雹,補(bǔ)充更多豐富的功能财饥,如頁面跳轉(zhuǎn),綁定mock數(shù)據(jù)折晦,客戶端數(shù)據(jù)校驗(yàn)等钥星。如果可以和其他UI自動(dòng)化框架結(jié)合,揚(yáng)長補(bǔ)短满着,在業(yè)務(wù)中一定能得到更大的應(yīng)用谦炒。