閱讀33 返回首頁    go 阿裏雲 go 技術社區[雲棲]


UI自動化框架調研-番外篇

導語

前麵寫了兩篇文章介紹了個人基於Macaca在UI自動化上的實踐心得,那我們為什麼會選擇了Macaca呢,這篇文章將簡單介紹一下我們選擇Macaca的原因。

有哪些可用的UI自動化框架?

frameworks

他們的區別在哪裏?

compare

我們是如何選擇的?

條件1:支持移動端app自動化

從以上對比其實已經可以比較明確的幫助大家做出自己的選擇,從我所在的團隊來講,我們主要做的是移動端的UI自動化,相信現在大多數同學所做的也都是這一類的自動化,因此,僅限於PC端webApplication的幾個框架就不可避免的要排除掉了,這其中包含Selenium,PhantomJS,以及KARMAR。

條件2:支持多平台自動化

此外,對於移動端的UI自動化,我們希望可以同時覆蓋安卓以及iOS平台,最好是一套腳本能同時在兩個端上跑,鑒於此,隻提供單一平台的Selendroid,Robotium可以暫時不用考慮了。

條件3:學習成本低

經過上麵兩次篩選,我們的選擇剩下了Macaca && Appium && Calabash,這其中,Macaca以及Appium都是支持多語言的,Appium支持的最多,包含了Ruby Python Java Js OC PHP C#(.Net)這些幾乎所有主流的語言,Macaca目前支持Js Java以及Python,也能基本滿足需要,相比之下,Calabash隻支持Ruby,這個對團隊是有一定的挑戰的,因為我們的團隊大家基本上以Java技術棧為主,如果采用Ruby,意味著所有的同學都要先學習一下這門語言,這個成本對於我們這樣的團隊而言成本是很高的,因此,Calabash也從我們的待選list中刪除。

最後的抉擇

經過三輪篩選,目前擺在我們麵前的有兩個選擇,Appium && Macaca,經過一段時間的對比調研,我們最終選擇了Macaca,主要考慮因素如下:

  1. 周邊工具支持

    相對Appium,Macaca提供了更加全麵的周邊工具支持,這其中包含可持續集成平台Reliable,元素查找工具app-inspector,腳本錄製工具UI-Recorder等。

    Reliable持續集成平台可以幫助我們進行用例的管理以及任務的調度,對於UI自動化,隻有當他成為一種規範化的程式定期的觸發與執行,這樣才能發揮他的作用,因此,一個持續集成係統對於自動化的長期發展是必不可少的,而Appium並沒有提供這套係統,這意味著我們需要從無到有的搭建自己的一套持續集成環境,這個投入無疑也是巨大的。

    app-inspector 元素查找工具,極大的方便了控件的查找以及定位。

    UI-Recorder腳本錄製工具可以快速的通過錄製得到腳本,方便新手入門。

    具體的使用可以參考官方網站,都有詳細的介紹。

  2. 輕量

    從功能上來講,Appium較Macaca是有優勢的,Appium已經發展了多年,積累了很多經驗,但是也造成了一些尾大不掉的毛病。以對安卓API版本的支持為例,Appium支持所有的安卓API版本,而Macaca隻支持API>17(相當於Android4.2係統)的版本,這個跟兩者的底層原理有關,Macaca對於安卓的支持是基於安卓sdk的UIAutomator框架,而這個框架是從API 17開始支持的,Appium從最早的安卓開始,對於API 17以上的版本,Appium與Macaca一樣是基於UIAutomator的,對於API 17以下的版本,Appium則基於老的instrument,對於這部分的支持,還引入了Selendroid。但是從應用的角度講,Android7已經發行,4.2係統以下的設備占比不大,我們不希望為了支持這部分少量的機型而增加自己在自動化上的工作量。簡單來講,大而全的並不一定是最好的,關鍵是找到適合自己的。

  3. 社區活躍,中文文檔豐富

    Macaca是由阿裏集團開源的框架,官方網站提供了中文版以及英文版雙語文檔,雖然對於開發者而言,閱讀英文文檔的能力是必須的,但是中文文檔的提供無疑能幫助很多基礎相對薄弱的同學快速入門。此外,Macaca團隊還提供了用於技術交流的微信群以及釘釘群,當遇到問題的時候可以方便的聯係到主創團隊的相關同學,這無疑也能給大家帶來很大的方便。

  4. 平台更豐富

    雖然Macaca和Appium同時都支持PC與移動端,但是Macaca新增了對於Electron應用的支持,這個是其他框架都不具備的,雖然作為一個Node.js小白我沒有接觸過相關的應用,但是相信對Electron的開發者以及測試同學來說,這是一個不錯的選擇。

  5. API的統一性

    研究過Appium的官方API,以java-client為例,針對iOS和安卓,控件以及Driver等類別都根據平台不同而不一樣,對於控件,有AndroidElement,IOSElement,對於Driver,有AndroidDriver,IOSDriver,如果我們的用例要支持多平台,就需要處理多種平台不一致性,但Macaca從底層上就沒有區分iOS與安卓,基本上除了各自係統特有的幾個API以外都可以通過一個統一的API支持,這就方便了很多。

參考資料:

  1. Macaca官網
  2. Appium testerHome中文文檔
  3. Selenium官網
  4. Sendroid官網
  5. Robotium官網
  6. PhantomJs官網
  7. Calabash官網
  8. KARMA官網

寫在後麵

上麵總結了一下自己在調研並選擇UI自動化框架中的一些思考,希望能給處於UI自動化調研初期的同學們一些幫助,其中很多選擇是出於自身業務的需要,僅供參考,希望大家能結合自身業務的需要,找到適合自己的UI自動化框架。個人水平有限,以上觀點有不對的地方還請大家多多指正與包涵。

最後更新:2017-06-05 11:32:32

  上一篇:go  Word Sequence To Document Distances 實踐與優化
  下一篇:go  基於OGG Datahub插件將Oracle數據同步上雲