Appium is an Apache licensed project to create mobile apps. Mobile is taking over the world, they are becoming more complicated, so how do we make sure they stay high quality? Testing and QA are painful, but the risk also grows with complexity. Automation (ultimately CI and continuous deployment) is the solution for faster development cycles.
Appium is a cross-platform solution for native and hybrid web-apps. It also makes automated testing possible. Competitors don’t allow to develop apps and write test for all platforms. Philosophy: test the same app as what is pushed to the marketplace; test should be language agnostic (test in same language as the app); use a standard CI API (Selenium).
Appium is written in nodejs, and it talks to the simulator (using the tools that the vendor provides). It automates the UIs (gestures etc) and verifies what is displayed on the screen. It’s an HTTP server that handles (Selenium) WebDriver sessions. Selenium is the standard for browser automation – in the future, you won’t need a server because browsers will include it. Selenium has clients in every language. Appium extends it with some mobile-specific behaviours. It works on standardising these.
The test sets up a fixture to connect to the server, then accesses UI elements by name or by other info, and then either activates interactions or checks their status. You don’t even need the app’s source to test it.
To integrate in CI, open source projects can use saucelabs.