Android自動化測試解決方案

來源:互聯網
上載者:User

標籤:android

 現在,已經有大量的Android自動化測試架構或工具可供我們使用,其中包括:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric。另外LessPainful也提供服務來進行真實裝置上的自動化測試。

  Android自身提供了對instrumentation測試的基本支援,其中之一就是位於android.test包內的ActivityInstrumentationTestCase2類,它擴充了JUnit的TestCase類來提供Android activities的功能測試。在應用測試中,每一個activity首先會被Instrumentation初始化,然後再載入到Android模擬器或裝置的Dalvik虛擬機器中來執行。

  Android SDK內建一個測試載入器MonkeyRunner,它提供的API和執行環境可以運行Python語言編寫的測試代碼。它提供API來串連裝置,安裝/卸載應用,運行應用,截屏,比對圖片來判斷特定命令執行後的螢幕是否包含預期資訊,以及運行對應用的測試。MonkeyRunner使用ActivityInstrumentationTestCase2, ProviderTestCase,ServiceTestCasek, SingleLaunchActivityTestCase及其他類來定義測試案例,並使用InstrumentationTestRunner類來運行測試。

  Robotium是另一種通過InstrumentationTestRunner來完成Android互動式測試的架構,它橫跨多個activities,支援功能測試,系統測試和接收測試。Robotium支援Activities、Dialogs、Toasts、Menus、Context Menus甚至Honeycomb,並且它可以同Maven和Ant整合來完成持續整合測試。Robotium被稱之為針對Android應用的又一個Selenium。

  Robolectric另闢蹊徑,它並不依賴於Android提供的測試功能,它使用了shadow objects並且運行測試於普通的工作站/伺服器JVM,不像模擬器或裝置需要dexing(Android dex編譯器將類檔案編譯成Android裝置上的Dalvik VM使用的格式),打包,部署和啟動並執行過程,大大減少了測試執行的時間。Pivotal實驗室聲稱使用Robolectric可以在28秒內運行1047個測試。

  LessPainful將Android測試又推進了一步,它提供了一個多裝置平台自動化測試的服務。使用者上傳應用(*.apk)和用Cucumber(一種業務相關的DSL)編寫的測試檔案,選擇測試回合需要的裝置配置,最後測試將自動執行並產生測試報告。它支援的裝置包括Garmin Asus,幾款HTC,LG,Samsung Galaxy,Sony Xperia和Motorola Motodefy。

  為了瞭解更多LessPainful提供的服務細節,我們採訪了LessPainful公司的CEO Jonas Maturana Larsen。下面就是這次簡短的訪問:

  InfoQ:在不同版本的Android上運行應用程式,存在什麼問題?為了保證程式能正常運行,開發人員需要在Android的每一個版本上測試他的應用嗎?

  JML:舉個例子,SAXParser在Android 2.2之前有一個bug存在於對ContentHandler.startElement的回調中,它導致應用產生錯誤的行為。

  到目前為止,我們已經在很多方面發現了不同作業系統版本間的差異性。其中一些可能在2.1-update1上導致崩潰,但可以正常運行於2.1-update3和2.2.

  InfoQ:不同的裝置對Android來說,有沒有真正的區別?你能否給我們舉個例子,比如Android2.2應用可以運行在HTC但不能運行於Samsung?(或其他各種Android版本和裝置製造商的組合)

  JML:在LG手機,HorizontalScrollViews有時會導致子視圖上的背景圖片消失。這個問題存在於我們測試的所有的LG手機,不管Android版本是多少。

  如果你不自己處理這類問題,它將導致你的應用在不同裝置上不盡相同。例如,Motorola將會用紅色邊框來高亮一個輸入欄位。在我曾經參與的一個項目中,我們用同樣的紅色邊框來表示輸入有誤。

  還有一些問題,與其說和製造商相關,不如說是和硬體相關:比如,一些手機使用了較小的RAM和高解析度的網路攝影機,當你處理手機上的映像時就會將導致崩潰。

  InfoQ:這些測試是如何執行的?

  JML:測試就如同運行一個ActivityInstrumentationTestCase2,主要使用Robotium來運行。我們對應用所做的唯一修改就是去掉已有的簽名,再為它重建我們的簽名檔案。

  在測試回合完成後,應用會被卸載,而手機也會被恢複到初始設定。

  InfoQ:與MonkeyRunner,Robotium和Robolectric相比,你們所提供的服務有什麼優勢呢?

  JML:LessPainful是一種服務,而並不僅僅是一種架構。我們希望建立一種服務,不但使測試能夠進行,並且比起其他任何一種架構,它能夠節省我們大量測試時間,還能夠協助我們發現更多的bug。

  另外,我們相信使用Cucumber,可以清晰地定義高層次測試描述,同時可以更好地被Team Dev以外的人員共用。

  以Git領域為例,我們更希望成為像是GitHub那樣,而不只是通常的git庫。

  InfoQ:你們有計劃未來要支援更多的裝置嗎?

  JML:是的。我們計劃繼續增加對更多裝置的支援。如果有這樣的要求提出,我們就會努力完成它。

  目前,我們也在著手於對iOS裝置的支援,希望beta版能在今年秋季發布。

  InfoQ:什麼是LessPainful企業版?

  JML:我們將提供一個工具集,它就類似於一個Mac Mini,但我們會非常靈活的滿足顧客的需求。LessPainful企業版目前還沒有正式推出,所以敬請期待。

  英文原文:Automated Testing Solutions for Android


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.