Apple’s recent release of a new, modern mobile programming language for iOS, Swift, has taken the mobile app development world by storm. Its adoption by developers has been record-breaking as it continues to climb the charts of most used coding languages. Swift replaces the aging Objective-C, which has been in use for three decades.
As mobile device usage continues to skyrocket and mobile app downloads reach well into the gazillions, other languages and tools will emerge to enable developers to churn out more cool apps and help testers improve app quality. Mobile app testers can already take advantage of more capable testing frameworks to streamline their work, support CI and improve test coverage.
Top 10 Mobile Testing Tools
1. Appium for Android and iOS – Appium is an open source project for cross-platform test automation. Essentially, it is an HTTP server managing WebDriver sessions. It supports tests in any framework and in any language that can create an HTTP request. No app code needs to be modified for testing. Any test is suitable to run on either iOS or Android on real devices or emulators. It supports native, hybrid, and web apps.
2. Calabash for Android and iOS – Maintained by Xamarin, Calabash consists of two open source libraries, one for iOS and another for Android, which automate testing for native or hybrid mobile apps. Used with Cucumber, test cases are written in natural language then translated to test scripts that run within the framework. It works well with Ruby, Java, .NET, Flex and many other programming languages.
3. MonkeyTalk for Android and iOS – Both testers and developers utilize this complete functional test platform for iOS and Android apps. It consists of three components: an IDE, an Agent and scripts. The IDE creates test scripts using record and playback. Agent is a test instrumentation library to which the app links. MonkeyTalk scripts use simple keyword syntax and Ant or Java execution engines. Tests can be data-driven from a spreadsheet using CVS format.
5. Selendroid for Android – No app code modification is required to use Selendroid, which is essentially Selenium for Android apps. Selenium 2 and the WebDriver API are the basis for test code. The framework interacts with multiple devices or device emulators simultaneously. It even supports device hot-swapping. There is an inspection component for recording device UI state for test case creation.
8. Frank for iOS – Frank is an iOS-only test framework combining Cucumber and JSON. A statically linked server inside the mobile app under test interprets JSON and uses UISpec for execution. Although it has the advantage of not requiring app code changes, it is difficult to run directly on devices. It is most suited for emulators and web-based apps.
9. KIF for iOS – KIF stands for Keep It Functional. It is an open source framework developed for iOS mobile app UI testing. It utilizes the Accessibility APIs built into iOS in order to simulate real user interactions. Tests are written in Objective-C, which is already familiar to iOS developers, but not test teams. Apple’s switch to Swift makes its use of Objective-C a disadvantage going forward.
10. iOS Driver for iOS – iOS Driver utilizes Selenium and the WebDriver API for testing iOS mobile apps. Its default is to run on emulators, where execution is faster and scalable. The current version works with devices, but actually executes more slowly in that case. No app source code requires modification and no additional apps are loaded on the device under test. iOS Driver is designed to run as a Selenium grid node, which improves test speed as it enables parallel GUI testing.
At the moment, there appear to be many test framework solutions looking for problems, but that is to be expected as mobile app development and testing tools continue to be developed at a rapid pace. Every framework has its pros and cons, each of which should be weighted relative to the needs of the testing organization and the software products being delivered.
Although a cross-platform test framework probably makes the most sense in most cases, particular features of an iOS or Android-only test tool could make it a better choice. The most important criteria are to use tools that increase automation, have excellent support and appear to have staying power for the long haul.