AI移動自動化測試架構設計(解讀)
理想種的移動UI自動化架構:
- 易于開發和維護
- 穩定性
- 執行效率
- 跨平台
- 跨應用
- 支援Hybrid(混合應用)
傳統的UI自動化架構(UIAutomator、Espresso、appium等),或多或少在這些方法做的不夠完美。
那麼理想中的架構應該是什麼樣的?
模拟使用者的操作,使用者在操作的時候是不需要知道控件的屬性(ID、name)的,它應該是一種所見即所得的操作。
是以,像Sikuli 、AirTest這樣的基于圖檔識别技術的測試架構就很好。
但是,它們也有一些不足:
- 準确率不足
- 沒有層次結構
- 代碼穩定性差
- 代碼可維護性差
如果,測試腳本可以變成這樣:

這個樣的腳本表達接近我們的自然語言。比如,點選标簽上的會員按鈕,就變成 find('tab').find('會員'),代碼的維護性也會變得很好。
要實作這樣的架構需要哪些技術:
- 圖像切割
- 圖像分類識别
- OCR文字識别
- 圖像相似度比對
- 像素點操作
圖像切割:可以把一整張圖檔切割出不同的塊,比如一張App的截屏,可以切割成導航欄、視訊封面清單、搜尋框等不同的塊。
圖像分類識别:對上面切割的塊進行分類,需要圖像分類的能力。
OCR文字識别:依賴圖像 OCR 的識别能力,知道對應的視圖裡面有哪些文字。
圖像相似度比對能力:這一點傳統的圖像處理庫就可以實作。比如Python的pillow庫。
像素點的操作:可以依賴傳統的架構,比如通過坐标完成操作,也可以使用機械臂來完成像素點的操作。
深度學習帶來的機會
在深度學習以前,圖像分類領域的準确率一定在75%以下,引入深度學習使準确率提高到98%、99%。有文章說準确率達到95%說明已經超過人類了,這是一個相當高的水準。
識别率在逐年提高。
ORC的能力主要展現在:完整準确率和文字準确率。
完整的準确率是指,在一個截圖裡面,會有一些标題和詞組,如果标題裡面有一個字出現了錯誤,就認為這個标題的識别是錯誤的,通過這種方式,準确率能夠達到93%。
文字的準确率,是将一張截圖分割成多個塊,然後識别出每個塊上的文字。因為已經分割了塊,是以識别率可以達到98%。
終于介紹到AIon架構了。
有了上面這些技術做為基礎以後,就可以嘗試AIon架構實作了。
這中間還介紹了UI2Code 、pix2code兩個“類似”架構的。它們是将截圖生成使用者界面代碼,感興趣可以百度了解。
這裡直接介紹Alon的工作方法。敲黑闆!這裡考試重點。
AIon 會把一個截圖切成幾塊:tab、導航、狀态欄等,然後用深度學習圖像分類,對每一塊進行分類識别,識别完了以後,就會把對應塊裡的子元素提取出來,再用一些AI的技術,提取裡面的内容,把它填充到子元素的屬性裡面去,最後就會得到二級視圖樹的結構,最後,就可以去做對應的點選操作了。
AIon的處理過程:
比如要實作一條測試用例,
首先截屏,對它進行場景判斷,場景判斷會應用到一些AI分類識别,識别出目前界面有沒有彈出對話,或者它是否是登陸頁的場景識别。場景識别完了以後,就會進行傳統的圖像切割,圖像切割完了以後,進行布局分類,布局分類也會應用到一些AI的技術,分類完了以後,進行子元素的提取,對這個子元素進行填充,填充會應用到一些AI的技術。
最後,當視圖樹建構完了之後,比對之前寫的測試用例裡面的條件進行比對,比對之後,執行測試用例,這就是整個AIon的核心流程。
由于考慮到之前的一些測試用例,還有一些傳統的測試架構寫的測試用例,本身還做了對傳統測試架構的融合。
AIon的處理過程中涉及到一些技術問題這裡就省略了,通篇閱讀下來有點像論文。強烈建議閱讀原文,我這裡隻是簡化了對原文的解讀。
從中get到了一些基于AI實作自動化架構的思路。未來的自動化測試肯定會越來越使用更簡單,功能更強大。要麼去實作AI自動化架構,要麼被AI自動化架構淘汰!你選吧!
閱讀原文