【Android】自動化測試框架有哪些?簡單介紹
目前常用的可用於APP自動化測試的框架有以下幾個:
1.Monkey(socket)
原理:
Monkey是Android 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 stuido】【Monkey】【Jenkins】自動化測試初探
自動測試 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等全文檢索服務。那麼,這個時候,就會有一個問題需要我們來思考和解決:那就是資料同
【selenium】selenium 自動化測試框架部署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查看有哪些用戶