常用自動化框架簡單的分析與介紹

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

1、Monkey是Android SDK自帶的測試工具,在測試過程中會向系統發送偽隨機的用戶事件流,如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試,也 有日志輸出。實際上該工具只能做程序做一些壓力測試,由于測試事件和數據都是隨機的,不能自定義,所以有很大的局限性。

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

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

4、UiAutomator 也是Android提供的自動化測試框架,基本上支持所有的Android事件操作,對比Instrumentation它不需要測試人員了解代碼實現細節 (可以用UiAutomatorviewer抓去App頁面上的控件屬性而不看源碼)。基于Java,測試代碼結構簡單、編寫容易、學習成本,一次編譯, 所有設備或模擬器都能運行測試,能跨App(比如:很多App有選擇相冊、打開相機拍照,這就是跨App測試)。缺點是只支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。

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

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

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

8、Athrun是 淘寶出的一個移動測試框架/平臺,同時支持iOS和Android。Android部分也是基于Instrumentation,在Android原有的 ActivityInstrumentationTestCase2類基礎上進行了擴展,提供一整套面向對象的API。

9、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自動化測試經驗的測試人員可以直接上手);
      • 移動端自動化測試應該是開源的;

      相關限制:

      • 如果你在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種語言來編寫你的測試腳本。

轉載于:https://www.cnblogs.com/crdym/p/5092006.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397009.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux一步一腳印---more、less、head、tail

一、more 文件內容或輸出查看命令more 是我們最常用的工具之一,最常用的就是顯示輸出的內容,然后根據窗口的大小進行分頁顯示,然后還能提示文件的百分比; [rootlocalhost ~]# more /etc/profile 1、more 的語法、參數和命令&#…

單片機檢測stc沒反應_我為什么不用STC單片機

寫在2019.10.27這屬于自己打自己臉,不過,我突然想試試 STC15W108.理由可能有點操蛋,因為STM8S沒有 DFN8這樣 3x3的封裝,而PIC的仿真器太貴。我最后感興趣的一個STC型號是 STC15F的8腳系列,那是在2010年,然而…

commons-pool

commons-pool組件是使用對象池時都要用到的。他的作用主要是管理對象池, 當我們要用這個組件時(比如redis要用到時),只需要實現它的部分接口,比如PooledObjectFactory接口,實現它的創建對象,銷毀…

JAVA中CyclLink怎么用_Java多線程基本使用一

1 多線程--初步【1進程比如:QQ、迅雷、360、飛秋...2線程的概念3線程的意義:4.Java程序的運行原理代碼是運行在線程中的,如果一個進程沒有線程,那么進程就結束了,也就是說一個進程至少要有一個線程當開啟一個Java…

指針分析

int *a; int b 4; a &b; //a:b的地址 //*a 取b地址的值,為4 //&a為指針變量的地址 //*(&a)為指針變量儲存的地址 即為a int **b &a; //b為指針變量a的地址 //*b為指針變量a所儲存的地址 //改變*b(指針變量所儲存的地址)即改變了*b的值轉載于:http…

live server插件怎么用_分享幾個我日常使用的VS Code插件

在這篇文章中,我想介紹一下自己日常使用中最喜歡的Visual Studio Code擴展。大多數時候,我用VS Code編寫的是JavaScript應用程序(標準JavaScript、React、Angular、NodeJS……各式各樣)。Bracket Pair Colorizer 2這個擴展很不錯,可以幫助我搞…

Xtrabackup數據全備份與快速搭建從服務器

Percona Xtrabackup可以說是一個完美的數據備份工具。特別是當數據庫的容量達到了一定數量級的時候且存在單表達到幾十G的數據量, 很難容忍一些邏輯備份的漫長時間。如單個數據庫約200G,單表最大為120G,mysqldump邏輯備份的時間長達20多小時。…

簡單的java方法_Java簡單實用方法一

整理以前的筆記,在學習Java時候,經常會用到一些方法。雖然簡單但是經常使用。因此做成筆記,方便以后查閱這篇博文先說明構造和使用這些方法。1,判斷String類型數據是否為空String類型的數據為空,主要為等于null或”“那么只要判斷…

