1. 程式人生 > >【Android】自動化測試框架有哪些?簡單介紹

【Android】自動化測試框架有哪些?簡單介紹

目前常用的可用於APP自動化測試的框架有以下幾個:

1.Monkey(socket)

原理:

MonkeyAndroid SDK自帶的測試工具,在測試過程中通過socket通訊的方式來模擬使用者會向系統傳送偽隨機的使用者事件流,如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試,也有日志輸出。實際上該工具只能做程式做一些壓力測試,由於測試事件和資料都是隨機的,不能自定義,所以有很大的侷限性。Monkey 是一個命令列工具,可以執行在模擬器或實際裝置中,通過向系統傳送偽隨機的使用者事件流,實現對全系統或某個應用程式進行壓力測試。

使用場景:

多用於進行穩定性測試。

利弊分析:

測試的物件僅為應用程式包,有一定的侷限性。Monkey測試使用的事件流資料流是隨機的,不能進行自定義。

2.Monkeyrunner(adb)

原理:

  MonkeyRunner也是Android SDK提供的測試工具。嚴格意義上來說MonkeyRunner其實是一個Api工具包,比Monkey強大,可以編寫測試指令碼來自定義資料、事件。缺點是指令碼用Python來寫,對測試人員來說要求較高,有比較大的學習成本。通過adb進行對螢幕的元素dump進行解析,並且基於座標傳送點選操作,然後在這個基礎上做封裝。

使用場景:

多用於UI自動化測試

利弊分析:

1、可以完成一定複雜程度的測試用例,避免重複的人工工作量;

2、結合heap、strict mode等工具,可以實現壓力測試,效能優化等任務;

3、某些API對機型相容不好,例如4.0以下的機型,對viewnode server支援不友善,導致drag api不能正常工作;

4、由於monkeyrunner的實現基於python指令碼,效能比較低下,對指令碼的編寫有質量要求。

3.Instrumentation

原理: base on robotium

Instrumentation是早期Google提供的Android自動化測試工具類,雖然在那時候JUnit也可以對Android進行測試,但是Instrumentation允許你對應用程式做更為複雜的測試,甚至是框架層面的。通過Instrumentation你可以模擬按鍵按下、擡起、螢幕點選、滾動等事件。Instrumentation是通過將主程式和測試程式執行在同一個程序來實現這些功能,你可以把Instrumentation看成一個類似Activity或者Service並且不帶介面的元件,在程式執行期間監控你的主程式。

應用場景:多用於單元測試

利弊分析:

缺點是對測試人員來說編寫程式碼能力要求較高,需要對Android相關知識有一定了解,還需要配置AndroidManifest.xml檔案,不能跨多個App。

4.Robotium

原理:

robotium是基於Instrumentation框架,通過InstrumentTestRunner呼叫起應用,通過java反射的原理,獲取應用的介面元素,然後對介面元素進行操作。Robotium也是基於Instrumentation的測試框架,目前國內外用的比較多,資料比較多,社群也比較活躍。缺點是對測試人員來說要有一定的Java基礎,瞭解Android基本元件,不能跨App。

應用場景:主要針對Android平臺的應用進行黑盒自動化測試

利弊分析:缺點是對測試人員來說要有一定的Java基礎,瞭解Android基本元件,不能跨App。

5.UIautomator

原理:4.2之前是selendroid;4.2之後是Uiautomator

是Android提供的自動化測試框架,封裝了selenium,UiAutomator是Google仿照微軟Uiautomation提供的一套自動化框架,基於Android AccessilibilityService提供(注:AndroidAccessilibilityService,是一個可訪問服務,是一個為增強使用者介面並幫助殘疾使用者的應用程式,或者使用者可能無法完全與裝置的互動。例如,使用者在開車。那麼使用者就有可能需要新增額外的或者替代的使用者反饋方式)。基本上支援所有的Android事件操作,對比Instrumentation它不需要測試人員瞭解程式碼實現細節(可以用UiAutomatorviewer抓去App頁面上的控制元件屬性而不看原始碼)。基於Java,測試程式碼結構簡單、編寫容易、學習成本,一次編譯,所有裝置或模擬器都能執行測試,能跨App(比如:很多App有選擇相簿、開啟相機拍照,這就是跨App測試)。缺點是隻支援SDK 16(Android 4.1)及以上,不支援Hybird App、WebApp。

應用場景:

Android平臺的應用進行黑盒自動化測試,

利弊分析:

