關(guān)于Airtest的使用探索

一雷激、Airtest的簡介

??Airtest是網(wǎng)易出品的一款基于圖像識別和poco控件識別的一款UI自動化測試工具。Airtest的框架是網(wǎng)易團隊自己開發(fā)的一個圖像識別框架告私,這個框架的祖宗就是一種新穎的圖形腳本語言Sikuli屎暇。Sikuli這個框架的原理是這樣的,計算機用戶不需要一行行的去寫代碼驻粟,而是用屏幕截屏的方式根悼,用截出來的圖形擺列組合成神器的程序,這是Airtest的一部分格嗅。
??另外番挺,Airtest也基于poco這個U控件搜索框架,這個框架也是網(wǎng)易自家的跨平臺U測試框架屯掖,原理類似于appium玄柏,通過控件的名稱,id之類的來定位目標(biāo)控件贴铜,然后調(diào)用函數(shù)方法粪摘,例如click(),swip()之類的方法來對目標(biāo)控件進行點擊或者是操作瀑晒。

二、關(guān)于自動化測試

??概念:自動化測試徘意,就是把繁雜的人工測試用例利用自動化測試工具編寫成代碼苔悦,讓機器代替人工自動跑用例的過程。實際上就是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的一種過程椎咧。
??意義:節(jié)省人力玖详、物力、時間勤讽、硬件資源等蟋座,提升測試效率,特別對于繁瑣重復(fù)的測試用例脚牍,可以使測試人員更專注于新的測試模塊的建立和開發(fā)向臀,從而提高測試覆蓋率。

三诸狭、市面上常見的UI自動化測試工具以及優(yōu)缺點

image.png

以上主流工具的優(yōu)點跟缺點:

image.png

相較于以上工具來說券膀,Airtest有以下優(yōu)點和缺點:


image.png

所以其實基于圖像識別的Airtest更適合用于游戲測試多一點。

四驯遇、環(huán)境的搭建

1.AirtestIDE的下載
AirtestIDE已經(jīng)幫你集成了所有的環(huán)境芹彬,自帶錄制腳本欄,自動生成腳本妹懒,自帶編輯器還自帶模擬器雀监,有了一個AirtestIDE就可以輕松簡單的錄制腳本了。下載地址是Airtest的官網(wǎng):

http://airtest.netease.com/

AirtestIDE的使用教程跟文檔也在下面的連接中:

http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html

如果你想要利用Airtest的API眨唬,自己拓展更多的高級功能的話会前,可以先下載airtest的python第三方依賴庫:

$brew install python3.6.4
#下載python3   
$pip install Airtest
#下載Airtest python第三方依賴庫
$pip install poco
#下載Airtest提供的Android app ui測試庫pocoui
$brew cask install android-sdk 
#安裝Android-sdk,詳細的配置教程網(wǎng)上有匾竿,這里不詳細說了瓦宜。

然后再下載一個Python的編輯器來編輯代碼,個人推薦使用的是pycharm岭妖。接下來就是使用官方提供的啟動demo代碼:

from airtest.core.api import *
# 通過ADB連接本地Android設(shè)備
connect_device("Android:///")
#安裝待測軟件apk临庇,路徑信息。
install("path/to/your/apk")
#開始運行app
start_app("com.pingan.certicationApp")
#點擊某個圖片昵慌,Airtest中基于圖像識別語法假夺,圖片自己提供。
touch(Template("image_of_a_button.png"))
#滑動語音斋攀,開頭圖片跟結(jié)尾圖片
swipe(Template("slide_start.png"), Template("slide_end.png"))
#添加斷言的圖片
assert_exists(Template("success.png"))
#點擊Android上的返回鍵
#keyevent("BACK")
#點擊Android上的Home鍵返回
#home()
#uninstall("package_name_of_your_apk")

以上已經(jīng)添加了每一句作用的注釋已卷,小伙伴們可以動手試一下將程序跑起來,當(dāng)然如果說易操作性還是AirtestIDE比較容易上手一點淳蔼。

五侧蘸、AirtestIDE的真實場景運用

以上介紹了那么多的就來講一下實際操作裁眯,以平安的智能雙錄app為例子,首先我們先來看一下用例步驟:

  • 1讳癌、點擊雙錄列表待上傳頁面的重新錄制按鈕
  • 2穿稳、進入錄制后點擊開始錄制按鈕
  • 3、點擊錄制完成
  • 4晌坤、點擊確認完成
  • 5逢艘、在彈框中點擊“確認”
    首先連接設(shè)備并進行錄制:


    image

然后我們用IDE開始錄制腳本,先截取每一個按鈕的圖片泡仗,進行touch操作埋虹,如圖1,左邊就會產(chǎn)生每張被截取的控件的樣式娩怎。

之后機器就會在整個界面中取一張截屏,然后在截屏中尋找我們截取的那個部分胰柑,然后再定位到圖片的位置截亦,對圖片進行點擊的操作,從而達到通過圖像識別進行測試的自動化柬讨,當(dāng)然基于圖像識別的方式比較難進行輸入值的操作崩瓤,比較適合一些重復(fù)繁瑣的按鈕點擊事件。意思就是說這種通過截取圖像再的方式并不是很適合用來做登錄類的需要用戶輸入數(shù)據(jù)的東西踩官。

