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

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

android自動化測試框架,android自動化測試工具

常用的自動化測試工具及特點(diǎn)分析

想要進(jìn)入 自動化這行業(yè),知道常用的自動化測試工具及特點(diǎn)相當(dāng)關(guān)鍵。下面就由我為你帶來常用的自動化測試工具及特點(diǎn),希望你喜歡。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供雜多網(wǎng)站建設(shè)、雜多做網(wǎng)站、雜多網(wǎng)站設(shè)計、雜多網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、雜多企業(yè)網(wǎng)站模板建站服務(wù),10多年雜多做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

常用的自動化測試工具及特點(diǎn)

1、RunnerMercury

Interactive公司的WinRunner是一種企業(yè)級的功能測試工具,用于檢測應(yīng)用程序是否能夠達(dá)到預(yù)期的功能及正常運(yùn)行。通過自動錄制、檢測和回放用戶的應(yīng)用操作,WinRunner能夠有效地幫助測試人員對復(fù)雜的企業(yè)級應(yīng)用的不同發(fā)布版進(jìn)行測試,提高測試人員的工作效率和質(zhì)量,確??缙脚_的、復(fù)雜的企業(yè)級應(yīng)用無故障發(fā)布及長期穩(wěn)定運(yùn)行。企業(yè)級應(yīng)用可能包括web應(yīng)用系統(tǒng),ERP系統(tǒng),CRM系統(tǒng)等等。這些系統(tǒng)在發(fā)布之前,升級之后都要經(jīng)過測試,確保所有功能都能正常運(yùn)行,沒有任何錯誤。如何有效地測試不斷升級更新且不同環(huán)境的應(yīng)用系統(tǒng),是每個公司都會面臨的問題。

2、Rational

Robot是業(yè)界最頂尖的功能測試工具,它甚至可以在測試人員學(xué)習(xí)高級腳本技術(shù)之前幫助其進(jìn)行成功的測試。它集成在測試人員的桌面IBM

Rational Test Manager上,在這里測試人員可以計劃、組織、執(zhí)行、管理和報告所有測試活動,包括手動測試報告。這種測試和管理的雙重功能是自動化測試的理想開始。

3、AdventNet

QEngineAdventNet QEngine是一個應(yīng)用廣泛且獨(dú)立于平臺的自動化軟件測試工具,可用于Web功能測試、web性能測試、Java應(yīng)用功能測試、Java 、API測試、SOAP測試、回歸測試和Java應(yīng)用性能測試。支持對于使用HTML、JSP、ASP、.NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-commerce、傳統(tǒng)客戶端/服務(wù)器等開發(fā)的應(yīng)用程序進(jìn)行測試。此工具以Java開發(fā),因此便于移植和提供多平臺支持。

4、SilkTest

是業(yè)界領(lǐng)先的、用于對企業(yè)級應(yīng)用進(jìn)行功能測試的產(chǎn)品,可用于測試Web、Java或是傳統(tǒng)的C/S結(jié)構(gòu)。SilkTest提供了許多功能,使用戶能夠高效率地進(jìn)行軟件自動化測試。這些功能包括:測試的計劃和管理;直接的數(shù)據(jù)庫訪問及校驗(yàn);靈活、強(qiáng)大的4Test腳本語言,內(nèi)置的恢復(fù)系統(tǒng)(Recovery System);以及具有使用同一套腳本進(jìn)行跨平臺、跨瀏覽器和技術(shù)進(jìn)行測試的能力。

5、QA

RunQARun的測試實(shí)現(xiàn)方式是通過鼠標(biāo)移動、鍵盤點(diǎn)擊操作被測應(yīng)用,即而得到相應(yīng)的測試腳本,對該腳本可以進(jìn)行編輯和調(diào)試。在記錄的過程中可針對被測應(yīng)用中所包含的功能點(diǎn)進(jìn)行基線值的建立,換句話說就是在插入檢查點(diǎn)的同時建立期望值。在這里檢查點(diǎn)是目標(biāo)系統(tǒng)的一個特殊方面在一特定點(diǎn)的期望狀態(tài)。通常,檢查點(diǎn)在QARun提示目標(biāo)系統(tǒng)執(zhí)行一系列事件之后被執(zhí)行。檢查點(diǎn)用于確定實(shí)際結(jié)果與期望結(jié)果是否相同。

6、Test