Android應用程序開發

第一章 Android應用初體驗 1.1應用基礎 activity是Android SDK中Activity類的一個具體實例,負責管理用戶與信息屏的交互。 應用的功能是通過編寫一個個Activity子類來實現的。 布局定義了一系列用戶界面對象以及它們顯示在屏幕上的位置。組成布局的定義保存在XML文件…

phonegap

phonegap 框架詳解 轉自:http://www.cnblogs.com/hubcarl/p/4216844.html首先, 來看一下phonegap 初始化流程以及Native 與 JS 交互流程圖。 說明:socket server模式下, phonegap.js 源碼實現的采用1 毫秒執行一次XHR請求, 當Native JS 隊列里面有JS語…

j2ee核心模式_Operator和Sidecar正在成為軟件交付新模式

現如今的開發人員希望可以開發出具備彈性和可擴展的分布式系統。該系統受益于軟件復用和開源模型創新,針對安全性問題能夠輕易完成補丁更新并進行低風險的升級。該系統不可能通過帶有各種嵌入式語言庫的應用程序框架來實現。最近,一篇關于“多運行時微服…

微信JS-SDK選擇相冊或拍照并上傳PHP實現

理解:微信上傳接口是拍照,或者選擇本地照片,上傳到微信的服務器,獲取到一個id,通過token與這個id獲取到圖片,保存到服務器即可。 效果 通過微信js接口,調用底層程序。 需要引入js文件&#xff0…

JMS-ActiveMQ學習-3 ActiveMQ與Spring集成

Spring下開發消息的發送和接收程序 點對點模式 一、創建生產者項目 1.創建maven項目 2.添加spring-jms、jms規范、activemq依賴 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms&…

看libevent所遇到的英語生詞

libevent – an event notification library The libevent API &#xff08;libevent應用程序&#xff09;provides a mechanism&#xff08;機制&#xff09; to execute&#xff08;執行&#xff09; a callback function&#xff08;回調函數&#xff09; when a specific&a…

java中迭代器要導包嗎_java 中迭代器的使用方法詳解

java 中迭代器的使用方法詳解前言&#xff1a;迭代器模式將一個集合給封裝起來&#xff0c;主要是為用戶提供了一種遍歷其內部元素的方式。迭代器模式有兩個優點&#xff1a;①提供給用戶一個遍歷的方式&#xff0c;而沒有暴露其內部實現細節&#xff1b;②把元素之間游走的責任…

android socket 長連接_TCP/IP,http,socket,長連接,短連接

點擊上方藍色字體&#xff0c;選擇“標星公眾號”優質文章&#xff0c;第一時間送達上一篇&#xff1a;這300G的Java資料是我師傅當年給我的&#xff0c;免費分享給大家下一篇&#xff1a;這200G的Java實戰資料是我師傅當年教我的第二招作者 | ksfzhaohui來源 | my.oschina.net…

二、Python安裝擴展庫

第一步:推薦easy_install工具 下載地址:https://pypi.python.org/pypi/setuptools 下載"ez_setup.py"文件; 通過運行cmd命令找到ez_setup.py文件所在目錄,通過命令[python ez_setup.py]執行安裝easy_install 安裝成功截圖 第二步:安裝擴展酷 例如安裝"suds"…

ORACLE 10.2.01升級10.2.05 for windows 詳細文檔

最近要做一個數據庫的升級工作&#xff0c;提前在自己的PC機上練習了一下&#xff0c;這種文檔在網上很多&#xff0c;但是大多都是使用命令編輯腳本&#xff0c;其實數據庫還有一個DBUA的升級工具可以使用&#xff0c;使升級工作方便了很多。 OS環境&#xff1a;windows XP 32…

php 導出mysql 結構_導出結構和數據(如phpmyadmin)

在這里,您可以找到一個全面的解決方案來轉儲MySQL結構和數據,比如在PMA中(不使用exec、passthru等):它是Dszymczuk項目的一個分支,有我的增強功能。用法很簡單//MySQL connection parameters$dbhost localhost;$dbuser dbuser;$dbpsw pass;$dbname dbname;//Connects to my…