1,不需要為了自動(dòng)化而且重新編譯或修改測(cè)試app;
2,不應(yīng)該讓移動(dòng)端自動(dòng)化測(cè)試限定在某種語(yǔ)言和某個(gè)具體的框架;也就是說(shuō)任何人都可以使用自己最熟悉最順手的語(yǔ)言以及框架來(lái)做移動(dòng)端自動(dòng)化測(cè)試;
3,不要為了移動(dòng)端的自動(dòng)化測(cè)試而重新發(fā)明輪子,重新寫一套驚天動(dòng)地的api;也就是說(shuō)webdriver協(xié)議里的api已經(jīng)夠好了,拿來(lái)改進(jìn)一下就可以了;
4,移動(dòng)端自動(dòng)化測(cè)試應(yīng)該是開源的;

軟件優(yōu)勢(shì)
因?yàn)锳ppium官方版在所有平臺(tái)上都使用了標(biāo)準(zhǔn)的自動(dòng)化接口, 所以你不需要以重新編譯或者修改你的 app。
你可以用你喜歡的開發(fā)工具,使用任何 WebDriver 兼容的語(yǔ)言來(lái)編寫測(cè)試-用例。比如 Java, Objective-C, JavaScript with Node.js (in both callback and yield-based flavours), PHP, Python, Ruby, C#, Clojure, 或者 Perl。 可以使用標(biāo)準(zhǔn)的Selenium WebDriver API和特定語(yǔ)言的客戶端庫(kù)。
你可以使用任何測(cè)試框架。
如果沒(méi)有 Appium,你就只能用 Javascript 來(lái)寫 Apple 的 UIAutomation 腳本,并且只能通過(guò)Instruments 應(yīng)用來(lái)運(yùn)行你的測(cè)試。同樣的,在 Google 的UiAutomator體系下,你只能用 Java 寫你的測(cè)試案例。Appium 最終開啟了跨平臺(tái)原生移動(dòng)自動(dòng)化的可能。
appium的核心其實(shí)是一個(gè)暴露了一系列REST API的server。
這個(gè)server的功能其實(shí)很簡(jiǎn)單:監(jiān)聽一個(gè)端口,然后接收由client發(fā)送來(lái)的command。翻譯這些command,把這些command轉(zhuǎn)成移動(dòng)設(shè)備可以理解的形式發(fā)送給移動(dòng)設(shè)備,然后移動(dòng)設(shè)備執(zhí)行完這些command后把執(zhí)行結(jié)果返回給appium server,appium server再把執(zhí)行結(jié)果返回給client。
在這里client其實(shí)就是發(fā)起command的設(shè)備,一般來(lái)說(shuō)就是我們代碼執(zhí)行的機(jī)器,執(zhí)行appium測(cè)試代碼的機(jī)器。狹義點(diǎn)理解,可以把client理解成是代碼,這些代碼可以是java/ruby/python/js的,只要它實(shí)現(xiàn)了webdriver標(biāo)準(zhǔn)協(xié)議就可以。
這樣的設(shè)計(jì)思想帶來(lái)了一些好處:
1,可以帶來(lái)多語(yǔ)言的支持;
2,可以把server放在任意機(jī)器上,哪怕是云服務(wù)器都可以;(是的,appium和webdriver天生適合云測(cè)試)