一篇文章帶你快速上手Airtest

此文章來源於項目官方公衆號:AirtestProject
原文地址:airtest.doc.io.netease.com/tutorial/1_…
在公衆號菜單欄能夠獲取Airtest和Poco的項目源碼地址html

前言

本文檔將演示使用AirtestProject專用的編輯器AirtestIDE,編寫Airtest+Poco自動化腳本的全流程。強烈建議新手從本文檔開始閱讀,並使用AirtestIDE上手腳本編寫。python

簡介

AirtestIDE 是一個跨平臺的UI自動化測試編輯器,適用於遊戲和App。android

  • 自動化腳本錄製、一鍵回放、報告查看,垂手可得實現自動化測試流程
  • 支持基於圖像識別的Airtest框架,適用於全部Android/iOS/Windows應用
  • 支持基於UI控件搜索的Poco框架,適用於Unity3d,Cocos2d與Android/iOS App等多種平臺
  • 可以運行在Windows和MacOS上

訪問官網經過視頻查看更多特性。ios

Image of IDE Overview

經過本教程,你將學會如何上手自動化測試(或者寫點腳原本自動玩遊戲)。相信我,這個過程會很是愉快~git

安裝

目前AirtestIDE提供了Windows和Mac兩個版本的客戶端,請從官網下載,解壓即用。github

鏈接設備

AirtestIDE目前支持測試Android/Windows/iOS上的應用,其餘更多平臺的支持正在開發中。shell

不管是Android/iOS手機,仍是Windows窗口,在Airtest中都將它視爲一個設備,接下來咱們將演示如何鏈接一個設備windows

鏈接Android手機

經過ADB鏈接你的電腦和Android手機,便可開始調試Android應用。ADB是Google官方提供的Android調試工具。AirtestIDE依賴ADB與安卓設備進行通訊。瀏覽器

打開AirtestIDE,按照如下步驟進行鏈接:bash

  1. 打開手機設置-開發者選項-USB調試開關,參考安卓官方文檔
  2. 在AirtestIDE設備面板中點擊refresh ADB按鈕,查看鏈接上的設備
  3. 若是沒有顯示出設備,試試restart ADB,若是還不行,參考FAQ文檔進行問題排查
  4. 可以成功看到設備後,點擊對應設備的Connect按鈕,進行初始化

鏈接安卓手機

手機鏈接成功後,便可在AirtestIDE中看到手機屏幕的鏡像顯示,並進行實時操做。

若是手機鏈接失敗,請先參考FAQ文檔進行問題排查。若依然不成功,請將手機型號和AirtestIDE後臺報錯提交到Github Issue,開發人員會盡快修復。因爲Android手機的碎片化問題嚴重,咱們很是感謝您的反饋能夠幫助這個項目作的更好。

鏈接Windows窗口

對於Windows桌面程序的測試,AirtestIDE能夠將被測窗口嵌入,方便腳本錄製和調試。

  • 在AirtestIDE設備面板中點擊Windows-框選遊戲窗口按鈕
  • 將鼠標移動到被測程序的窗口上,會顯示綠色邊框,將對應的窗口框出
  • 點擊左鍵便可將對應的窗口嵌入到AirtestIDE中

鏈接Windows窗口

若是上述方法不能正確找到被測程序的窗口,你還能夠使用備用嵌入方法

鏈接iOS手機

要鏈接一臺iOS手機,你須要先準備好一臺安裝了Xcode的Mac電腦,鏈接方法參考文檔

錄製自動化腳本

在連上設備後,咱們能夠開始錄製自動化測試腳本了,在接下來的內容中,咱們將會使用一臺Android設備上的一款Unity遊戲應用,給你們演示如何錄製腳本。

模擬輸入

讓咱們先從最經常使用的模擬點擊開始吧,模擬點擊的意思就是,模仿你的操做去點擊設備上的某個指定位置。

基於圖像識別

目前咱們支持經過圖像識別的方式,找到你想要點擊的位置並進行操做,這是基於Airtest這個框架實現的。

咱們能夠先看看如何自動錄製腳本:點擊AirtestIDE左側的Airtest輔助窗上的錄製按鈕,而後隨着你在設備窗口上操做手機,代碼會自動生成在代碼窗口中。

錄製GIF

立刻來驗證一下,點擊運行按鈕運行你的第一個自動化腳本吧!

若是你以爲自動錄製生成的圖標不夠精確,還能夠點擊Airtest輔助窗上的touch按鈕,而後在設備窗口上框選精確的圖標,也能夠自動生成一條touch語句。

框選錄制GIF

相似的模擬輸入操做還有滑動:點擊swipe按鈕,在設備窗口上框選精確的圖標做爲滑動起點,而後點擊滑動終點位置,即會自動生成一個swipe語句。

其餘模擬輸入的API包括:

  • text: 文字輸入
  • keyevent: 按鍵輸入,包括(HOME/BACK/MENU等)
  • sleep: 等待
  • snapshot: 截屏
基於UI控件

若是你發現圖像識別不夠精確,還可使用基於UI控件搜索的方式進行自動化測試,與剛纔的Airtest不一樣,這是Poco這個框架實現的功能。

目前Poco直接支持Unity3d、Cocos2d、白鷺引擎等多種遊戲引擎,以及Android/iOS原生App。

