AI移動自動化測試框架設計(解讀)

聲明:原文出自「前端之巔」微信公衆號「愛奇藝基於AI的移動端自動化測試框架的設計」一文,做者:何梁偉,愛奇藝Android架構師。文章提供了一種基於AI算法的自動化測試框架AIon,該框架並未開源,目前搜索不到相關資料,但從做者的設計思路上很受啓發。前端


理想種的移動UI自動化框架:

  • 易於開發和維護算法

  • 穩定性微信

  • 執行效率架構

  • 跨平臺app

  • 跨應用框架

  • 支持Hybrid(混合應用)佈局

傳統的UI自動化框架(UIAutomator、Espresso、appium等),或多或少在這些方法作的不夠完美。學習


那麼理想中的框架應該是什麼樣的?

模擬用戶的操做,用戶在操做的時候是不須要知道控件的屬性(ID、name)的,它應該是一種所見即所得的操做。測試

因此,像Sikuli 、AirTest這樣的基於圖片識別技術的測試框架就很好。ui

可是,它們也有一些不足:

  • 準確率不足

  • 沒有層次結構

  • 代碼穩定性差

  • 代碼可維護性差

若是,測試腳本能夠變成這樣:

這個樣的腳本表達接近咱們的天然語言。好比,點擊標籤上的會員按鈕,就變成 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自動化框架淘汰!你選吧!

閱讀原文

相關文章
相關標籤/搜索