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

一、Airtest的簡介

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

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

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

三、市面上常見的UI自動(dòng)化測試工具以及優(yōu)缺點(diǎn)

image.png

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

image.png

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


image.png

所以其實(shí)基于圖像識別的Airtest更適合用于游戲測試多一點(diǎn)。

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

1.AirtestIDE的下載
AirtestIDE已經(jīng)幫你集成了所有的環(huán)境,自帶錄制腳本欄,自動(dòng)生成腳本,自帶編輯器還自帶模擬器,有了一個(gè)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,詳細(xì)的配置教程網(wǎng)上有,這里不詳細(xì)說了。

然后再下載一個(gè)Python的編輯器來編輯代碼,個(gè)人推薦使用的是pycharm。接下來就是使用官方提供的啟動(dòng)demo代碼:

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

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

五、AirtestIDE的真實(shí)場景運(yùn)用

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

  • 1、點(diǎn)擊雙錄列表待上傳頁面的重新錄制按鈕
  • 2、進(jìn)入錄制后點(diǎn)擊開始錄制按鈕
  • 3、點(diǎn)擊錄制完成
  • 4、點(diǎn)擊確認(rèn)完成
  • 5、在彈框中點(diǎn)擊“確認(rèn)”
    首先連接設(shè)備并進(jìn)行錄制:


    image

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

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

圖1

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

  • 1、點(diǎn)擊新建雙錄按鈕進(jìn)入新建雙錄頁面
  • 2、隨機(jī)輸入000開頭的14位保單號
  • 3、輸入投保人姓名
  • 4、輸入投保人證件類型
  • 5、輸入投保人證件號
  • 6、輸入保險(xiǎn)產(chǎn)品
  • 7、輸入被保人幸免
  • 8、選擇銷售渠道、產(chǎn)品類型、繳費(fèi)頻次
  • 9、填寫繳費(fèi)期、每期保費(fèi)、保險(xiǎn)期間
  • 10、勾選雙錄材料

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

圖2

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

圖3

總結(jié)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容