UI 自動化框架調研總結

dengliping 7年前發布 | 6K 次閱讀 用戶界面設計

導語

本篇文章將簡單介紹一下我們選擇Macaca的原因。

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

他們的區別在哪里?

我們是如何選擇的?

條件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自動化框架。

 

來自:https://testerhome.com/topics/6602

 

 本文由用戶 dengliping 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!