一雷激、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)缺點
以上主流工具的優(yōu)點跟缺點:
相較于以上工具來說券膀,Airtest有以下優(yōu)點和缺點:
所以其實基于圖像識別的Airtest更適合用于游戲測試多一點。
四驯遇、環(huán)境的搭建
1.AirtestIDE的下載
AirtestIDE已經(jīng)幫你集成了所有的環(huán)境芹彬,自帶錄制腳本欄,自動生成腳本妹懒,自帶編輯器還自帶模擬器雀监,有了一個AirtestIDE就可以輕松簡單的錄制腳本了。下載地址是Airtest的官網(wǎng):
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ù)的東西踩官。
那么問題來了却桶,怎么樣才能夠讓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)容”)來自動進行輸入操作舌涨,是不是很簡單省事?
除了以上這些扔字,我們還可以往腳本里面加入斷言囊嘉,然后利用Airtest一鍵生成測試報告,如圖3所示革为,這種報告不僅可以讓你快速了解到你測試的哪個步驟出錯了扭粱,而且同時也便于判定UI有沒有展示異常,但是Airtest有一個缺陷震檩,就是只要某張圖片識別不出來琢蛤,整個腳本錄制進程就會停止,后面的控件就不會再去識別抛虏,報告也只會停留在失敗的那一步博其,生成報告可以點報告按鈕或者ctrl+l,報告以網(wǎng)頁的形式呈現(xiàn)嘉蕾,如下圖:
總結(jié)
??Airtest操作比較簡單贺奠,基本上不涉及到代碼,所以非常適合剛?cè)腴T沒什么測試經(jīng)驗的人利用這個工具做UI自動化測試错忱,同時Airetest又提供了開源的API儡率,讓資深測試工程師可以基于Airtest的框架上再做高級的定制化擴展功能。
??如果說這個軟件有存在不足的地方以清,個人認為就是不支持?jǐn)帱c續(xù)傳儿普,如果測試中出現(xiàn)了錯誤以后整個測試就停下來并且要手動從頭開始,這里可以進行二次開發(fā)掷倔,第一種讓某個錯誤出現(xiàn)的時候選擇自動重新跑腳本眉孩,這種場景適用于前面的按鈕跟后面的按鈕不在同一個頁面上,沒有點擊到前面的按鈕,后面的按鈕也不會出現(xiàn)浪汪,第二種將錯誤記錄巴柿,再跑接下來的腳本,這種場景適用于兩個按鈕都在同一級頁面死遭,相互間影響不大可以先觸發(fā)后面的按鈕進行測試广恢。