Android 自動化測試框架

原文:https://www.cnblogs.com/zeo-to-one/p/6618611.html

Android常用的自動化測試工具框架:

Monkey,MonkeyRunner,UIAutomator,Robotium,Appium,Monkey Talk......

但這些工具框架都是什麼呢有什麼聯繫呢,先通過一張圖來了解一下吧.(圖是某博客上借過來

是不是一臉懵逼,不知道這是什麼鬼。下面詳細瞭解一下。

一、Monkey

  是Android SDK自帶的測試工具,是一個命令行工具,可以運行在模擬器中或者實際設備中,它向系統發送僞隨機的用戶事件流(如按鍵輸入,觸摸屏輸入,手勢輸入等),實現對正在開發的應用程序進行壓力測試。由於測試事件和數據都是隨機的,不能自定義,所以有很大的侷限性。

二、MonkeyRunner

  是Android SDK提供的測試工具。嚴格意義上來說MonkeyRunner其實是一個Api工具包,比Monkey強大,可以編寫測試腳本來自定義數據、事件。缺點是腳本(jython(java語言))用Python(Python(C語言))來寫,對測試人員來說要求較高,有比較大的學習成本;使用By id/name/text方法操控(hierarchyviewer),執行速度太慢。典型應用:安裝,卸載,啓動Activity,點擊X,Y座標,發送按鍵事件,drag,截屏等。

三、UIAutomator

  是Android提供的自動化測試框架,基本上支持所有的Android事件操作。是用來做UI測試的,也就是普通的手工測試,點擊每個控件元素看看輸出的結果是否符合預期。對比Instrumentation它不需要測試人員瞭解代碼實現細節(可以用UiAutomatorviewer抓去App頁面上的控件屬性而不看源碼)。能跨App(比如:很多App有選擇相冊、打開相機拍照,這就是跨App測試)。缺點是隻支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。

四、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

五、Appium (官網:http://appium.io/)

  是開源的移動端自動化測試框架;支持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

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

七、Espresso

  是Google的開源自動化測試框架。相對於Robotium和UIAutomator,它的特點是規模更小、更簡潔,API更加精確,編寫測試代碼簡單,容易快速上手。因爲是基於Instrumentation的,所以不能跨App。

 八、Selendroid

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章