前言
自動化測試,對於普通人來說,似乎是一種很高深的技術——它可以自動對UI操作,可以自動記錄用戶行為,甚至可以定時開始,聽起來很厲害很高級。但實際上呢,自動化只不過是測試大佬們拿來假裝自己逼格比較高的玩意,如果你理解了它的模式,揭開它的面紗后,你就會發現,自動化也不過如此。
自動化測試又大致分為UI自動化和接口自動化兩種。其中UI自動化,即用腳本代替人工在app/游戲上點點點;而接口自動化(在游戲行業被稱為協議自動化),即跳過客戶端直接通過接口/協議與服務端接照指定流程進行對話。兩種自動化一個側重於客戶端使得其通俗易懂,一個側重於服務端而讓其更艱難晦澀;但是UI自動化中其實包含了接口自動化,而接口自動化又因為拋棄了UI變得更輕便。
在此,我們主要講解下UI自動化。UI自動化,之前可能需要一定的代碼基礎才能參與進來,但在airtest發布之后,這一硬件要求也跟着大大地降低了。Airtest的傻瓜式設計,使得其可以跳過渲染樹節點定位,直接以圖片識別的形式去定位,讓自動化變得十分簡單,你只要根據要求截好對應的圖片,在准備完自動化流程后,點擊一下開始,自動化便開始了
腳本文件的創建
首先需要創建腳本文件,airtest提供了兩種格式的文件——.air后綴和.py后綴
雖說分開了兩種,但兩者之間的差別其實不是很大(.air文件最終也是轉換成.py文件執行),具體選擇哪個看個人喜好,個人比較喜歡純python文件,因此創建的為.py后綴的文件
設置文件保存的路徑及文件名
設定好之后直接點擊下方的ok按鈕,airtest即會自動生成如下的python文件
設備的連接
設備的連接這里就不細講了,直接用connect連接便可,若發現連接失敗,嘗試點擊connect右側的下拉框選擇use javacap或者其它
腳本的編寫
airtest腳本的編寫變得非常簡單,基本上只要了解python的while/for循環、等待,就可以應對大多數的腳本編寫
以騰訊動漫舉個例子,為其設定一個自動化需求為:
1.打開app
2.登錄
3.跳轉到QQ授權界面取消授權
4.再登錄
5.跳轉到QQ授權界面確定授權
6.登錄成功
7.搜索漫畫“屍兄”
8.退出登錄
9.不停重復登錄到退出之間的操作以確定是否有問題
當然,app的自動化目前主流是appium,不過airtest的純UI識別也是可以做app的自動化,因此在此用更為方便的app,而不是游戲
我們首先進行需求分析,“不停重復登錄到退出之間的操作”說明我們需要使用的是while循環,而前面的流程我們只需要按順序寫好就行了
打開app(最好是用package名去打開,這里因為懶得去翻騰訊動漫的包名,便直接以ui識別的形式打開):
打開我們只需要點擊一次app即可,因此
先點擊左側的touch按鈕,點擊后會出現截圖的效果,直接移動到騰訊動漫的圖標上,把動漫的圖標截圖下來,airtest會自動在.py文件上生成touch代碼
由於打開app需要等待一段時間讓app初始化一下,大概5秒,我們但要引入python的等待time.sleep(5):
跳轉到登錄頁簽:
再將while True寫上:
我們手動將app打開,再對后續的步驟每一步用airtest截好對應的操作圖:
“點我登錄”
跳轉到登錄方式后,我們要點擊QQ登錄
后續的都是這樣一步一步截圖即可,這里就暫略了
腳本的執行
腳本的執行只需要點擊上方對應的三角按鈕即可
LOG
對於不太懂python的人來說,log查看窗打印的東西可能看不懂,因此有參考價值的只有報錯時間(哪一步的報錯會直接在代碼出置紅顯示)