Partner是一個自動化的功能測試工具,它專為測試基于微軟、Java和Web技術(shù)的復(fù)雜應(yīng)用而設(shè)計。它使測試人員和開發(fā)人員都可以使用可視的腳本編制和自動向?qū)砩煽芍貜?fù)的測試,用戶可以調(diào)用VBA的所有功能,并進(jìn)行任何水平層次和細(xì)節(jié)的測試。TestPartner的腳本開發(fā)采用通用的、分層的方式來進(jìn)行。沒有編程知識的測試人員也可以通過TestPartner的可視化導(dǎo)航器來快速創(chuàng)建測試并執(zhí)行。通過可視的導(dǎo)航器錄制并回放測試,每一個測試都將被展示為樹狀結(jié)構(gòu),以清楚地顯現(xiàn)測試通過應(yīng)用的路徑。

7、Holodeck

強(qiáng)大的故障植入軟件測試工具Holodeck is an advanced fault-injection

tool that gives you the power to attack an application while it monitors and

logs everything your application does - every function call, registry entry,

piece of data read or written.

8、Telelogic

TAUTAU第二代包含三個最新的、最強(qiáng)大的技術(shù)用來加速大規(guī)模軟件開發(fā)和測試:統(tǒng)一建模語言(UML)及它的許多最新修訂版本中的特性,UML2.0;功能強(qiáng)大的測試語言TTCN-3和新的構(gòu)造系統(tǒng)的方法:Model

Driven Architecture(模型驅(qū)動構(gòu)架)。這三個新的業(yè)界標(biāo)準(zhǔn)結(jié)合成TAU的已經(jīng)過認(rèn)可的軟件開發(fā)平臺,形成了一個系統(tǒng),一個一流的穩(wěn)定可靠的工具解決方案。TAU第二代是系統(tǒng)與軟件開發(fā)解決方案的一個突破,它把業(yè)界從使用了太長時間的手工、易出錯、以代碼為中心的方法中釋放出來,自然而然地邁向下一步,一個更加可視化、自動化及可靠的開發(fā)方法。

9、TelelogicTAU/Tester

是基于通用測試語言TTCN-3,用于自動化的系統(tǒng)和集成測試的強(qiáng)大工具。TAU/Tester以現(xiàn)代化的開發(fā)工具為基礎(chǔ),提供高層測試功能,支持整個測試生命周期,加速自動化測試。TAU/Tester可使用戶特別關(guān)注于測試的開發(fā),因?yàn)門TCN-3語言是獨(dú)立于開發(fā)語言或測試設(shè)備的,且是抽象和可移植的。

Android手機(jī)自動化測試工具

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

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

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

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

5、TestWriter是上海博為峰結(jié)合多年為企業(yè)做測試服務(wù)的經(jīng)驗(yàn)所研發(fā)的一款具有自主知識產(chǎn)權(quán)的自動化測試工具,跨Web、Android、iOS三大平臺,為企業(yè)用戶提供真正的低成本、高效率的自動化測試,引領(lǐng)軟件測試自動化運(yùn)用由技術(shù)層面向業(yè)務(wù)層面轉(zhuǎn)變。用戶可在TestWriter中通過統(tǒng)一圖形化界面輕松創(chuàng)建測試計劃,并驅(qū)動執(zhí)行引擎完成自動化測試任務(wù),有效降低了測試人員能力要求及腳本維護(hù)工作量,讓自動化測試更簡單,更專注于業(yè)務(wù)。

app自動化測試工具

Monkey Runner

Monkey Runner是AndroidSDK提供的測試工具。嚴(yán)格來講Monkey Runner它其實(shí)就是一個Api工具包,它是比Monkey強(qiáng)大,用它是可以編寫測試腳本來自定義數(shù)據(jù)、事件。唯一不足的是腳本用Python來寫,對測試人員來說要求較高,它的學(xué)習(xí)成本也是比較高的。

Monkey

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

Ui Automator

Ui Automator這個工具也是Android提供的自動化測試框架,基本上支持所有的Android事件操作,對比Instrumentation它不需要測試人員了解代碼實(shí)現(xiàn)細(xì)節(jié)(可以用Ui Automatorviewer抓去App頁面上的控件屬性而不看源碼)。

