天天看點

內建AI的移動自動化測試

內建AI的

移動自動化測試

前一陣子小編看到了愛奇藝Android架構師的一篇文章《愛奇藝基于AI的移動自動化架構的設計與實踐》。介紹了了一種基于AI算法的自動化測試架構Aion,該架構融合了傳統圖像處理和深度學習方案。雖然目前該架構還未開源,但是給了小編很多啟發。

內建AI的移動自動化測試

《愛奇藝基于AI的移動自動化架構的設計與實踐》中的介紹圖

後來,小編調研過程中發現,Appium也已經在探索AI自動化測試的解決方案,目前已經提供了Appium分類器插件,将AI算法結合在元素定位上。

Q:

什麼是分類器

概括來說:分類器是用于機器學習/資料挖掘中學習或訓練出來的一個函數或者模型。

舉個例子,假如有一個小朋友,從來沒見過貓和狗,我們給他一堆貓貓狗狗的圖檔,并且告訴他可以看耳朵、眼睛、尾巴、鼻子等等來判斷的方法,每給他一張圖檔都告訴他這是貓或者這是狗,後來小朋友就學會了根據耳朵、眼睛、鼻子、尾巴等特征判别貓和狗的方法。這個方法,就是分類器。

內建AI的移動自動化測試

Appium中的分類器就是利用AI的方法判别圖示/圖形的一個方法。目前這個分類器已經可以識别105個圖示/圖形。

舉個例子,我們經常在各種APP中遇到搜尋框,可能會看到這樣的,那樣的,什麼樣子的都有。

內建AI的移動自動化測試

這些搜尋框的定位如果用傳統方法就要一個一個的去找id等方法,很麻煩。仔細觀察,可以發現搜尋框裡面都有一個放大鏡圖示,這個就可以用分類器去找到,然後調用click方法就可以點選到搜尋框區域了。

Q:

怎樣使用Appium AI插件

第一步,安裝Android SDK

小編比較推薦直接安裝Android Studio,因為裡面內建了Android SDK,Android Studio裡也有模拟器等工具可以在以後的測試中使用。

第二步,安裝Appium

最新的Appium已經是15.1版本了,直接官網下載下傳安裝應用安裝即可,省去了老版本一些複雜的配置步驟。

第三步,安裝Appium AI插件

可以在GitHub上找到,這個插件的安裝也很簡單,GitHub頁面上給出了npm指令(這裡需要先有node.js的環境),直接運作即可,如果遇到報錯可以切換源重試。

第四步,使用

下面小編提供一個示例代碼,用于打開今日頭條并根據AI定位到搜尋圖示點選,進而實作點選到搜尋框區域。進而減少了找元素id的時間。

from appium import webdriver
from time import sleep

CAPS = {
    "deviceName": " HONOR 9x",
    "automationName": "UiAutomator2",
    "platformName": "Android",
    "platformVersion": "9.0",
    "appPackage": "com.ss.android.article.news",
    "appActivity": "com.bytedance.news.schema.AdsAppActivity",
    "noReset": True,
    "unicodeKeyboard": True,
    "resetKeyboard": True,
    "customFindModules": {"ai": "test-ai-classifier"},
    "testaiConfidenceThreshold": 0.1,
    "shouldUseCompactResponses": False,
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', CAPS)
sleep(5)

# 用 Appium AI 插件定位到搜尋框
driver.find_element_by_custom("ai:search").click()
sleep(5)           

複制

在caps裡面有和平時使用的差別是增加了四個參數。其中automationName必須指定為‘UiAutomator2’或者是‘Espresso’,customFindModules必須指定為‘{"ai": "test-ai-classifier"}’;testaiConfidenceThreshold是機器學習中最低置信度的參數,預設值是0.2;shouldUseCompactResponses可以加快擷取插件的輸入過程。

寫在最後

最後的開頭,小編想說目前AI元素定位的缺點,就是Windows系統還不支援,因為Appium AI 插件需要一些系統依賴項來處理圖像,另外各種限制也限制也比較多,并沒有真正的內建到Appium中。希望早日能夠支援全平台下使用該AI插件,并且不斷擴充功能,也不僅僅限于元素定位。

在愛奇藝的AI移動端自動化測試的文章中寫到:結合AI的移動端自動化能夠利用 AI 解決更多問題,如頁面異常檢測、使用者行為預測,頁面預加載等。小編也非常看好AI在移動端測試中發現更多有價值、普通測試手段發現不了的問題。

在AI熱門和快速發展的今天

能夠将AI方法和測試結合

将會是軟體測試領域的一項重大突破