基本上支援所有的Android事件操作,對比Instrumentation它不需要測試人員瞭解程式碼實現細節(可以用UiAutomatorviewer抓去App頁面上的控制元件屬性而不看原始碼)。基於Java,測試程式碼結構簡單、編寫容易、學習成本,一次編譯,所有裝置或模擬器都能執行測試,能跨App(比如:很多App有選擇相簿、開啟相機拍照,這就是跨App測試。

6.Appium

原理:

Appium是一個開源、跨平臺的測試框架,可以用來測試原生及混合的移動端應用。Appium支援IOS、Android及FirefoxOS平臺。Appium使用WebDriver的json wire協議,來驅動Apple系統的UIAutomation庫、Android系統的UIAutomator框架。Appium對IOS系統的支援得益於Dan Cuellar’s對於IOS自動化的研究。Appium也集成了Selendroid,來支援老android版本。

應用場景:

Ios、android黑盒自動化測試

優點:

  · 開源;

  · 支援Native App、Hybird App、Web App;

  · 支援Android、iOS、Firefox OS;

  · Server也是跨平臺的,你可以使用Mac OS X、Windows或者Linux

  它的哲理是:

  · 用Appium自動化測試不需要重新編譯App;

  · 移動端自動化測試應該是開源的;

利弊分析:

Appium支援Selenium WebDriver支援的所有語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可以使用Selenium WebDriver的Api。不需要為了自動化測試來重造輪子,因為擴充套件了WebDriver。(WebDriver是測試WebApps的一種簡單、快速的自動化測試框架,所以有Web自動化測試經驗的測試人員可以直接上手)Appium支援任何一種測試框架。如果只使用Apple的UIAutomation,我們只能用javascript來編寫測試用例,而且只能用Instruction來執行測試用例。同樣,如果只使用Google的UIAutomation,我們就只能用java來編寫測試用例。Appium實現了真正的跨平臺自動化測試。如果你在Windows使用Appium,你沒法使用預編譯專用於OS X的.app檔案,因為Appium依賴OS X專用的庫來支援iOS測試,所以在Windows平臺你不能測試iOS Apps。這意味著你只能通過在Mac上來執行iOS測試。

總結:

    綜上所述,用於黑盒自動化測試功能最為強大的工具當屬appium,monkey以及monkeyrunner功能有限,robotium 平臺有限制,uiautomator對語言要求比較高,所以建議初學者可以先學appium,下次小編將與大家聊一聊appium自動化的那些事兒~

7.Espresso

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

8.Selendroid

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

9.Athrun

是淘寶出的一個移動測試框架/平臺,同時支援iOS和Android。Android部分也是基於Instrumentation,在Android原有的

ActivityInstrumentationTestCase2類基礎上進行了擴充套件,提供一整套面向物件的API。

==============================

sikuli、seeTest、Café、androidDroid(nativedriver)

==============================

IOS(待續。。。

Instruments、Uiautomation(微軟)、Monkeytalk、monkey、athrun、instrumentdriver、appium

當前主流的手機UI測試框架  Uiautomator  robotium  appium


1. 開源庫Robotium為了彌補ActivityinstrumentationTestCase2(Android單元測試框架Instrumentation的一個類)對整合測試支援的丌足而編寫的。
2. Robotium除了在仦錶盤API的基礎上提供了更多的操作控制元件的凼數以外,還通過反射等手段,通過呼叫系統隱藏的功能,實現了仦錶盤丌支援的功能。
3. Robotium對Instrumentation封裝比較強的地方是控制元件的搜尋
4. Robotium 對Activity,Dialog,Toast,Menu 都是支援的
5. 主要用亍自勱化整合測試

對UI層、整合、單元測試都有很好的操作性;
執行的用例是執行在同一個程序中的兩個執行緒,對比monkeyrunner的執行速度要快很多;
6. robotium不能夠跨程序,可以結合adb命令來進行跨程序
7. 單程序非常完善
8. 第三方的測試框架


appium主要跨平臺,並且社群活躍度大,比較被推崇。

(2017.03.09 本文有來自網路內容,感謝原文作者,如有版權問題請及時留言,我會第一時間處理)

相關推薦

Android自動化測試框架哪些簡單介紹

目前常用的可用於APP自動化測試的框架有以下幾個:1.Monkey(socket)原理:Monkey是Android SDK自帶的測試工具,在測試過程中通過socket通訊的方式來模擬使用者會向系統傳送偽隨機的使用者事件流,如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在

Python自動化測試框架-共通方法匯總

pytho 自動化 writer rand save 自動化測試框架 n) 很慢 叠代 1.滾動滾動條(有的時候頁面元素element取得對但是並沒有回顯正確的數據,可能是因為頁面第一次加載很慢,所以頁面可能做了滾動到哪裏就加載到哪裏的效果,此刻我們就需要用到滾動條自動滾動

自動化測試框架: pytest&allure ,提高自動化健壯性和穩定性

序 在之前,我寫過一個系列“從零開始搭建一個簡單的ui自動化測試框架(pytest+selenium+allure)”,在這個系列裡,主要介紹瞭如何從零開始去搭建一個可用的自動化工程框架,但是還缺乏了一些細節的補充,例如對於自動化測試而言,如何提高其測試的穩定性? 本篇文章,將會和讀者一起探討這個

Python自動化測試框架哪些

令開發者萬分高興的是,開發自己的測試框架的日子終於結束了。以前,開發團隊接手一個專案並開始開發時,除了專案模組的實際開發之外,他們不得不為這個專案構建一個自動化測試框架。一個測試框架應該具有最佳的測試用例、假設(assumptions)、指令碼和技術來執行每一處程式碼和模組,從而發現程式碼

Android常用自動化測試框架哪幾種?

1、Monkey是Android SDK自帶的測試工具,在測試過程中會向系統傳送偽隨機的使用者事件流,如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試,也有日誌輸出。實際上該工具只能做程式做一些壓力測試,由於測試事件和資料都是隨機的,不能自定

Android stuidoMonkeyJenkins自動化測試初探

自動測試 monkey 自動化測試初探-201709032226 Junit 部分註解說明 一個JUnit4 的單元測試用例執行順序為:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass 每一個測試方法的調用順序為

android常用自動化測試框架

window 自動 瀏覽器 資料 對比 移動 ppi des 選擇 目錄: Monkey MonkeyRunner Instrumentation UiAutomator Espresso Selendroid Robotium Athrun Appi

python專項測試——Android App自動化測試框架

selenium sdk str ase val 測試環境 self ron app自動化 1 為什麽需要框架? 代碼混亂,難閱讀; 重復編碼,效率低;需求變化,難維護; 一 自動化實例 1 準備測試的app;準備測試環境;實現腳本; 2 測試app:只有登錄功能

Android單元測試方法簡介

前言 基本單元測試框架 Java單元測試框架:Junit、Mockito、Powermockito等; Android單元測試框架:Robolectric、AndroidJUnitRunner、Espresso等。 最開始建議先學習Junit & Mockito。

Http請求頭哪些

每個HTTP請求和響應都會帶有相應的頭部資訊。預設情況下,在傳送XHR請求的同時,還會發送下列頭部資訊: Accept:瀏覽器能夠處理的內容型別 Accept-Charset:瀏覽器能夠顯示的字符集 Accept-Encoding:瀏覽器能夠處理的壓縮編碼 Accept-

分類 - 自動化測試

個人簡介 如果對測試比較感興趣的可以加QQ群:320542475! 如果你願意,我們可以聊聊測試的那點事,相互學習、互相成長,我相信只要不斷吸取自己所需營養,即使出生不那麼光彩,在未來依然會光芒萬丈,只是在前進的路上荊棘多了一點而已、、、

自動化測試之Excel表格

參考一位大神的部落格專案架構,把元素和資料都引數化,但是總是被excel表格坑 1.無法下拉 動作列通過下拉列表來控制,點選下拉列表無反應 解決方案:不知道是不是中間動了什麼,因為Excel版本的問題,一直在調整,所以重新設定一遍 先設為任何值,之後再引入來源設為序列,下拉列表重新賦值 &n

Canal網際網路背景下哪些資料同步需求和解決方案?看完我知道了!!

## 寫在前面 > 在當今網際網路行業,尤其是現在分散式、微服務開發環境下,為了提高搜尋效率,以及搜尋的精準度,會大量使用Redis、Memcached等NoSQL資料庫,也會使用大量的Solr、Elasticsearch等全文檢索服務。那麼,這個時候,就會有一個問題需要我們來思考和解決:那就是資料同

seleniumselenium 自動化測試框架部署1:selenium + JUnit + eclipse + testNG 環境部署

目錄 二、Firefox:Selenium IDE 安裝 三、jdk:下載和安裝 四、eclipse:下載和安裝 五、必要的jar包下載 六、eclipse:自動化測試框架環境部署 七、Firefox:Try Xpath 安裝 八、eclipse:安裝testNG外掛

作者: 艾裡艾蘭 Python+requests+unittest+excel實現介面自動化測試框架

python自動化語言基礎 介面測試知識基礎 一、框架結構:  工程目錄 二、Case檔案設計 三、基礎包 base 3.1 封裝get/post請求(runmethon.py)

PHP常見面試題 PHP框架基礎-常見框架特性PHP框架哪些?你用過哪些?各自的優缺點是什麼?

一、考點 1、PHP框架的差異和優缺點 1)Yaf 框架 Yaf 使用PHP擴充套件的形式寫的一個PHP框架,也就是以C語言為底層編寫的,效能上要比PHP程式碼寫的框架要快一個數量級。 優點:執行效率高、輕量級框架、可擴充套件性強。 缺點:高版本相容性差、底

傑瑞的專欄架構師、指令碼語言專家;精通Python、Shell、正則表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面非常豐富的經驗

傑瑞的專欄 架構師、指令碼語言專家;精通Python、Shell、正則表示式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多種程式語言;在效能,開源,自動化測試方面有非常豐富的經驗...

jenkins+jmeter+maven介面自動化測試框架搭建maven專案建立

一、jmeter指令碼錄製或編寫        根據自己習慣錄製或編寫jmeter指令碼,保證指令碼可正確執行。 二、用eclipse建立maven專案 1.File->New->Project...開啟new project視窗(如下圖), 2.選擇

jenkins+jmeter+maven介面自動化測試框架搭建HTML 報告展示

1.maven專案中建立/src/jmeter/resources路徑,將jmeter中的extras路徑下如下模板檔案複製到maven專案中的/src/jmeter/resources路徑下(也可以根據自己的需要下載其他目標放在這個路徑下即可) 2.pom檔案中新

linux操作系統linux查看哪些用戶

http 分享圖片 lin img /etc/ gpo word ima clas linux系統如何查看有哪些用戶? 命令:cat /etc/passwd(不是password) 【linux操作系統】linux查看有哪些用戶