真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android自動化測試,Android自動化測試框架

android app自動化測試工具有哪些

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

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、克拉瑪依網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、HTML5建站、電子商務商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站建設公司、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為克拉瑪依等各大城市提供網(wǎng)站開發(fā)制作服務。

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

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

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

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

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

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

8、Athrun是淘寶出的一個移動測試框架/平臺,同時支持iOS和Android。Android部分也是基于Instrumentation,在Android原有的ActivityInstrumentationTestCase2類基礎上進行了擴展,提供一整套面向?qū)ο蟮腁PI。這里有詳細介紹。

9、Appium是最近比較熱門的框架,社區(qū)也很活躍。這個框架應該是是功能最強大的,

它的優(yōu)點:

開源;

支持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自動化測試經(jīng)驗的測試人員可以直接上手);

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

它的設計理念:

Client/Server架構(gòu),運行的時候Server端會監(jiān)聽Client端發(fā)過來的命令,翻譯這些命令發(fā)送給移動設備或模擬器,然后移動設備或模擬器做出響應的反應。正是因為這種架構(gòu),所以Client可以使用Appium client libraries多種語言的測試腳本,而且Server端完全可以部署在服務器上,甚至云服務器。

Session,每個Client連接到Server以后都會有一個Session ID,而且Client發(fā)送命令到Server端都需要這個Session ID,因為這個seesion id代表了你所打開的瀏覽器或者是移動設備的模擬器。所以你甚至可以打開N個Session,同時測試不同的設備或模擬器。

Desired Capabilities,其實就是一個鍵值對,設置一些測試的相關信息來告訴Server端,我們需要測試iOS、還是Android,或者換是WebApp等信息。

Appium Server是Node.js寫的,所以可以直接用NPM來進行安裝。

Appium Clients,Mac OS和Win下提供GUI,不需要裝Node.js,方便測試人員操作。

相關限制:

如果你在Windows使用Appium,你沒法使用預編譯專用于OS X的.app文件,因為Appium依賴OS X專用的庫來支持iOS測試,所以在Windows平臺你不能測試iOS Apps。這意味著你只能通過在Mac上來運行iOS測試。

總結(jié):

在iOS部分是封裝了UIAutomation;Android 4.2以上是用UiAutomator,Android 2.3 ~ 4.1用的是 Instrumentation,也就說Appium同時封裝了UiAutomator和Instrumentation。所以Appium擁有了以上幾大框架的所有優(yōu)點:跨App,支持Native App、Hybird App、Web App,還支持N種語言來編寫你的測試腳本。

Android移動應用自動化測試都需要哪些環(huán)境?

所需環(huán)境:Java(JDK)、Android-sdk、android模擬器(可用安卓真機)、Appium、python/Java

1. Java環(huán)境:移動應用程序是java程序開發(fā),要運行java語言開發(fā)的程序就需要搭建java運行環(huán)境,直接安裝JDK或JRE即可。

2. Android-sdk:Android程序開發(fā)、調(diào)試工具包,需要使用工具包內(nèi)的ADB命令和Uiautomatorwebview查看元素屬性工具

3. android模擬器:開發(fā)調(diào)試安卓應用,就需要一部安卓手機,使用模擬器代替安卓真機,也可以使用真機,需要開啟root權(quán)限

4. Appium:移動應用自動化測試框架,提供了常用移動及應用的操作的API方法,支持Android、ios

5. python/java:需要一門語言來調(diào)用Appium框架提供的API方法來操作移動應用 傳智播客有全套Android移動應用自動化測試的視頻教程,你可以去官網(wǎng)找找看。

基于Appium的Android自動化測試(二)——TestNG

TestNG介紹

TestNG意為test next generation,是Java中的一個測試框架,Java中已經(jīng)有一個JUnit的測試框架,類似于JUnit和NUnit,但TestNG比JUnit功能更加強大,使用也更方便,測試人員一般用TestNG來寫自動化測試。

TestNG最簡單的測試

下面是TestNG的一個例子

packageTankLearn2.Learn;

importorg.junit.AfterClass;

importorg.junit.BeforeClass;

importorg.testng.annotations.Test;

publicclassTestNGLearn1{

@BeforeClass

publicvoidbeforeClass(){

System.out.println("this is before class");

}

@Test

publicvoidTestNgLearn(){

System.out.println("this is TestNG test case");

}

@AfterClass

publicvoidafterClass(){

System.out.println("this is after class");

}

}

TestNG的基本注解

注解 描述

@BeforeSuite 注解的方法將只運行一次,運行所有測試前此套件中。

@AfterSuite 注解的方法將只運行一次,此套件中的所有測試都運行之后。

@BeforeClass 注解的方法將只運行一次先行先試在當前類中的方法調(diào)用。

@AfterClass 注解的方法將只運行一次后已經(jīng)運行在當前類中的所有測試方法。

@BeforeTest 注解的方法將被運行之前的任何測試方法屬于內(nèi)部類的標簽的運行。

@AfterTest 注解的方法將被運行后,所有的測試方法,屬于內(nèi)部類的標簽的運行。

