1. 程式人生 > >Android UI 測試框架

Android UI 測試框架

Zinc30是一個強大的Android UI自動化測試框架,支援建立健壯、可維護的黑盒測試用例。RD或者QA能夠基於場景設計功能級和系統級測試。Zinc30符合Webdriver的 API規範,以更好地面向物件程式設計的方式來操作Android控制元件,同時全面支援Web UI測試中流行的PageFactory模式。專案地址:https://code.google.com/p/zinc30/

GettingStart

使 用Zinc30需要將zinc.jar包放入Android Test Project中並加入到build path之中,同時需要在AndroidManifest.xml的manifest元素下加入: <supports-screens android:anyDensity="true" />
對於使用Zinc30的示例專案請在downloads區下載
zinc30-sample.zip包,裡面包含兩個專案,zinc30-sample是被測專案,採用mvp模式書寫;zinc30-sample- test是測試專案,採用PageFactory模式來書寫測試用例。兩個專案匯入到eclipse即可直接執行

示例演示

這裡以測試登陸功能為例,假如有兩個Activity,其中一個為LoginView,主要是登陸頁面,另一個為MainView,主要是登陸成功後跳轉的頁面。這裡也採用PageFactory模式來書寫,先寫ActivityPage:
  1. public class LoginViewPage extends BaseActivityPage {
  2.         public LoginViewPage(Zinc zinc) {
  3.                 super(zinc);
  4.         }
  5.         @FindBy(id = R.id.username)
  6.         private AndroidElement usernameEdit;
  7.         @FindBy(type = AndroidElementType.EditText, index = 1)
  8.         private AndroidElement passwordEdit;
  9.         @FindBy(type = AndroidElementType.Button, text = "登陸")
  10.         private AndroidElement loginButton;
  11.         public MainViewPage login(String username, String password) {
  12.                 usernameEdit.clear();
  13.                 usernameEdit.sendKeys(username);
  14.                 passwordEdit.clear();
  15.                 passwordEdit.sendKeys(password);
  16.                 loginButton.click();
  17.                 return new MainViewPage(zinc);
  18.         }
  19. }
複製程式碼 可以看到,這個Page頁面主要包括測試過程中需要操作的元素以及動作,其中元素查詢有3個方法:

1、根據id來查詢,即自動生成的R檔案中的id值;

2、根據文字來查詢,需要帶上元素型別。比如@FindBy(type = AndroidElementType.Button, text = "登陸")為查詢寫有登陸文字的Button控制元件。如果元素型別不確定可以使用Unkown型別;

3. 根據索引來查詢,需要帶上元素型別。比如@FindBy(type = AndroidElementType.EditText, index = 1)為查詢第二個EditText控制元件。這裡index以0標識第一個元素。

接下來我們來看Test Case如何來書寫,其實Test case主要組合已有的ActivityPage類:
  1. public class LoginViewTest extends ZincTestCase<LoginView> {
  2.         public LoginViewTest() {
  3.                 super("com.baidu.zinc30.sample", LoginView.class);
  4.         }
  5.         public void testLoginSuccess() {
  6.                 LoginViewPage loginViewPage = new LoginViewPage(zinc);
  7.                 MainViewPage mainViewPage = loginViewPage.login("zinc", "zinc");
  8.                 Assert.assertTrue("should login success",
  9.                                 mainViewPage.isActivityPresent(MainView.class));
  10.         }
  11. }
複製程式碼 我們寫測試用例的時候需要繼承ZincTestCase,它主要完成zinc物件的初始化。雖然在Test Case這層可以使用zinc物件,但我們鼓勵將操作封裝在ActivityPage層。

總結

Zinc30是全面支援PageFactory模式的(可以參考:http://chon.techliminal.com/page_object/#/intro),因為它有3方面的優點:

1)減少重複程式碼,將頁面狀態的改變和遷移封裝在頁面物件之中;

2)UI的變動只會影響到相應頁面物件而不會影響到上層的test case;

3)能夠在不同的test case中重用頁面物件。

對於某些操作不在WebDriver的API中,比如滑動螢幕、點選Listview中的某一行或者返回上一頁等操作,我們在ActivityPage層直接zinc物件,它完全相容Robotium的所有動作。

相關推薦

Android UI 測試框架

Zinc30是一個強大的Android UI自動化測試框架,支援建立健壯、可維護的黑盒測試用例。RD或者QA能夠基於場景設計功能級和系統級測試。Zinc30符合Webdriver的 API規範,以更好地面向物件程式設計的方式來操作Android控制元件,同時全面支援Web

android單元測試框架Mockito使用

null 修改 分享 log hone 技術 pro 我們 ext 單元測試,早些年時常聽到這個概念,真的有去做的確實少,基本都是自己功能上的測試,開發完測試跑一邊沒啥問題就發布了。這幾天花了點心思看了下MockIto框架,記錄博文。 MockIto官網文檔在https:

Android UiAutomator測試框架

