android經常使用自動化測試框架

目錄:android

  • Monkey
  • MonkeyRunner
  • Instrumentation
  • UiAutomator
  • Espresso
  • Selendroid
  • Robotium
  • Athrun
  • Appium

Monkey

Android SDK自帶的測試工具,在測試過程當中會向系統發送僞隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試,也有日誌輸出。實際上該工具只能爲程序作一些壓力測試,因爲測試事件和數據都是隨機的,不能自定義,因此有很大的侷限性。shell

$~: android shell monkey -p [project package name] -v [500]

 

MonkeyRunner

也是Android SDK提供的測試工具。嚴格意義上來講MonkeyRunner實際上是一個Api工具包,比Monkey強大,能夠編寫測試腳原本自定義數據、事件。缺點是腳本用Python來寫,對測試人員來講要求較高,有比較大的學習成本。瀏覽器

 

Instrumentation

是早期Google提供的Android自動化測試工具類,雖然在那時候JUnit也能夠對Android進行測試,可是Instrumentation容許你對應用程序作更爲複雜的測試,甚至是框架層面的。經過Instrumentation你能夠模擬按鍵按下、擡起、屏幕點擊、滾動等事件。Instrumentation是經過將主程序和測試程序運行在同一個進程來實現這些功能,你能夠把Instrumentation當作一個相似Activity或者Service而且不帶界面的組件,在程序運行期間監控你的主程序。缺點是對測試人員來講編寫代碼能力要求較高,須要對Android相關知識有必定了解,還須要配置AndroidManifest.xml文件,不能跨多個App。服務器

 

UiAutomator

也是Android提供的自動化測試框架,基本上支持全部的Android事件操做,對比Instrumentation它不須要測試人員瞭解代碼實現細節(能夠用UiAutomatorviewer抓取App頁面上的控件屬性而不看源碼)。基於Java,測試代碼結構簡單、編寫容易、學習成本較低,一次編譯,全部設備或模擬器都能運行測試,能跨App(好比:不少App有選擇相冊、打開相機拍照,這就是跨App測試)。缺點是隻支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。網絡

 

Espresso

是Google的開源自動化測試框架。相對於Robotium和UIAutomator,它的特色是規模更小、更簡潔,API更加精確,編寫測試代碼簡單,容易快速上手。由於是基於Instrumentation的,因此不能跨App。配合Android Studio來編寫測試的簡單例子。架構

 

Selendroid

也是基於Instrumentation的測試框架,能夠測試Native App、Hybird App、Web App,可是網上資料較少,社區活躍度也不大。app

 

Robotium

也是基於Instrumentation的測試框架,目前國內外用的比較多,資料比較多,社區也比較活躍。缺點是對測試人員來講要有必定的Java基礎,瞭解Android基本組件,不能跨App。框架

 

Athrun

是淘寶出的一個移動測試框架/平臺,同時支持iOS和Android。Android部分也是基於Instrumentation,在Android原有的ActivityInstrumentationTestCase2類基礎上進行了擴展,提供一整套面向對象的API。這裏有詳細介紹。工具

 

Appium

是最近比較熱門的框架,社區也很活躍。這個框架應該是是功能最強大的學習

它的優勢:
  • 開源;
  • 支持Native App、Hybird App、Web App;
  • 支持Android、iOS、Firefox OS;
  • Server也是跨平臺的,你可使用Mac OS X、Windows或者Linux;
它的哲理是:
  • 用Appium自動化測試不須要從新編譯App;
  • 支持不少語言來編寫測試腳本,Java、Javascript、PHP、Python、C#、Ruby等主流語言;
  • 不須要爲了自動化測試來重造輪子,由於擴展了WebDriver。(WebDriver是測試WebApps的一種簡單、快速的自動化測試框架,因此有Web自動化測試經驗的測試人員能夠直接上手);
  • 移動端自動化測試應該是開源的;
它的設計理念:
  • Client/Server架構,運行的時候Server端會監聽Client端發過來的命令,翻譯這些命令發送給移動設備或模擬器,而後移動設備或模擬器作出響應的反應。正是由於這種架構,因此Client可使用Appium client libraries多種語言的測試腳本,並且Server端徹底能夠部署在服務器上,甚至雲服務器。
  • Session,每一個Client鏈接到Server之後都會有一個Session ID,並且Client發送命令到Server端都須要這個Session ID,由於這個seesion id表明了你所打開的瀏覽器或者是移動設備的模擬器。因此你甚至能夠打開N個Session,同時測試不一樣的設備或模擬器。
  • Desired Capabilities,其實就是一個鍵值對,設置一些測試的相關信息來告訴Server端,咱們須要測試iOS、仍是Android,或者換是WebApp等信息。
  • Appium Server是Node.js寫的,因此能夠直接用NPM來進行安裝。
  • Appium Clients,Mac OS和Win下提供GUI,不須要裝Node.js,方便測試人員操做。
相關限制:
  • 若是你在Windows使用Appium,你無法使用預編譯專用於OS X的.app文件,由於Appium依賴OS X專用的庫來支持iOS測試,因此在Windows平臺你不能測試iOS Apps。這意味着你只能經過在Mac上來運行iOS測試。
總結:
  • 在iOS部分是封裝了UIAutomation;Android 4.2以上是用UiAutomator,Android 2.3 ~ 4.1用的是 Instrumentation,也就說Appium同時封裝了UiAutomator和Instrumentation。因此Appium擁有了以上幾大框架的全部優勢:跨App,支持Native App、Hybird App、Web App,還支持N種語言來編寫你的測試腳本。

 

聲明:該系列內容均來自網絡或電子書籍,只作學習總結!

原文連接

相關文章
相關標籤/搜索