Organizations committed to their mobile application quality efforts are faced with making an important choice regarding where to run their mobile tests. The default for development teams in large enterprises is to use real mobile devices. While this gives them more accurate test results, it is not ideal for scaling and automation of testing.
Startups and SMBs may ignore real devices altogether as they’re perceived to be too expensive, and opt for the more convenient option — emulators and simulators, or virtual devices. In doing so, they miss out on the real-world feedback that a mobile device can provide.
This guide discusses the strengths and weaknesses of each of these options, and suggests a way to use them to take QA efforts to the next level.
In an attempt to move away from testing on physical devices, some organizations have switched to using emulators and simulators for their mobile app testing and deep link testing. However, it’s a best practice to incorporate a combination of real devices and virtual devices (mobile emulators and simulators) for the most comprehensive mobile app testing strategy. Let’s dive into what emulators and simulators are and when they should be used for mobile testing.
An emulator, as the term suggests, emulates the device software and hardware on a desktop PC, or as part of a cloud testing platform. It is a complete re-implementation of the mobile software written in a machine level assembly language. The Android (SDK) emulator is one such example.
A simulator delivers a replica of a phone’s user interface and does not represent its hardware. A simulator is a partial re-implementation of the operating system written in a high-level language. The iOS simulator for Apple devices is one such example.
A real device is the actual hardware (plus OS and built-in support resources) on which your software will run in production. For mobile software, it's the mobile phone or tablet. For specialized industrial, scientific, or medical monitoring software, it's the actual monitoring device.
Emulators and simulators have one basic feature in common: they are virtual devices, not real-world test environments. The most important distinction when it comes to software for mobile devices is the difference between virtual environment testing and real device testing.
Real device testing is the practice of installing the latest build of a mobile app on a real mobile device to test the app’s functionality, interactions, and integrations in real-world conditions. Real device testing is a recommended component of a comprehensive mobile app testing strategy, especially when used in combination with virtual devices (Android emulators and iOS simulators).
Emulators and simulators are faster to provision than real devices, as they are software-driven. Additionally, they enable parallel testing and test automation via external frameworks like Appium, Espresso, and XCUITest.
Emulators and simulators enable parallel testing in a way that can’t be achieved with devices in a lab. Because tests on emulators and simulators are software-defined, multiple tests can be run on tens of emulators and simulators at the click of a button without having to manually prepare each emulator/simulator for the tests.
However, mobile QA teams that start to use emulators and simulators may swing to the other extreme of stopping all testing on real devices. While this may speed up the testing process, it comes with a critical drawback — emulators/simulators can’t fully replicate device hardware. This makes it difficult to test against real-world scenarios using an emulator/simulator. Issues related to the kernel code, the amount of memory on a device, the Wi-Fi chip, layout changes, and other device-specific features can’t be replicated on an emulator/simulator.
To get the most out of your mobile testing efforts, you will need a mix of both real devices and emulators and simulators as part of your mobile testing strategy. One option promises more accurate test results, while the other delivers greater agility.
Emulators and simulators are complementary to real devices, but they can’t deliver the real-world environment that a device can deliver. Real devices and virtual devices (emulators/simulators), when used together in an automated testing environment, enable modern mobile development and testing teams to get the most out of their mobile testing efforts.
In addition, testing in parallel across multiple platforms helps speed up tests while optimizing costs.
Here’s a quick summary of when to use real devices and emulators and simulators in your testing.
What to Test | Real Devices | Emulators/Simulators |
Functional testing for large integration builds | ✅ | |
UI layout testing | ✅ | ✅ |
Mobile web testing | ✅ | ✅ |
Compatibility testing | ✅ | |
Manual/ interactive testing on physical devices | ✅ | |
Unit/ System testing | ✅ | |
Beta testing | ✅ | |
Error monitoring and reporting | ✅ | |
Hardware dependencies (CPU, GPS etc.) | ✅ | |
Display testing (pixels, resolutions) | ✅ | |
Replicate issues to match exact model | ✅ | |
Camera mocking | ✅ | |
Push notifications (real services) | ✅ | |
Natural gestures (pinch, zoom, scroll) | ✅ |
Although, in general, you would first test on emulators and then test on select real devices just before deployment, in some cases it makes sense to perform real-device testing at the same time as emulator testing. If you are trying to achieve a particularly fast release velocity, running real-device tests earlier in the CI/CD pipeline can help to save some time by eliminating the need for a separate suite of real-device tests.
Any organization that competes in the mobile marketplace cannot afford to ignore the value of using real devices, emulators, and simulators in their mobile quality efforts.
The Sauce Labs Real Device Cloud provides instant access to the most extensive range of iOS and Android devices, new/beta operating systems (OS), and test automation frameworks including Appium, Espresso, and XCUITest. With the Sauce Labs Real Device Cloud, mobile app development and QA teams can test securely from virtually anywhere, anytime, on any device/OS combination.
Sign up for a Sauce Labs free trial to start testing your mobile apps on real devices today.