@BeforeGroups 組的列表,這種配置方法將之前運行。此方法是保證在運行屬于任何這些組第一個測試方法,該方法被調(diào)用。

@AfterGroups 組的名單,這種配置方法后,將運行。此方法是保證運行后不久,最后的測試方法,該方法屬于任何這些組被調(diào)用。

@BeforeMethod 注解的方法將每個測試方法之前運行。

@AfterMethod 被注釋的方法將被運行后,每個測試方法。

@DataProvider 標志著一個方法,提供數(shù)據(jù)的一個測試方法。注解的方法必須返回一個Object[] [],其中每個對象[]的測試方法的參數(shù)列表中可以分配。

該@Test方法,希望從這個DataProvider的接收數(shù)據(jù),需要使用一個dataProvider名稱等于這個注解的名字。

@Listeners 定義一個測試類的監(jiān)聽器。

@Parameters 介紹如何將參數(shù)傳遞給@Test方法。

@Test 標記一個類或方法作為測試的一部分。

TestNG組測試

在編寫測試的過程中,經(jīng)常遇到只想執(zhí)行個別或者某一部分/某一類型的測試用例,TestNG提供了分組測試方法,可以按組來執(zhí)行測試用例。

packageTankLearn2.Learn;

importorg.testng.annotations.Test;

publicclassGroupTest{

@Test(groups = {"systemtest"})

publicvoidtestLogin(){

System.out.println("this is test login");

}

@Test(groups = {"functiontest"})

publicvoidtestOpenPage(){

System.out.println("this is test Open Page");

}

}

TestNG依賴測試

有時,我們需要按順序來調(diào)用測試用例,測試用例之間存在依賴關系,TestNG支持測試用例之間的依賴。

importorg.openqa.selenium.WebElement;

importorg.testng.Assert;

importorg.testng.annotations.Test;

importpage.*;

importutil.AppiumTest;

importjava.util.List;

importstaticutil.Helpers.*;

@Test

publicvoidmethod1()

{

BookMarkEditPage bookMarkPageEdit =newBookMarkEditPage();

bookMarkPageEdit.addPoiToBookMark("清華東路西口");

Assert.assertTrue(bookMarkPageEdit.verifyAddPoiToBookMark("清華東路西口"),"添加poi點失敗");

System.out.println("This is method 1");

}

@Test(dependsOnMethods = {"method1"})

publicvoidmethod2(){

BookMarkCommonPage bookMarkCommonPage =newBookMarkCommonPage();

bookMarkCommonPage.deleteAllItems();

Assert.assertTrue(bookMarkCommonPage.isDisplayed("你還沒有添加收藏"),"刪除失??!");

System.out.println("This is method 2");

}

TestNG忽略測試

當測試用例還沒準備好時,可以給測試用例加上@Test(enable = false), 來禁用此測試用例。

packageTestng;

importorg.junit.AfterClass;

importorg.junit.BeforeClass;

importorg.testng.annotations.AfterMethod;

importorg.testng.annotations.BeforeMethod;

importorg.testng.annotations.Test;

publicclassLtg{

@BeforeMethod

publicvoidbeforeMethod(){

System.out.println("this is before method");

}

@Test(enabled =false)

publicvoidTestNgLearn1(){

System.out.println("this is TestNG test case 1");

}

@Test

publicvoidTestNgLearn2(){

System.out.println("this is TestNG test case 2"); ? ?}

@AfterMethod

publicvoidafterMethod(){

System.out.println("this is after method");

}

}

TestNg執(zhí)行順序

BeforeMethod/AfterMethod會在每個方法中調(diào)用一次,這種適用場所,比如執(zhí)行完第一個用例之后要重置數(shù)據(jù)才能執(zhí)行第二條用例時,可以用這種方式,BeforeMethod 就放重置數(shù)據(jù)的方法,讓每個方法執(zhí)行之前都去調(diào)用這個方法

TestNG具體生命周期

TestNg特點

1、annotations注釋,如@test @BeforeMethod ;

2、支持多線程執(zhí)行case ;

3、支持數(shù)據(jù)驅(qū)動dataProvider ;

4、支持參參數(shù) ;

5、能夠作為eclipse的插件 ;

6、能夠(配合reportng)生產(chǎn)客觀的測試報告 ;

7、可通過testng.xml管理執(zhí)行case和suite;

TestNG suite

testng.xml文檔中最上層的元素

說明:一個xml文件只能有一個,是一個xml文件的根級

由和組成

suite定義一個測試套件,可以設置是否使用多線程,可包含多個測試用例或者測試group。

testng.xml 配置詳解

簡單的大概結(jié)構(gòu)如下:

以下詳細XML規(guī)則

-結(jié)-構(gòu)-樹

suite

–tests

—-parameters

—-groups

——definitions

——runs

—-classes

–parameters

比較詳細的結(jié)構(gòu)如下:


文章名稱:android自動化測試,Android自動化測試框架
網(wǎng)頁URL:http://weahome.cn/article/dsggjod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部