1. UiAutomator測試框架研究與實踐 1.1 UiAutomator 簡介: 它是一個Android自動化測試框架,是谷歌在Android4.1版本釋出時推出的一款用Java編寫的UI測試框架。它只能用於UI也就是黑盒方面的測試。所以UiAutomator只能執行在4.1以

Android自動化測試框架

Monkey Monkey1是Android SDK自帶的測試工具,是一個命令列工具,可以執行在模擬器裡或實際裝置中。可以執行在模擬器中或者實際裝置中,它向系統傳送偽隨機的使用者事件流(如按鍵輸入,觸控式螢幕輸入,手勢輸入等),實現對正在開發的應用程式進行壓力測

Android UI 開源框架ImageLoader的完美例子

                Android開源框架ImageLoader的完美例子2013年8月19日開源框架之Universal_Image_Loader學習很多人都在討論如何讓圖片能在非同步載入更加流暢,可以顯示大量圖片,在拖動ListView的時候不會出現卡的現象。關於ImageLoader這個開源

Android自動化測試框架Robotium

目前用於Android的測試框架已經有很多,比如:Monkey、Appium和Robotium等。Monkey這是大家比較熟悉的,Android自帶的系統工具。Monkey通過向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開

Android UI註解框架 ButterKnife原始碼及原理分析

很開心,今天看到了一篇大神寫的部落格,對ButterKnife進行原始碼原理分析!看完之後學習到了很多新的知識,有關於自動生成程式碼的原理,以後有機會要自己寫一個註解框架!哈哈,如果能力夠的話! 簡單介紹一下 ButterKnife是一個很不錯的View

各種Android UI開源框架

目錄 具體內容 ============================= UI Awesome-MaterialDesign - MaterialDesignCenter改名為Awesome-MaterialDesign,優

Android UI-開源框架ImageLoader的完美例子

Android開源框架ImageLoader的完美例子2013年8月19日開源框架之Universal_Image_Loader學習很多人都在討論如何讓圖片能在非同步載入更加流暢,可以顯示大量圖片,在拖動ListView的時候不會出現卡的現象。關於ImageLoader這個開

Android自動化測試框架Espresso(二)——測試Toast彈出內容

Android中的Toast是我們經常會使用的,能夠方便的在介面上彈出一個提示語句,還可以控制顯示的時長,十分方便。使用Espresso測試Toast的彈出內容不是很好操作,主要由於Toast的佈局並不是屬於我們當前應用的,而是通過另一個Sevice控制的,這個原理可以看看

Android自動化測試框架開發(三)Instrumentation測試框架

本篇開始將介紹幾個重量級的測試框架,首先介紹的是Android最早推出的便於進行程式深入的,系統性的單元測試的框架–Instrumentation。 Instrumentation從android2.3甚至更早版本就存在了,很多Android自動化測試框架都是

Android自動化測試框架新書:交流

大家覺得編寫一本描述MonkeyRunner原理分析的書籍如何?估計大概10萬字左右。內容大概分佈如下: Monkey實現原理: 去描述執行在目標安卓機器的monkey是如何執行並處理MonkeyR

Android相容性測試框架(CTS)手冊

本文翻譯自Android官方的CTS手冊android-cts-manual-r4.pdfAndroid相容性測試框架手冊1、為什麼需要相容性測試(以下稱CTS)?1.1、讓APP提供更好的使用者體驗。使用者可以選擇更多的適合自己裝置的APP。讓APP更穩定。1.2、讓開發者

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 輪播UI效果框架

Android 好用的框架與UI效果demo收集 1.萬能的公告欄輪播 View :BulletinView github https://github.com/Bakumon/BulletinView 2. RecyclerBanner 一個使用Rec

Android自動化測試實戰(Java篇+主流工具+框架+指令碼)

第1章 課程簡介 我們為什麼要學自動化測試?如果你現在開啟一家招聘網站,輸入自動化測試,不難發現,自動化測試已經成為了軟體測試領域的大趨勢,測試人員能力的分水嶺,高薪福利的必爭地。但每個公司招聘要求中,技能點要求那麼多,我們如何進行系統的學習,成為一名合格的自動化測試工程師呢? 在這門課程將... 1-1 課

Android單元測試(一):JUnit框架的使用

1.前言 網上有許多關於單元測試的好處,這裡我就不去說了。我寫單元測試的理由很簡單粗暴,就是圖一個方便。試想一下這個場景:我們在寫一個新功能,每寫一部分,我們就安裝到手機上檢視一下,這個過程中你要點選到對應的頁面,做對應的操作,最後才能反饋給你結果。如果達到了預

Android Studio中進行UI測試

一、build.gradle 中配置 在defaultConfig中新增 testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” 在dependenc

基於APPIUM測試微信公眾號的UI自動化測試框架(結合Allure2測試報告框架

clas ava sed rom pos enabled via 代碼管理 ons 框架初衷 前兩周組內的小夥伴跟我說她現在測試的微信公眾號項目(保險)每次上新產品時測試起來很費時,存在大量的重復操作(點點點),手工測試每個產品可能需要半天到一天的時間,復雜的產品需要兩