Android自動(dòng)化測(cè)試初探
現(xiàn)在已經(jīng)有大量的Android自動(dòng)化測(cè)試架構(gòu)或工具可供我們使用,其中包括:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric。
另外LessPainful也提供服務(wù)來進(jìn)行真實(shí)設(shè)備上的自動(dòng)化測(cè)試。
Android自身提供了對(duì) instrumentation測(cè)試的基本支持,其中之一就是位于android.test包內(nèi)的 ActivityInstrumentationTestCase2類,它擴(kuò)展了JUnit的TestCase類來提供Android activities的功能測(cè)試。在應(yīng)用測(cè)試中,每一個(gè)activity首先會(huì)被Instrumentation初始化,然后再加載到Android模擬 器或設(shè)備的Dalvik虛擬機(jī)中來執(zhí)行。
Android SDK自帶一個(gè)測(cè)試工具M(jìn)onkeyRunner,它提供的API和執(zhí)行環(huán)境可以運(yùn)行Python語(yǔ)言編寫的測(cè)試代碼。它提供API來連接設(shè)備,安裝/卸 載應(yīng)用,運(yùn)行應(yīng)用,截屏,比對(duì)圖片來判斷特定命令執(zhí)行后的屏幕是否包含預(yù)期信息,以及運(yùn)行對(duì)應(yīng)用的測(cè)試。MonkeyRunner使用 ActivityInstrumentationTestCase2, ProviderTestCase,ServiceTestCasek, SingleLaunchActivityTestCase及其他類來定義測(cè)試用例,并使用InstrumentationTestRunner類來運(yùn)行 測(cè)試。
Robotium是另一種通過 InstrumentationTestRunner來完成Android交互式測(cè)試的架構(gòu),它橫跨多個(gè) activities,支持功能測(cè)試,系統(tǒng)測(cè)試和接收測(cè)試。Robotium支持Activities、Dialogs、Toasts、Menus、 Context Menus甚至Honeycomb,并且它可以同Maven和Ant集成來完成持續(xù)集成測(cè)試。Robotium被稱之為針對(duì)Android應(yīng)用的又一個(gè) Selenium。
Robolectric另辟蹊徑,它并不依賴于 Android提供的測(cè)試功能,它使用了shadow objects并且運(yùn)行測(cè)試于普通的工作站/服務(wù)器JVM,不像模擬器或設(shè)備需要dexing(Android dex編譯器將類文件編譯成Android設(shè)備上的Dalvik VM使用的格式),打包,部署和運(yùn)行的過程,大大減少了測(cè)試執(zhí)行的時(shí)間。Pivotal實(shí)驗(yàn)室聲稱使用Robolectric可以在28秒內(nèi)運(yùn)行1047 個(gè)測(cè)試。
LessPainful將Android測(cè)試又推進(jìn)了一 步,它提供了一個(gè)多設(shè)備平臺(tái)自動(dòng)化測(cè)試的服務(wù)。用戶上傳應(yīng)用(*.apk)和用Cucumber(一種業(yè)務(wù)相關(guān)的DSL)編寫的測(cè)試文件,選擇測(cè)試運(yùn)行需 要的設(shè)備配置,最后測(cè)試將自動(dòng)執(zhí)行并生成測(cè)試報(bào)告。它支持的設(shè)備包括 Garmin Asus,幾款HTC,LG,Samsung Galaxy,Sony Xperia和Motorola Motodefy。