Mobile Application Testing using Automation frameworks
By Arnab Roy Chowdhury, Community Contributor and Pradeep Krishnakumar, Manager - July 29, 2019
In the last decade, there has been a proliferation of smartphone users. Today, US citizens are spending more time on mobile devices than on television.
Source – eMarketer.com
Predominantly, smartphone users spend time on mobile applications. Thus developing a great mobile app experience is essential. To ensure their apps work seamlessly on Android and iOS, proper testing before releasing it in the respective app stores is critical.
In this article, we will discuss the best practices for mobile application testing. We will talk about the most popular testing frameworks and see how to use some of them like Appium, Selendroid.
Automated Mobile Application Testing Frameworks
There are many frameworks and tools used for mobile application testing. Some of the most popular ones are:
Appium is a popular open-source tool used for automated mobile app testing. A developer can test their native or hybrid iOS and Android applications using Appium. Appium doesn’t work alone. It runs the test cases using the WebDriver interface. Since it supports multiple platforms, testers can also reuse their source code for testing on iOS and Android.
Calabash is a mobile application testing framework that works with multiple languages. It supports Ruby, Java, Flex, and .NET. Testers can use APIs for enabling native applications that run on touch screen devices. This framework has libraries that allow test scripts to interact programmatically with native and hybrid apps.
Selendroid is also known as selenium for mobile apps for Android. Testers can do native and hybrid mobile application testing using Selendroid. Selendroid can execute parallel test cases on multiple devices, similar to Selenium for cross browser testing.
Espresso is a useful testing framework for automating User Interface (UI) testing of a mobile app. Given testing the user interface of an application is essential before deploying it, app developers and app testers widely use Espresso. Developers can create a scenario and record how they interact with a device. Next, they can add assertions that verify the behavior of the UI elements of the app by capturing snapshots. The tool saves the recording and generates UI test cases that they can use to test their application.
Robotium is a popular open-source tool dedicated for testing android applications only. The test cases are written in Java. Robotium is popular for its ability to write automated black-box test cases. It automates multiple activities that a tester can execute on their android app and takes minimal time to write test cases.
Other than these, there are other popular tools like Monkeytalk, Testdroid, Frank, UIAutomator.
Tips and Best Practices for Automated Mobile App Testing
Below are some best practices that engineering teams should follow while thinking about automated mobile application testing :
- Make Application Testable
In the current agile age, developers have to build applications that are ready for testing. Developers should actively discuss with testing teams to set guidelines. For example, developers should give elements a unique ID to make it testable.
- Do not overuse the XPath
XPath is a query language that can select nodes in an XML file. It can be used for navigating across elements while testing. Google or Apple does not natively provide XPath type queries. So if testers are using them a lot, Appium is forced to make some calls. These under the hood calls find XPath supporting elements but negatively impact the performance.
- Arrange Selectors in the Right Order
XPath is location-based. It is slow when compared to the other locators in selenium like ID, Link Text, or Name. Order the selectors in a way that ID comes first and XPath comes last, to identify elements quicker.
- Use Accessibility IDs
Instead of excessive usage of XPath, testers can make use of accessibility ID locators. If users set accessibility IDs on their elements, it makes them more testable and increases the testing scope of their application.
- Consider the View states of the Application
View state is a technique used for storing the page value when the application sends or receives information from the server. Suppose there are 15 test cases for specific functionality of the application. Among them, 10 test cases repeat the same functionality of logging in and going to the page. This duplication is a huge time waste. While developing, setup the view state of the application in a way that testing begins just where it is needed.
- Don’t compromise with Emulators and Simulators
Emulators and Simulators partially mimic real devices. However, the performance of an application varies based on the software and hardware configuration of the users’ real devices. Thus, testing mobile applications on real devices is a must. Even Google and Apple recommend doing so before submitting apps on the Google Play and App store.
An optimal way to get maximum coverage is to use a cloud-based testing product like BrowserStack, which provides access to 2000+ real devices across iOS and Android.
Summing it up
With the increase in smartphone penetration and time spent on mobile devices, ensuring a seamless mobile app experience is critical. To achieve this, teams must adopt the right testing framework. Popular test automation frameworks include Appium, Calabash, Selendroid. Development teams must also keep in mind best practices and should actively work with testing teams to ensure they build applications that are easier to test. Testing must also be done on real devices instead of Emulators and Simulators. All this will help teams ship apps faster and give users a bug-free experience.