Appium is an open-source tool for automation of native mobile apps, web or hybrid applications for iOS and Android operating systems.Native apps are the apps that are created using the Android, iOS or Windows software development kits (SDKs). Web apps for mobile are either mobile versions of a full-size desktop websites, sometimes with limited functionality or web applications developed specifically for mobile use. Appium has support of Safari in case of iOS and Chrome (or default system browser in case of some manufacturers) if we are talking about Android.Hybrid apps are a wrapper for a webview, which is a native controller for interaction with web content inside a native app. There are a lot of examples of hybrid apps and the simplest example will be a PlayStore on Android. By the way, there are a lot of resources that allow you to build a web app that later is wrapped into a native app.
What is great about Appium is its “cross-platform” specifics: its API allows you to write tests for multiple platforms. This means that there is a possibility of using same code between iOS, Android and Windows test suites.
1. You do not have to modify your code or recompile your app in order to automate it. This basically means that you will be automating the same app that you final customers will be using. This is beneficial in every way you can think about it: from time/cost consumption perspective you do not need to use your development force to make two apps instead of one and then modify both once new versions are ready for testing. From QA perspective you are testing the actual app and will see how exactly it behaves, so there is no need to manually re-check release build before uploading them to App Store or PlayStore.2. You are not locked to a certain language or framework to write and run your tests. Appium wrapps any vendor-provided network in one API which is WebDriver API (also known as Selenium WebDriver). It specifies a client-server protocol called JSON Wire Protocol which defines that with this client-server architecture client written on any language can be used to send HTTP requests to server.3. They are not re-inventing a mobile automation network, they just use old but gold WebDriver and in addition to that they provide you a bunch of extra API methods that are extremely useful for mobile automation.4. Their framework is open source, which speaks for itself. You can use and modify it according to your needs and wishes.