airtest 自動(dòng)化初探

airtest 官網(wǎng)

文檔和IDE下載,請點(diǎn)擊下方鏈接废士。

http://airtest.netease.com

airtest 概念

airtest是一個(gè)跨平臺的UI自動(dòng)化測試工具,官方提供了一套完整的開發(fā)體系耗啦,并推出了強(qiáng)大的自動(dòng)化編輯工具岳守,airtest IDE艾杏。

airtest IDE 提供了兩個(gè)測試框架,airtestpoco极颓,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支持iosandroid移動(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)近刘。

連接手機(jī)前
連接手機(jī)后

圖片識別的魅力

可以觀察到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é)可以參考了解下。

python代碼

圖片識別的應(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í)行步驟棺聊,操作截圖等。

生成報(bào)告
報(bào)告1
報(bào)告2

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 assistant

錄制poco腳本

如下圖所示囱持,點(diǎn)擊錄制按鈕夯接,在屏幕上的任何操作都會(huì)以自動(dòng)化腳本的形式錄制下來,可以快速生成自動(dòng)化腳本纷妆。生成的自動(dòng)化腳本可以直接運(yùn)行盔几。

實(shí)時(shí)錄制腳本

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也采用了facebookwebdriveragent缨恒,并使用服務(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)用谦炒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市风喇,隨后出現(xiàn)的幾起案子宁改,更是在濱河造成了極大的恐慌,老刑警劉巖魂莫,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件透且,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秽誊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門鲸沮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锅论,你說我怎么就攤上這事讼溺。” “怎么了最易?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵怒坯,是天一觀的道長。 經(jīng)常有香客問我藻懒,道長剔猿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任嬉荆,我火速辦了婚禮归敬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鄙早。我一直安慰自己汪茧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布限番。 她就那樣靜靜地躺著舱污,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弥虐。 梳的紋絲不亂的頭發(fā)上扩灯,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音霜瘪,去河邊找鬼驴剔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛粥庄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豺妓,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惜互,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了琳拭?” 一聲冷哼從身側(cè)響起训堆,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎白嘁,沒想到半個(gè)月后坑鱼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年鲁沥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呼股。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡画恰,死狀恐怖彭谁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情允扇,我是刑警寧澤缠局,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站考润,受9級特大地震影響狭园,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糊治,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一唱矛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俊戳,春花似錦揖赴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至阿逃,卻和暖如春铭拧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恃锉。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工搀菩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人破托。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓肪跋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親土砂。 傳聞我的和親對象是個(gè)殘疾皇子州既,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355