本文已經遷移到測試教程網,後續更新會在測試教程網更新。html
下面這段介紹來自於appium的官網。linux
Appium is an open-source tool you can use to automate mobile native, mobile web, and mobile hybrid applications on iOS and Android platforms. 「Mobile native apps」 are those written using the iOS or Android SDKs. 「Mobile web apps」 are web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome on Android). 「Mobile hybrid apps」 have a native wrapper around a 「webview」 – a native control that enables interaction with web content. Projects like Phonegap, for example, make it easy to build apps using web technologies that are then bundled into a native wrapper – these are hybrid apps.android
Importantly, Appium is 「cross-platform」: it allows you to write tests against multiple platforms (iOS, Android), using the same API. This enables a large or total amount of code reuse between iOS and Android testsuites.ios
咱們能夠從上面的介紹裏得到這樣的一些信息:git
appium的哲學github
Appium was designed to meet mobile automation needs according to a certain philosophy. The key points of this philosophy can be stated as 4 requirements:web
- You shouldn’t have to recompile your app or modify it in any way in order to automate it.
- You shouldn’t be locked into a specific language or framework to write and run your tests.
- A mobile automation framework shouldn’t reinvent the wheel when it comes to automation APIs.
- A mobile automation framework should be open source, in spirit and practice as well as in name!
appium的設計哲學是這樣的:windows
We meet requirement #2 by wrapping the vendor-provided frameworks in one API, theWebDriver API. WebDriver (aka 「Selenium WebDriver」) specifies a client-server protocol (known as the JSON Wire Protocol). Given this client-server architecture, a client written in any language can be used to send the appropriate HTTP requests to the server. There are already clients written in every popular programming language. This also means that you’re free to use whatever test runner and test framework you want; the client libraries are simply HTTP clients and can be mixed into your code any way you please. In other words, Appium & WebDriver clients are not technically 「test frameworks」 – they are 「automation libraries」. You can manage your test environment any way you like!設計模式
We meet requirement #3 in the same way: WebDriver has become the de facto standard for automating web browsers, and is a W3C Working Draft. Why do something totally different for mobile? Instead we have extended the protocol with extra API methods useful for mobile automation.api
It should be obvious that requirement #4 is a given – you’re reading this because Appium is open source.
首先,爲了可以實現哲學裏描述的第2條,也就是不該該讓移動端自動化測試限定在某種語言和某個具體的框架;也就是說任何人均可以使用本身最熟悉最順手的語言以及框架來作移動端自動化測試;appium選擇了client-server的設計模式。只要client可以發送http請求給server,那麼的話client用什麼語言來實現都是能夠的,這就是appium及webdriver如何作到支持多語言的;
其次,爲了可以實現不要爲了移動端的自動化測試而從新發明輪子,從新寫一套驚天動地的api;也就是說webdriver協議裏的api已經夠好了,拿來改進一下就能夠了;這個思想,appium擴展了webdriver的協議,沒有本身從新去實現一套。這樣的好處是之前的webdriver api可以直接被繼承過來,之前的webdriver各類語言的binding均可以拿來就用,省去了爲每種語言開發一個client的工做量;
最後appium固然是開源的,這也實現了哲學思想裏的最後一點。
下一節講介紹appium的一些基本概念。
本文版權歸乙醇全部,歡迎轉載,但請註明做者與出處,嚴禁用於任何商業用途