圖1

那么問題來了却桶,怎么樣才能夠讓Airtest也精準(zhǔn)定位到輸入框,從而完成自動輸入信息類型的自動化測試呢蔗牡?其實我們別忘了Airtest還有基于poco這個UI控件搜索框架颖系,所以如果是Android類的app,還是比較適合用poco來定位控件的位置辩越,從而實現(xiàn)自動化嘁扼,下面有一個智能雙錄軟件新建保單的測試用例:

  • 1、點擊新建雙錄按鈕進入新建雙錄頁面
  • 2黔攒、隨機輸入000開頭的14位保單號
  • 3趁啸、輸入投保人姓名
  • 4、輸入投保人證件類型
  • 5督惰、輸入投保人證件號
  • 6不傅、輸入保險產(chǎn)品
  • 7、輸入被保人幸免
  • 8赏胚、選擇銷售渠道访娶、產(chǎn)品類型、繳費頻次
  • 9栅哀、填寫繳費期震肮、每期保費称龙、保險期間
  • 10、勾選雙錄材料

如圖2所示戳晌,只要點擊AirtestIDE左上角鲫尊,Android旁邊的錄制按鈕,然后只要點擊右邊模擬器的響應(yīng)的控件沦偎,就會幫你自動定位那個控件的位置疫向,然后再選擇動作事件,例如:點擊chlick()豪嚎,滑動swipe()之類的操作搔驼,如果要輸入字符的話,可以通過先選中需要輸入內(nèi)容的輸入框侈询,然后再用test(“要輸入的內(nèi)容”)來自動進行輸入操作舌涨,是不是很簡單省事?

圖2

除了以上這些扔字,我們還可以往腳本里面加入斷言囊嘉,然后利用Airtest一鍵生成測試報告,如圖3所示革为,這種報告不僅可以讓你快速了解到你測試的哪個步驟出錯了扭粱,而且同時也便于判定UI有沒有展示異常,但是Airtest有一個缺陷震檩,就是只要某張圖片識別不出來琢蛤,整個腳本錄制進程就會停止,后面的控件就不會再去識別抛虏,報告也只會停留在失敗的那一步博其,生成報告可以點報告按鈕或者ctrl+l,報告以網(wǎng)頁的形式呈現(xiàn)嘉蕾,如下圖:

圖3

總結(jié)

??Airtest操作比較簡單贺奠,基本上不涉及到代碼,所以非常適合剛?cè)腴T沒什么測試經(jīng)驗的人利用這個工具做UI自動化測試错忱,同時Airetest又提供了開源的API儡率,讓資深測試工程師可以基于Airtest的框架上再做高級的定制化擴展功能。
??如果說這個軟件有存在不足的地方以清,個人認為就是不支持?jǐn)帱c續(xù)傳儿普,如果測試中出現(xiàn)了錯誤以后整個測試就停下來并且要手動從頭開始,這里可以進行二次開發(fā)掷倔,第一種讓某個錯誤出現(xiàn)的時候選擇自動重新跑腳本眉孩,這種場景適用于前面的按鈕跟后面的按鈕不在同一個頁面上,沒有點擊到前面的按鈕,后面的按鈕也不會出現(xiàn)浪汪,第二種將錯誤記錄巴柿,再跑接下來的腳本,這種場景適用于兩個按鈕都在同一級頁面死遭,相互間影響不大可以先觸發(fā)后面的按鈕進行測試广恢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呀潭,隨后出現(xiàn)的幾起案子钉迷,更是在濱河造成了極大的恐慌,老刑警劉巖钠署,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糠聪,死亡現(xiàn)場離奇詭異,居然都是意外死亡谐鼎,警方通過查閱死者的電腦和手機舰蟆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來该面,“玉大人夭苗,你說我怎么就攤上這事「糇海” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵傍菇,是天一觀的道長猾瘸。 經(jīng)常有香客問我,道長丢习,這世上最難降的妖魔是什么牵触? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮咐低,結(jié)果婚禮上揽思,老公的妹妹穿的比我還像新娘。我一直安慰自己见擦,他們只是感情好钉汗,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鲤屡,像睡著了一般损痰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酒来,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天卢未,我揣著相機與錄音,去河邊找鬼。 笑死辽社,一個胖子當(dāng)著我的面吹牛伟墙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播滴铅,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼戳葵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了失息?” 一聲冷哼從身側(cè)響起譬淳,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盹兢,沒想到半個月后邻梆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡绎秒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年浦妄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片见芹。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡剂娄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玄呛,到底是詐尸還是另有隱情阅懦,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布徘铝,位于F島的核電站耳胎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惕它。R本人自食惡果不足惜怕午,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淹魄。 院中可真熱鬧郁惜,春花似錦、人聲如沸甲锡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搔体。三九已至恨樟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疚俱,已是汗流浹背劝术。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人养晋。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓衬吆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绳泉。 傳聞我的和親對象是個殘疾皇子逊抡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355