關於Airtest的使用探索

1、Airtest的簡介

  Airtest是網易出品的一款基於圖像識別和poco控件識別的一款UI自動化測試工具。Airtest的框架是網易團隊本身開發的一個圖像識別框架,這個框架的祖宗就是一種新穎的圖形腳本語言Sikuli。Sikuli這個框架的原理是這樣的,計算機用戶不須要一行行的去寫代碼,而是用屏幕截屏的方式,用截出來的圖形擺列組合成神器的程序,這是Airtest的一部分。
  另外,Airtest也基於poco這個U控件搜索框架,這個框架也是網易自家的跨平臺U測試框架,原理相似於appium,經過控件的名稱,id之類的來定位目標控件,而後調用函數方法,例如click(),swip()之類的方法來對目標控件進行點擊或者是操做。html

2、關於自動化測試

  概念:自動化測試,就是把繁雜的人工測試用例利用自動化測試工具編寫成代碼,讓機器代替人工自動跑用例的過程。實際上就是把以人爲驅動的測試行爲轉化爲機器執行的一種過程。
  意義:節省人力、物力、時間、硬件資源等,提高測試效率,特別對於繁瑣重複的測試用例,可使測試人員更專一於新的測試模塊的創建和開發,從而提升測試覆蓋率。python

3、市面上常見的UI自動化測試工具以及優缺點

 
image.png

以上主流工具的優勢跟缺點:android

 
image.png

相較於以上工具來講,Airtest有如下優勢和缺點:api


 
image.png

因此其實基於圖像識別的Airtest更適合用於遊戲測試多一點。bash

4、環境的搭建

1.AirtestIDE的下載
AirtestIDE已經幫你集成了全部的環境,自帶錄製腳本欄,自動生成腳本,自帶編輯器還自帶模擬器,有了一個AirtestIDE就能夠輕鬆簡單的錄製腳本了。下載地址是Airtest的官網:app

http://airtest.netease.com/框架

AirtestIDE的使用教程跟文檔也在下面的鏈接中:編輯器

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

若是你想要利用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,詳細的配置教程網上有,這裏不詳細說了。 

而後再下載一個Python的編輯器來編輯代碼,我的推薦使用的是pycharm。接下來就是使用官方提供的啓動demo代碼:

from airtest.core.api import *
# 經過ADB鏈接本地Android設備 connect_device("Android:///") #安裝待測軟件apk,路徑信息。 install("path/to/your/apk") #開始運行app start_app("com.pingan.certicationApp") #點擊某個圖片,Airtest中基於圖像識別語法,圖片本身提供。 touch(Template("image_of_a_button.png")) #滑動語音,開頭圖片跟結尾圖片 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") 

以上已經添加了每一句做用的註釋,小夥伴們能夠動手試一下將程序跑起來,固然若是說易操做性仍是AirtestIDE比較容易上手一點。

5、AirtestIDE的真實場景運用

以上介紹了那麼多的就來說一下實際操做,以平安的智能雙錄app爲例子,首先咱們先來看一下用例步驟:

  • 一、點擊雙錄列表待上傳頁面的從新錄製按鈕
  • 二、進入錄製後點擊開始錄製按鈕
  • 三、點擊錄製完成
  • 四、點擊確認完成
  • 五、在彈框中點擊「確認」
    首先鏈接設備並進行錄製:


     
    image

而後咱們用IDE開始錄製腳本,先截取每個按鈕的圖片,進行touch操做,如圖1,左邊就會產生每張被截取的控件的樣式。

以後機器就會在整個界面中取一張截屏,而後在截屏中尋找咱們截取的那個部分,而後再定位到圖片的位置,對圖片進行點擊的操做,從而達到經過圖像識別進行測試的自動化,固然基於圖像識別的方式比較難進行輸入值的操做,比較適合一些重複繁瑣的按鈕點擊事件。意思就是說這種經過截取圖像再的方式並非很適合用來作登陸類的須要用戶輸入數據的東西。

 
圖1

那麼問題來了,怎麼樣纔可以讓Airtest也精準定位到輸入框,從而完成自動輸入信息類型的自動化測試呢?其實咱們別忘了Airtest還有基於poco這個UI控件搜索框架,因此若是是Android類的app,仍是比較適合用poco來定位控件的位置,從而實現自動化,下面有一個智能雙錄軟件新建保單的測試用例:

  • 一、點擊新建雙錄按鈕進入新建雙錄頁面
  • 二、隨機輸入000開頭的14位保單號
  • 三、輸入投保人姓名
  • 四、輸入投保人證件類型
  • 五、輸入投保人證件號
  • 六、輸入保險產品
  • 七、輸入被保人倖免
  • 八、選擇銷售渠道、產品類型、繳費頻次
  • 九、填寫繳費期、每期保費、保險期間
  • 十、勾選雙錄材料

如圖2所示,只要點擊AirtestIDE左上角,Android旁邊的錄製按鈕,而後只要點擊右邊模擬器的響應的控件,就會幫你自動定位那個控件的位置,而後再選擇動做事件,例如:點擊chlick(),滑動swipe()之類的操做,若是要輸入字符的話,能夠經過先選中須要輸入內容的輸入框,而後再用test(「要輸入的內容」)來自動進行輸入操做,是否是很簡單省事?

 
圖2

除了以上這些,咱們還能夠往腳本里面加入斷言,而後利用Airtest一鍵生成測試報告,如圖3所示,這種報告不只可讓你快速瞭解到你測試的哪一個步驟出錯了,並且同時也便於斷定UI有沒有展現異常,可是Airtest有一個缺陷,就是隻要某張圖片識別不出來,整個腳本錄製進程就會中止,後面的控件就不會再去識別,報告也只會停留在失敗的那一步,生成報告能夠點報告按鈕或者ctrl+l,報告以網頁的形式呈現,以下圖:

 
圖3

總結

  Airtest操做比較簡單,基本上不涉及到代碼,因此很是適合剛入門沒什麼測試經驗的人利用這個工具作UI自動化測試,同時Airetest又提供了開源的API,讓資深測試工程師能夠基於Airtest的框架上再作高級的定製化擴展功能。
  若是說這個軟件有存在不足的地方,我的認爲就是不支持斷點續傳,若是測試中出現了錯誤之後整個測試就停下來而且要手動從頭開始,這裏能夠進行二次開發,第一種讓某個錯誤出現的時候選擇自動從新跑腳本,這種場景適用於前面的按鈕跟後面的按鈕不在同一個頁面上,沒有點擊到前面的按鈕,後面的按鈕也不會出現,第二種將錯誤記錄,再跑接下來的腳本,這種場景適用於兩個按鈕都在同一級頁面,相互間影響不大能夠先觸發後面的按鈕進行測試。

連接:https://www.jianshu.com/p/32d08455e86f來源:簡書

相關文章
相關標籤/搜索