March 25, 2019
The mobile scene is growing faster than ever, and with that in mind, we show some good practices to achieve a solid mobile testing.
Author: Melina Alvear
Mobile usage is a hot topic. Everywhere you look today, people are on their smartphones and tablets, among others, so this is why it is not strange to see how app downloading is growing. Imagine that in the first half of 2018, around 205.4 billion apps were downloaded versus 178.1 billion in 2017, and according to Statista, by 2022, the number of total app downloads will increase to 258.2 billion.
Mobile apps today & the testing challenges
The number of different devices, screen sizes, and operating systems means that individual platforms have technical challenges and issues that teams must address.
Today, the standard smartphone or tablet has a touch screen and a variety of sensors such as GPS and accelerometers, proximity sensors, and gyroscopes. WiFi can also be adjusted based on your location, where you can use a mobile app to buy anything from an airline flight to clothing, or you can use an app to access your home banking, among others.
These particularities definitely bring major challenges for QC teams globally. In order to face them, developers and testers need to take into account new behaviors like swipes, taps, scrolls, and orientation.
There are a variety of emulators for all mobile operating systems on the market (Android, iOS, Windows OS), but in reality, these differ extremely from the actual behavior of physical devices. In addition, each manufacturer has its own Operating System (OS), adjusted to their mobile devices and peculiarities. Therefore, with an emulator, it is complicated to replicate the behavior of the device and perform the tests with precision.
So, what should a tester consider when testing mobile? These are some good practices in order to have a solid mobile testing.
1. Test on actual mobile devices
Emulators are very efficient for an early testing phase. However, if all your tests are running on emulators, your app will probably fail in real-world scenarios. Real mobile devices let you test many key device capabilities like battery drain, calls, SMS interruption, camera functionality, carrier, and connectivity issues, as well as so much more.
Emulators test the app to work on all devices but do not take into consideration each unique configuration. For example, if there is an issue that affects only iPhones, you are not likely to find it using an emulator.
With the number of devices available, it might be exhausting to test your app on every appliance and OS combination, but that is not possible considering the number of combinations you would need to test for. The best approach is to identify the most used devices among your user base and test on them. If your testing covers 80% of devices, you can be fairly confident of your test results.
2. Automate testing
Automated testing is even more essential with mobile apps than traditional apps. With automation, you can run tests in parallel across numerous emulators and real devices. This speeds up test results and helps bring your apps to the market faster. Plus, you can save configurations before running tests and reuse them whenever they are needed. When shared across teams, this can save a lot of time.
However, not every test should be automated. Some tests are best performed manually, especially if they are rarely run and require a lot of setup.
3. Keep pace with your web app
With the rise of continuous delivery and deployment, web apps are being released on a daily basis. This is possible because the app is released to users directly. However, mobile apps need to be approved by the operating system providers (iOS and Android), as they can enforce stringent policies that slow down or even block releases.
iOS and Android have been taking steps to enable faster releases. For example, the auto updating has simplified users’ lives by avoiding repeated notifications and permissions.
4. Do performance and load testing
It is great to test as early as possible in the software development cycle to identify bugs before they make it to production, but when it comes to performance and load testing, tests are best done later in the cycle.
You could leverage numerous cloud-based emulators to mimic user behavior when testing for traffic issues. A tool like Jmeter can help with load testing. In addition to this, you will also need to test performance on several real devices to check for issues like memory leaks and interruption of other apps or calls.
5. Use mobile-specific tools
It is tempting to get by with manual functional testing done by humans, but mobile testing done the right way requires purpose-built mobile testing tools. Fortunately, today, there are many interesting tools for various objectives in mobile testing.
Another useful tool is Espresso that helps you write and automate User Interface (UI) tests easily. Ultimately, Google’s EarlGrey is the iOS alternative to Espresso.
Appium leads the way as the most capable and popular mobile testing platform. Along with it, there are many other tools, such as Robotium, an easy-to-use testing tool for Android that records any action you perform in the app and saves it as a test case.
To sum up
The competition for customer attention and trust is more intense than ever, knowing that slow network connections, a complex navigation, and a hideous UI can be anyone’s downfall.
In mobile testing, emulators are needed, but for excellent quality, it is necessary to know which devices are most used so that you know which ones to work with. It is also important to test the applications under varying network conditions to make them functional across challenging network scenarios.
Automated testing can be implemented to check the performance of an application and verify its behavior by applying load/stress factors. However, both types of testing, manual and automated, are essential to test mobile apps and check them for any failure routes or bugs.