Monkey
Monkey1是Android SDK自帶的測試工具,是一個命令行工具,能夠運行在模擬器裏或實際設備中。能夠運行在模擬器中或者實際設備中,它向系統發送僞隨機的用戶事件流(如按鍵輸入,觸摸屏輸入,手勢輸入等),實現對正在開發的應用程序進行壓力測試。因爲測試事件和數據都是隨機的,不能自定義,因此有很大的侷限性。java
編寫語言:命令行
運行環境:使用adb鏈接PC運行
測試對象:Android平臺自動化測試的一種手段,經過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操做來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常。主要測試客戶端應用的穩定性,健壯性
測試限制:主要是作隨機模擬用戶操做移動端的操做python
例子:linux
adb shell monkey -p com.android.calendar -v 500
這樣就開始亂點日曆應用了。android
加入咱們,642830685,羣。領取最新軟件測試大廠面試資料和Python自動化、接口、框架搭建學習資料!技術大牛解惑面試
MonkeyRunner
MonkeyRunner2是Android SDK提供的測試工具。嚴格意義上來講MonkeyRunner實際上是一個Api工具包,比Monkey強大,能夠編寫測試腳原本自定義數據、事件。缺點是腳本(jython(java語言))用Python(Python(C語言))來寫,對測試人員來講要求較高,有比較大的學習成本;使用By id/name/text方法操控(hierarchyviewer),執行速度太慢。典型應用:安裝,卸載,啓動Activity,點擊X,Y座標,發送按鍵事件,drag,截屏等。shell
這個相對於Monkey 來講 就是真正意義上的 自動化測試工具了。只須要編寫腳本便可完成 咱們平時所須要的 大部分 冒煙用例等等。
尤爲是在4.x如下的機型裏,因爲沒法使用uiautomator, MonkeyRunner幾乎就是惟一的自動化測試編寫辦法。windows
編寫語言:py
運行環境:py環境,使用adb鏈接PC運行
測試對象:UI測試,功能測試,迴歸測試,而且能夠本身定義測試擴展,靈活性較大。
測試限制:主要使用座標,邏輯判斷較差ruby
UiAutomator
UiAutomator3是Android提供的自動化測試框架,基本上支持全部的Android事件操做。是用來作UI測試的,也就是普通的手工測試,點擊每一個控件元素看看輸出的結果是否符合預期。對比Instrumentation它不須要測試人員瞭解代碼實現細節(能夠用UiAutomatorviewer抓去App頁面上的控件屬性而不看源碼)。能跨App(好比:不少App有選擇相冊、打開相機拍照,這就是跨App測試)。缺點是隻支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。app
編寫語言:java
運行環境:使用adb鏈接PC運行,啓動測試
測試對象:主要用於UI功能自動化和UI測試,快速、運行簡單
測試限制:是經過以控件的方式來定位,固然也是支持座標軸的方式來定位,權限控制不足,沒法像Instrumentation那樣使用。框架
Robotium
Robotium是基於Instrumentation的測試框架,主要針對android平臺的應用進行黑盒自動化測試,它提供了模擬各類手勢操做(點擊,長按,滑動等)、查找和斷言機制的API,可以對各類控件進行操做。Robotium結合android官方提供的測試框架達到對應用程序進行自動化測試。另外,Robotium 4.0版本已經支持對WebView的操做。Robotium對Activity,Dialog,Toast,Menu都是支持的。支持Native app、Hybird App。缺點不能跨App。
錄製工具Radar(不穩定)、Testin(不提供源碼)、官網工具(收費)
開發環境:腳本語言java;Eclipse中引入:robotium-solo-**.jar
編寫語言:java基於Instrumentation封裝
運行環境:使用adb鏈接PC運行,啓動測試
測試對象:主要用於白盒測試和UI測試
測試限制:單個Activity測試,須要與測試相同應該的簽名各類框架編寫代碼風格
Appium
Appium是開源的移動端自動化測試框架;支持Native App、Hybird App、Web App;支持Android、iOS、Firefox OS;是跨平臺的能夠在mac,windows以及linux系統上。用Appium自動化測試不須要從新編譯App;腳本語言:Java、python、ruby、C#、Objective C、PHP等主流語言。
相關限制:若是你在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種語言來編寫你的測試腳本。
appium內核基於UiAutomator來識別元素。若是隻有Android app產品,推薦選擇robotium,提供的API比appium好用;既有IOS和Android,則使用appium
Instrumentation
Instrumentation是早期Google提供的Android自動化測試工具類,雖然在那時候JUnit也能夠對Android進行測試,可是Instrumentation容許你對應用程序作更爲複雜的測試,甚至是框架層面的。經過Instrumentation你能夠模擬按鍵按下、擡起、屏幕點擊、滾動等事件。Instrumentation是經過將主程序和測試程序運行在同一個進程來實現這些功能,你能夠把Instrumentation當作一個相似Activity或者Service而且不帶界面的組件,在程序運行期間監控你的主程序。缺點是對測試人員來講編寫代碼能力要求較高,須要對Android相關知識有必定了解,還須要配置AndroidManifest.xml文件,不能跨多個App。
編寫語言:java
運行環境:使用adb鏈接PC運行,啓動測試
測試對象:主要用於白盒測試和UI測試
測試限制:單個Activity測試,須要與測試相同應該的簽名
Espresso
Espresso是Google的開源自動化測試框架。相對於Robotium和UIAutomator,它的特色是規模更小、更簡潔,API更加精確,編寫測試代碼簡單,容易快速上手。由於是基於Instrumentation的,因此不能跨App。
Selendroid
Selendroid是基於Instrumentation的測試框架,能夠測試Native App、Hybird App、Web App,可是網上資料較少,社區活躍度也不大。
uiautomator2
uiautomator2 4是一個可使用Python對Android設備進行UI自動化的庫。其底層基於Google uiautomator,Google提供的uiautomator庫能夠獲取屏幕上任意一個APP的任意一個控件屬性,並對其進行任意操做,但有兩個缺點:1. 測試腳本只能使用Java語言 2. 測試腳本必須每次被上傳到設備上運行。 咱們但願測試可以用一個更腳本化的語言,例如Python編寫,同時能夠每次所見即所得地修改測試、運行測試。