它是基于java,因此它的測試代碼結(jié)構(gòu)比較簡單、編寫也是比較容易、學(xué)習(xí)成本,可以是一次編譯,所有設(shè)備或模擬器都能運(yùn)行測試,能跨App。它的缺點(diǎn)是只支持SDK16(Android4.1)及以上,不支持HybirdApp、WebApp。

Espresso

我們聽說過的Espresso是Google的開源自動化測試框架。它是相對于Robotium和UIAutomator,它最主要的特點(diǎn)就是規(guī)模是更小、更加的簡潔,并且API是更加的精確,編寫的測試代碼簡單,由于是基于Instrumentation的,因此是不能跨App。

Appium Android自動化框架

這個框架是iOS,android自動化測試的一個框架。它是可以支持多種的語言:Java,C#,Ruby也是可以支持。并且是還可以去調(diào)用selenium的API,所以一般是可以利用selenium來測試在手機(jī)上面的網(wǎng)頁應(yīng)用。

研究過appium,它不僅是支持云計算服務(wù),還可以為客戶提供許多虛擬手機(jī)來測試,這塊不過是付費(fèi)的。如果你想要的要求越多,你就必須付更多的費(fèi)用,這是它的特點(diǎn)所在。

軟件自動化測試的工具是比較多的,不同的軟件也是有它的不同的特點(diǎn),功能上的差異,如何深入了解這些工具并且是合理的使用,這是我們需要做的事情。

猜你還感興趣的:

1. ios自動化測試框架有哪些

2. 軟件QTP自動化測試

3. ios自動化測試流程

4. ios自動化測試工具有哪些

5. 常用的自動化測試工具及流程

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

TestNG介紹

TestNG意為test next generation,是Java中的一個測試框架,Java中已經(jīng)有一個JUnit的測試框架,類似于JUnit和NUnit,但TestNG比JUnit功能更加強(qiáng)大,使用也更方便,測試人員一般用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 注解的方法將只運(yùn)行一次,運(yùn)行所有測試前此套件中。

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

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

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

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

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

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

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

@BeforeMethod 注解的方法將每個測試方法之前運(yùn)行。

@AfterMethod 被注釋的方法將被運(yùn)行后,每個測試方法。

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

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

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

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

@Test 標(biāo)記一個類或方法作為測試的一部分。

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)用測試用例,測試用例之間存在依賴關(guān)系,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點(diǎn)失敗");

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忽略測試

當(dāng)測試用例還沒準(zhǔn)備好時,可以給測試用例加上@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特點(diǎn)

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

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

3、支持?jǐn)?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定義一個測試套件,可以設(shè)置是否使用多線程,可包含多個測試用例或者測試group。

testng.xml 配置詳解

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

以下詳細(xì)XML規(guī)則

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

suite

–tests

—-parameters

—-groups

——definitions

——runs

—-classes

–parameters

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

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

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

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

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

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

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

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

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

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

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

它的優(yōu)點(diǎn):

開源;

支持Native App、Hybird App、Web App;

支持Android、iOS、Firefox OS;

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

它的哲理是:

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

支持很多語言來編寫測試腳本,Java、Javascript、PHP、Python、C#、Ruby等主流語言;

不需要為了自動化測試來重造輪子,因?yàn)閿U(kuò)展了WebDriver。(WebDriver是測試WebApps的一種簡單、快速的自動化測試框架,所以有Web自動化測試經(jīng)驗(yàn)的測試人員可以直接上手);

移動端自動化測試應(yīng)該是開源的;

它的設(shè)計理念:

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

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

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

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

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

相關(guān)限制:

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

總結(jié):

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

如何選擇Android自動化框架的幾點(diǎn)拙見

首先由于我自己也是個新手,也是在學(xué)習(xí)各種框架然后給公司項(xiàng)目選定相應(yīng)自動化框架,研究移動自動化測試框架也就近段時間而已,所以我只能從我自己今天為止的認(rèn)知角度給各個框架抒發(fā)我自己的拙見,你看是否能從中接納一二吧(對于我自己的話還需要再花一段時間去學(xué)習(xí)各個框架才能確定哪個/些是適合我們項(xiàng)目的了,也許到時我會寫個正式的總結(jié))。

