A hybrid app consists basically of websites packaged in a native wrapper. They are primarily developed in web technologies (HTML5, CSS, JavaScript) but run inside a native container, thereby giving a feel that it is a native app. Hybrid apps rely on HTML being rendered in the mobile browser, with a limitation that the browser is embedded within the app. This approach allows you to have one code base for all the mobile operating systems: iOS, Android, and Windows. A web-to-native abstraction layer enables access to device-specific capabilities, which are not accessible in Mobile Web apps otherwise. Examples include a camera, on device local storage, and an accelerometer.
Hybrid app is the most favored approach for companies with a web page in existence. Those companies often build hybrid apps as a wrapper over the web page. Tools such as PhoneGap and Sencha Touch allow one to build a hybrid app. These apps can be downloaded via the respective app stores. Here's an example of a hybrid app--it's an Evernote app and can be downloaded from the respective app store:
The mobile testing ecosystem is not yet crowded; there are only a couple of tools that are really worth trying and learning, and Appium is the most promising one.
Appium is an open source tool to automate mobile applications. It's a cross-platform automation tool, which will help in automating the different types of mobile apps that we discussed earlier.
The supported mobile operating system platforms by Appium are as follows:
Let's take a detailed look at Appium, how it is architected, and how it facilitates automation.