若是是Android/iOS原生應用,是即插即用的,無需接入SDK。但因爲遊戲引擎使用OpenGL等圖形接口直接渲染,而沒有使用Android原生的UI系統,咱們須要與遊戲的Runtime進行通訊獲取整個UI結構。

咱們提供了很是方便的SDK接入方法,點這裏查閱目前支持的平臺列表,以及如何爲你的項目接入Poco。

若是你的項目使用的引擎或平臺不在文檔中,咱們一樣支持自行擴展SDK

實際上在網易遊戲內部,咱們就是用這種方式支持了Messiah/NeoX/夢幻等多個自研引擎。

接入完成後咱們便可開始。手機啓動遊戲,在AirtestIDE中的Poco輔助窗切換模式至對應引擎類型,便可看到整個UI結構。

切換POCO模式.GIF

點擊錄製按鈕,而後隨着你的鼠標操做,會自動生成Poco語句到腳本編輯框中。

POCO自動錄製.GIF

一樣,你也能夠經過UI樹形結構更精確的檢視UI控件,雙擊節點自動生成Poco語句,或者自行選擇更好的寫法。

自動錄製出的語句不必定可以適應全部場景,採用更合理的選擇器編寫代碼,一般會加強整個自動化腳本的健壯性和可讀性,這是門學問

POCO自行選擇.GIF

錄製完腳本後記得運行試試效果。

對於Android/iOS的原生應用來講,不須要接入SDK便可使用,例如在連上Android手機後,將Poco輔助窗的模式切換至Android,能能夠看到整個UI樹形結構。

Android Poco.GIF

框架信息

上述兩種UI識別方式,分別是基於兩個框架:

  • 基於圖像識別的Airtest框架
  • 基於UI控件搜索的Poco框架

這兩個框架都是由咱們團隊開發的Python第三方庫,在實際項目使用經驗中,咱們發現二者互相配合會獲得最好的效果。在腳本編寫的過程當中,咱們每每也須要查閱它們的項目API文檔。

使用Python語法

整個AirtestIDE中錄製和運行的代碼都是基於Python語言。Python語法簡潔而強大,第三庫和工具也很是多。

對於新手,Python上手很是容易,學會基本語法便可寫出自動化腳本中所需的邏輯語句。

touch("開卡包.png")
if exists("獎勵面板.png"):
	for i in range(5):
		Poco("獎勵-%s" % i).click()

複製代碼

對於老手,你能夠在AirtestIDE中使用各類第三方庫來使你的自動化腳本更增強大,經過添加PYTHONPATH設置,可使用本地的python.exe來運行你的腳本。

除了輔助窗口裏面提供的語句,更多的API文檔,能夠查看AirtestPoco的倉庫。

斷言

到這裏,咱們已經有各類模擬輸入方法,配合邏輯控制語句讓手機動起來。自動化測試中還有很重要的一個步驟:結果驗證,那麼咱們來看看怎樣聲明斷言。

驗證UI界面

錄製方法與模擬輸入相似

  • assert_exists:斷言圖片存在
  • assert_not_exists:斷言圖片不存在

assert.GIF

驗證數值

經過Poco獲取屬性值,手寫代碼進行斷言

  • assert_equal:斷言相等
  • assert_not_equal:斷言不等

例如

# ... 模擬輸入並得到20分以後

value = Poco("分數按鈕").attr("num")
assert_equal(value, 20, "獲到20分")
複製代碼

查看測試報告

腳本運行完畢後,點擊查看報告按鈕(快捷鍵Ctrl+L),會使用默認瀏覽器打開結果報告頁面。報告中將展現出每個步驟的內容和實際執行過程的截圖、運行結果,方便查看步驟是否執行成功。

查看報告.GIF

命令行接口

如今,你已經學會自動化測試了。接下來呢,你可使用命令行接口將自動化測試與持續集成結合起來。持續集成是什麼?

在AirtestIDE運行腳本時,LOG窗口中會打印運行命令。

RunCMD.png

你能夠在不開啓IDE的狀況下,在命令行中使用那條命令來啓動測試腳本,例如:

"D:\迅雷下載\AirtestIDE\AirtestIDE" runner "D:\AirtestIDE_2018-01-24_83\untitled.air"  --device Android://127.0.0.1:5037/F8UDU16409004135 --log "C:\Users\gzliuxin\AppData\Local\Temp\AirtestIDE\scripts\cdfc40e8c297b6ad88e09de64d8bafa3"
複製代碼

使用AirtestIDE你能夠輕鬆的錄製出測試腳本,保存爲.air腳本。請注意一個.air腳本中不要包含太多內容,用良好的腳本命名和目錄結構來組織你的腳本,覆蓋全部測試點。

你還能夠在不一樣電腦上針對不一樣設備運行測試, 這時候你就須要用命令行運行 .air 腳本 。 對於多平臺發佈的產品,靈活使用跨平臺API和命令行,還可讓同一套測試腳本運行在Android和Windows上進行測試。

在網易遊戲內部,咱們的大型遊戲一般會有數百個測試腳本,覆蓋經常使用的玩法測試。每週,這數百個腳本會分別運行在200臺手機上進行兼容性測試。

想查看更多教程和項目的相關信息,歡迎關注咱們項目的官方公衆號AirtestProject查看往期教程:

相關文章
相關標籤/搜索