根據(jù)你的要求,應(yīng)該不會考慮MonkeyRunner和Robotium,但我還是想跟你說下其實(shí)Robotium還是挺不錯的,如果你沒有考慮跨進(jìn)程調(diào)用其他APP的話。至于MonkeyRunner我就不大推薦了,你可以看下我對金陽光老師的一個評論的回復(fù)《MonkenRunner通過HierarchyViewer定位控件的方法和建議》(文章最后我干脆也貼出來了)。至于Robotium,你對比下本人博客里面各個框架編寫的Note的測試示例就可以看出來Robotium相對其他框架會簡介很多,況且發(fā)展的比UIAutomator和Appium長久很多,所以也應(yīng)該會更成熟,和Eclipse集成調(diào)試起來也很方便。比起后兩者如果有不足的話我覺得就以下幾點(diǎn)吧:

1. 所有的操作抽象到一個Solo類里面,缺乏面向?qū)ο蟮木幊趟枷?,有時會讓人不適應(yīng)。如果你熟悉C語言等面向過程的語言思想的話應(yīng)該沒有問題。

2. 獲取控件的方法比較缺乏,大概就幾種:通過Text,ID, ClassName,Index。沒有后兩者的多種多樣

3. 跨進(jìn)程:因?yàn)榈讓邮褂肐nstrument框架,測試包和被測應(yīng)用包打包在一起作為一個進(jìn)程運(yùn)行而線程間通過instrumentaiton進(jìn)行通信,導(dǎo)致了逃不出這個進(jìn)程設(shè)沙箱(sandbox)

4. 做不了模擬鍵盤的測試(但同時這個也是Robotium非常巨大的優(yōu)點(diǎn),因?yàn)椴幌窈髢烧吣菢有枰{(diào)用鍵盤導(dǎo)致輸入的各種各樣的問題),因?yàn)镽obotium輸入讀出其實(shí)是直接對控件的text屬性進(jìn)行操作沒有通過鍵盤驅(qū)動的,你如果做過UI編程應(yīng)該就明白我的意思了,因?yàn)橛涀∧愕臏y試代碼和目標(biāo)應(yīng)用是打包在同一個進(jìn)程中的,同一個進(jìn)程中想訪問另外一個線程的某個變量,運(yùn)用相應(yīng)的IPC(Interprocess Communication)機(jī)制當(dāng)然是沒有問題的了。

然后到了你問的主題UIAutomator和Appium的對比,我個人是這樣看的:

1. UIAutomator是親爹(google)生的,所以可以保證后續(xù)的開發(fā)維護(hù)力量,除非google倒閉(這里我有點(diǎn)不懂的是為什么google對Monkeyrunner的態(tài)度這么讓人摸不著頭腦,具體請看以上我說的對MonkeyRunner的評論)

2. Appium雖然不是親爹生的,但是干爹實(shí)力雄厚把它武裝的無所不能(android,ios,firefox,browser通殺),單單以android來說,底層用得還是UIAutomator,所以只要它能及時跟上UIAutomator的更新,功能上面我不是很擔(dān)心。

3. 但是也這是Appium的這種架構(gòu):UIautomator/seledroid-Appium Server-Selenium/AppiumDriver-Test Case (《Appium架構(gòu)框架圖整理》),導(dǎo)致框架有點(diǎn)復(fù)雜,當(dāng)問題出現(xiàn)的時候調(diào)試起來比較難以定位,不知道哪個模塊出錯了。但是說道調(diào)試,總比UIAutomator好,起碼Appium可以直接集成到eclipse上面進(jìn)行debug,UiAutomator卻每次都要push到目標(biāo)機(jī)器然后再去執(zhí)行,怎么調(diào)試呢?到現(xiàn)在為止我知道的只能原始的print了。

4. 向下兼容問題:Appium可以通過底層UIAutomator/Selendroid(不記得是不是這名字了)通殺;UIAutomator只能在API Level

17(包含)以上使用

5.語言支持:appium基本通殺,UIAutomator用java足矣

6.跨平臺:如你所說的只是android兩者都沒有問題,如果往后需要擴(kuò)展到ios,那么建議appium

7.bug數(shù)量:UIAutomator有的問題Appium都會有,UIAutomator沒有的問題Appium也有可能有^_^(不過我還是很看好Appium的)

8. 輸入問題,都有bug,具體請查看我相應(yīng)blog,特別是中文輸入,這就是為什么我剛才特意提出Robotum的原因之一

