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


蘋果開發者福音:iOS自動化測試方案Galileo

Galileo 確實是個科學革命的偉人!
也因為這樣,我們給它起了這個智慧飽滿的名字Galileo。Galileo是天貓技術-手機天貓架構&體驗團隊曆時8個月傾情打造的,業界全新的iOS自動化測試方案。它與業界現有各種iOS自動化測試方案有著本質的區別,基於蘋果的各種黑科技,Galileo研發團隊著力打造了真正意義上的無線化、插件化、自動化的iOS測試工具鏈。




先通過幾個簡單的視頻向大家展示一下Galileo的強大功能。

  • 支持Instrument Javascript腳本 image

Galileo支持蘋果Instrument Javascript腳本
開發者可以通過Native代碼靈活擴展腳本接口,實現更加複雜的功能

  • 真正無線的自動化運行工具 image


1. 支持iOS8.0及iOS8.0以上係統的真機和模擬器
2. 支持通過app內部入口觸發執行自動化
3. 無需USB連接電腦
4. 內置Monkey業務,通過配置靈活控製Monkey邏輯
5. 對接掃碼,掃一掃即可運行UI自動化自測試

  • Galileo多屏互動-多機測試神器
  • 使用自主研發的全鏈路唯一標示技術同步定位元素
  • 支持多台真機同步測試
  • 支持同步點擊、同步滾動
  • 支持同步輸入
  • 支持WebView

  • 全新打造的腳本調試工具

    image


1. 支持真機和模擬器
2. 可實時查看app運行日誌
3. 實時執行自動化腳本,無需重新編譯
4. 實時查看App元素樹,高亮顯示選中元素,方便調試




  • 無線化
  1. 通過Framework集成到app內部
  2. 無需USB連接
  3. 支持通過掃碼運行自動化測試
  4. 支持通過GalileoPCTool調試工具運行自動化測試
  5. 支持通過服務端推送運行自動化測試
  6. 支持通過App內部入口運行自動化測試
  • 插件化
  1. 內存泄露監控插件
  2. CPU監控插件
  3. 卡頓監控插件
  4. 用戶自定義插件
  • 自動化
  1. 崩潰自動恢複執行
  2. 服務端定時推送執行
  3. 數據自動收集和上報




一. Galileo的設計原理:

  • Galileo整體係統設計 image

  • Galileo客戶端SDK設計 image

二. Galileo客戶端SDK:

Galileo客戶端SDK主要包含兩個庫GalileoCore和GalileoUltility,開發人員可以通過pod引入Galileo的客戶端SDK

  • GalileoCore

GalileoCore是Galileo的核心客戶端SDK,主要包含以下3部分功能:

  1. 模擬硬件級的屏幕觸摸事件,並提供相應的接口可以進行方便的調用
  2. 基於Accessibility對iOS的所有Native和web UI進行抽象,並進行了封裝,方便編寫自動化腳本時進行調用
  3. 基於JavascriptCore事項了Galileo的Javascript執行引擎,用於執行js自動化測試腳本

下麵js代碼是可以被GalileoCore執行的示例腳本代碼:

amkTest('[UIAAlert]同步處理alert和actionsheet',function(target, app){
        UIALogger.logMessage('返回首頁');
        UIAPage.currentPage().backToRoot();
        target.delay(2.0);

        target.onAlert(undefined);

        UIALogger.logMessage('進入Alert Controller頁麵');

        var currentPageElement = UIAPage.currentPageElement();
        var tableView = currentPageElement.withName('UITableView');
        var ele = tableView.scrollToElementWithName('Alert Controller');
        target.delay(2.0);
        ele.tap();
        target.delay(2.0);

        currentPageElement = UIAPage.currentPageElement();
        var eles = currentPageElement.arrayWithName('UITableViewCell');
        for(var index = 0; index < eles.length(); index++){
            var e = eles[index];
            e.tap();
            target.delay(2.0);
            app.alert().dismissWithButtonAtIndex(0);
            target.delay(2.0);
        }
        UIALogger.logMessage('返回首頁');
        UIAPage.currentPage().backToRoot();
        target.delay(2.0);
});
  • GalileoUltility

GalileoUltility是Galileo的工具庫,主要包含以下3部分功能:

  1. 與GalileoRobot守護程序進行通信,接受來自守護程序下發的指令,並執行對應的自動化操作
  2. 監控自動化執行過程中的內存、CPU、線程、卡頓等信息,並進行收集,開發和測試人員可以通過GalileoUltility提供的頂級浮窗在應用內直接查看這些信息
  3. 與Galileo PC端調試工具進行通信,執行調試工具傳輸的腳本,並將統計信息傳輸給調試工具

三. Galileo守護程序:

GalileoRobot守護程序是一個獨立的iOS客戶端程序,它可以接收voip推送消息,並會將推送的消息傳輸給被測試的集成了Galileo客戶端SDK的應用,我們提供了功能強大的web服務,便於使用者編輯需要推送給GalileoRobot的推送消息,另外也提供了自動定時推送的功能,可以讓開發者實現無人值守的自動化服務。

四. Galileo調試工具

Galileo調試工具是可以運行在Mac OSX和windows PC上的腳本調試開發工具,開發人員無需將手機連接電腦,隻需要保證手機和電腦在同一個局域網,即可進行自動化腳本的調試,另外使用Galileo調試工具也可以使用模擬器進行腳本調試,腳本開發人員可以使用任何工具進行腳本開發,然後隻需要在調試工具中點擊運行,即可立即將腳本傳輸到手機上執行,調試工具具有以下功能:
1. 在手機或者模擬器上實時執行js自動化腳本,無需使用xcode或者instrument,也無需重新編譯
2. 實時查看腳本執行日誌,了解腳本的執行情況
3. 調試工具提供了實時查看手機界麵元素的功能,極大的方便了開發人員編寫自動化腳本

五. Galileo服務端

為了達到真正的全自動化執行自動化測試和數據收集分析,我們為Galileo開發了對應的服務端和web界麵,該web服務主要有以下兩個功能:

  1. 管理用戶的自動化任務,並根據用戶的配置自動推送給對應的手機執行指定的腳本
  2. 自動從客戶端收集自動化執行過程中產生的性能和體驗數據,並進行聚類和分析,方便開發人員定位問題

下圖是使用Galileo的服務端對貓客進行內存泄露分析得到的數據:

image


通過Galileo服務端,開發和測試人員隻需要進行簡單的配置,其他的交由Galileo係統,應用的性能和體驗問題就可以在不斷地自動重複執行過程中暴露出來,開發人員不需要再盯著Instrument的數據流,喝杯咖啡的時間,也許困擾已久的性能問題就會浮出水麵。




在雙十一期間,Galileo自動化運行了3000多次,發現上百處崩潰問題,80多處嚴重的內存泄露問題,為天貓雙十一的客戶端穩定保駕護航。

同時,Galileo已經與手淘共同打造的Galileo多屏互動功能,技術的輸出極大提高了回歸測試的效率。阿裏旅行、UC也已經開始接入Galileo。

目前Galileo的服務端正在對接MTL的mcip係統,期望打造從開發提交代碼-> 觸發自動化測試-> 收集測試結果的一整條測試鏈路的持續集成係統。預計2017的年中,Galileo客戶端SDK將開源,回饋各位摯愛和開源社區。

原文鏈接

最後更新:2017-06-20 16:31:36

  上一篇:go  如何做一個高質量的網站頁麵?
  下一篇:go  AR算法原理及深度學習在計算機視覺中的應用