That small, mobile but not so little device we’re all holding in our hands is a powerful thing. Its ability to completely takeover our lives is astonishing, technology wise, it’s all the talk and rave. Companies use it, you’re probably using it right now – maybe not to read this article, but it’s definitely not too far away.

Those devices we all use, operate on software that we expect to always work, and when it doesn’t – we get irritated. In order for any device to work properly, all the software that makes it tick, should be tested. Undiscovered bugs or regressions can cause enormous losses for a company and frustrate your target audience.

However, the need for automating mobile application tests, as well as tests for any other platform (web or desktop) was never a consensus. There are several reasons for automation, such as speed of testing, coverage and scalability – automated tests can be performed by a computer much faster than by human hands, cover much wider scenarios and all this can be done concurrently on various environments, configurations and devices. In addition, automation reduces costs – using computers as resources cost less than using human hands. So if it’s so important, what are the right tools that will allow creating, maintaining, managing, executing and easily analyzing results?

Specifically, what are the open source tools that will cause no additional (or minimal) costs to your company and have the highest ROI?

For Apple’s iOS based devices, the iOS UI Automation instruments must be mentioned. It is meant to automate user interface tests for your iOS app through test scripts written in JavaScript and special API standards which will only automate iOS apps.

For Google’s Android based devices, the UI Automator testing framework – which provides a set of APIs that help building UI tests to perform interactions with user and system Android apps. As expected, the tests should be written in Java and will only automate Android platforms.

So if every platform has its very own set of tools, created by the platform creators, why bother and search for something else? The answer is complex, but there are several important principals that make the ROI of tests automation high enough:

Testing the same version of the App that will be released to the public.

Writing the tests using the same language/technology for all platforms.

Using a standard API.

Unfortunately, basic frameworks created by Apple and Google do not provide an answer to all these demands, and multiple open-source communities try to create additional tools that try to fill-in these gaps. Some use Calabash from Xamarin, others use the iOS Driver or Selendroid and some use less known tools such as Frank, MonkeyTalk, KeepItFunctional or Robotium. Lately, the most significant player on the stage is Appium. Appium tries to take the best from all worlds, and is considered to be the silver bullet which implements the tests automation principles mentioned above. Appium is an open source cross-platform test automation framework to use with native, hybrid and mobile web apps. Since it’s a black-box testing tool, there is no need for the source code of an App. With Appium it’s possible to automate any mobile app using different languages and have full access to back-end APIs and DBs from your test code.

In order to use any of the frameworks described above, it’s necessary to learn using them. Some frameworks understand a “pseudo language” such as Calabash that uses Cucumber, which lets you express the behavior of an app using natural language that can be understood by business experts and non-technical QA personnel. Others (such as Appium) should be used with Selenium SDKs available for almost any programming language, and interact with a module called WebDriver to send commands to “native” tools (e.g. iOS Automation Instruments / UI Automator). Using a selenium based tool can flatten the learning curve of developers who are already familiar with the syntax from past projects of Web tests automation using Selenium. As a “bonus” most of the frameworks provide App inspectors to analyze the application layout and extract component identifiers that the test will interact with.

Too complicated for you? The more intelligent tools provide a nice and friendly UI, for easy generation of the WebDriver code (such as EZ TestApp), so that even less-technical users will be able to create mobile app tests using short, intuitive and visually interactive wizards.

To summarize, the leading player (as was previously shown here) among the open source tools, is – Appium. Not only because it is open source and implements all the principles of building a successful automation, but also because of the large community that is involved in guiding the project and contributing to it. It’s definitely recommend giving it a try when thinking about mobile app automation.