9. WebView支持:UIAutomator據(jù)說今年年初已經(jīng)開始支持,個人沒有這方面要求所以沒研究;Appium的框架用的Selenium本身就是PC上最流行的開源Web測試框架,所以必然支持了。注意這你你要有點(diǎn)android編程知識了,WebView指的不僅是WebView控件還包含如用sencha+phonegap把webview封裝成一個跨平臺app的情況了,具體如果不清楚請google。

其他區(qū)別我現(xiàn)在就沒有想到了,希望能幫助到你,從我自己的角度來看,我覺得UIAutomator繼續(xù)往前發(fā)展是必然的了,但是它不可能最終支持ios。至于Appium我同樣有很大的信心它會繼續(xù)往好的方向發(fā)展,且考慮到它的跨平臺支持,基于node.js(現(xiàn)在非常流行哦),兼容性等,我如果是你的話我會考慮用Appium的(拋開Robotium不說,如果你又要考慮的話就需要你根據(jù)我之前說的再總結(jié)下了^_^)。

我覺得這個可以類比之前的微軟和Borland的關(guān)系,API是Windows,但是IDE是Borland的,各專所長了??上Вɑ蛘邞c幸)后來微軟發(fā)力一下把Borland打得滿地找牙一蹶不振,不過這是題外話了,略過......

對了,我有可能會對這封郵件整理下發(fā)到博客了,也希望其他網(wǎng)友能評點(diǎn)一二給你出主意。今晚本來想看下easy_monkey的知識了,給你寫這個email變成臨時性總結(jié)了。^_^

給金陽光老師評論的回復(fù)如下(關(guān)于MonkeyRunner的個人觀點(diǎn))

-----------------------------------------------------------------------------------------------------------------

回復(fù)haorenmin2008:首先膜拜下,金老師大駕光臨蓬蓽生輝啊!

對于后者,確實(shí)如此,UIAutomator需要API Level17(包含)以上。

對于前者,因?yàn)檫€沒有MonkeyRunner的項(xiàng)目經(jīng)驗(yàn),所以是否很強(qiáng)大我就不敢妄加評論了,但是在我近來的tryout過程中,鄙人有以下的一些不成熟的認(rèn)知:

1. 感覺功能不是很穩(wěn)定,之前嘗試一個MonkeyDevice的getProperty方法,竟然有時成功有時失敗。

2. 性能不好,特別是當(dāng)我們要用到hierarchyviewer的功能的時候很明顯。

3. 只能用MonkeyImage的sameAs做截屏的對比,雖然加上hierarchyviewer后可以用它的getText,但還是很有限。

4. 控件定位方面主要是坐標(biāo)點(diǎn)和HierarchyViewer提供的根據(jù)ID。前這兒在UI布局稍微有調(diào)整位置的話就需要跟著變動,沒有像其他控件類框架那樣做高層抽象除非換控件不然都不需要怎么變動;后者的話很多控件是沒有id或者是有多個控件id相同的。

5. 可調(diào)試性也不強(qiáng)(起碼我摸索了這幾天沒有發(fā)現(xiàn)一個很好的調(diào)試方法,比如IDE Ecilpse等的集成調(diào)試方法)

6. HierarchyViewer的穩(wěn)定性也讓我擔(dān)憂,碰到過幾次取控件信息的時候報exception的。

7. 資料稀缺,不僅百度,google也一樣

8. Google支持讓人覺得摸不著頭腦,sdk給出的API和官方提供的API竟然不一致,以MonkeyDevice為例子,而sdk多出來的API竟然還不能用,google出來的信息不超過10個page,還要很多都是重復(fù)的石沉大海的網(wǎng)友報的問題。

9. 再一個的我真心搞不懂為什么本身java寫的庫非要搞個jython來調(diào)用,首先我不說性能損耗(這點(diǎn)肯定是有的,native庫當(dāng)然用native語言調(diào)用效率最好嘛),我想在eclipse上對以下的"device."做自動補(bǔ)全是做不到的“device = MonkeyRunner.waitForConnection()\n device.",而只有直接調(diào)用個構(gòu)造函數(shù)實(shí)例化的device = MonkeyDevice(xxx)才能做到,這個我不相信是我配置的問題,換了個jython標(biāo)準(zhǔn)編譯器以調(diào)用標(biāo)準(zhǔn)庫問題同樣存在。


分享名稱:android自動化測試框架,android自動化測試工具
鏈接URL:http://weahome.cn/article/phhgsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部