聲明:原文出自「前端之巔」微信公衆號「愛奇藝基於AI的移動端自動化測試框架的設計」一文,做者:何梁偉,愛奇藝Android架構師。文章提供了一種基於AI算法的自動化測試框架AIon,該框架並未開源,目前搜索不到相關資料,但從做者的設計思路上很受啓發。前端
易於開發和維護算法
穩定性微信
執行效率架構
跨平臺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框架實現了。
這中間還介紹了UI2Code 、pix2code兩個「相似」框架的。它們是將截圖生成用戶界面代碼,感興趣能夠百度瞭解。
這裏直接介紹Alon的工做方法。敲黑板!這裏考試重點。
AIon 會把一個截圖切成幾塊:tab、導航、狀態欄等,而後用深度學習圖像分類,對每一塊進行分類識別,識別完了之後,就會把對應塊裏的子元素提取出來,再用一些AI的技術,提取裏面的內容,把它填充到子元素的屬性裏面去,最後就會獲得二級視圖樹的結構,最後,就能夠去作對應的點擊操做了。
好比要實現一條測試用例,
首先截屏,對它進行場景判斷,場景判斷會應用到一些AI分類識別,識別出當前界面有沒有彈出對話,或者它是不是登錄頁的場景識別。場景識別完了之後,就會進行傳統的圖像切割,圖像切割完了之後,進行佈局分類,佈局分類也會應用到一些AI的技術,分類完了之後,進行子元素的提取,對這個子元素進行填充,填充會應用到一些AI的技術。
最後,當視圖樹構建完了以後,匹配以前寫的測試用例裏面的條件進行匹配,匹配以後,執行測試用例,這就是整個AIon的核心流程。
因爲考慮到以前的一些測試用例,還有一些傳統的測試框架寫的測試用例,自己還作了對傳統測試框架的融合。
AIon的處理過程當中涉及到一些技術問題這裏就省略了,通篇閱讀下來有點像論文。強烈建議閱讀原文,我這裏只是簡化了對原文的解讀。
從中get到了一些基於AI實現自動化框架的思路。將來的自動化測試確定會愈來愈使用更簡單,功能更強大。要麼去實現AI自動化框架,要麼被AI自動化框架淘汰!你選吧!