Testing Mobile Apps on Simulator vs Emulator vs Real Devices
By Shreya Bose, Community Contributor - July 26, 2022
Mobile apps are no longer on their way to becoming a fixture in everyday life. They’re already there. There is, quite literally, an app for everything.
As per a Statista report, “In 2026, consumers are projected to download 143 billion mobile apps from the Google Play Store, up by almost 30 percent from 111 billion apps downloaded in 2021. Consumers will amass approximately 38 billion downloads from the Apple App Store in 2026, an increase of around 15 percent compared to the number of downloads in 2021.”
The importance of mobile apps in people’s lives means they must provide multiple relevant features, be easy to use, and be capable of handling substantial user traffic without any drop in quality of service. This is not an easy task.
- Mobile apps must be designed for a wide range of devices – varying in hardware & software configuration, internet strength (depending on location), screen size, resolution, and much more.
- Ensuring that one app matches all these variables is tough to accomplish, which is why mobile app testing is an integral aspect of software development.
However, in this guide, we’ll understand why testing on real devices is vital when compared to emulators/simulators.
Why use Mobile Simulators & Emulators in the First Place?
To be fair, emulators and simulators do serve their purpose. They can be helpful when debugging software in the early stages of development – testing apps as they are being built. Mobile Simulators and Emulators come with a few advantages that do appeal to developers and testers:
- Price: Mobile Emulators and Simulators are far cheaper than real devices – by a large margin. There are also some free ones for public usage, which makes them an attractive option for teams/companies who cannot invest in a real device lab.
Devs may run their validations (pre-commit) on virtual devices (emulators and simulators) in such cases. This allows them to scale and execute faster for faster release cycles.
- Variety: As mentioned above, it may not be possible for every QA team to access real mobile devices across platforms, manufacturers, and operating systems (including different versions). In that case, mobile simulators can partially fill the gap by virtualizing different device/OS combinations.
- Controlled Device State: For tests to be practical, they must be initiated on a device in a pristine state. This usually requires the device to be at factory settings, and a factory reset often takes time. Factory reset across multiple devices takes even longer and can add up to noticeable development delays.
Virtual machine testing always allow tests to begin from a consistent device state and reduce delays while providing somewhat decent (but still deficient) test environments.
The Problem with Mobile Simulators and Emulators for Testing
While there are some advantages to using virtual devices, the drawbacks are too many and too significant to ignore. Here are a few questions you cannot answer with mobile emulator and simulator testing:
- How much CPU and memory does the mobile app consume?
- How responsive is the mobile app across device sizes and resolutions?
- How does the app respond under less than optimal network conditions?
- How would the app respond if the device battery is especially low (for eg. 1%)?
- Can the mobile app optimally use device features such as GPS, camera, proximity sensors, touch screen, speaker, microphone, etc.?
- How does the app work when there are cellular interrupts from incoming messages and calls?
- How does the app work with natural gestures – scroll, swipe, pinch to zoom, etc.?
The major issues with testing on emulators and simulators can be explained by delving into how they work.
Testing Mobile Apps with Emulators
Emulators replicate a device’s hardware and software configuration (mobile device, in this context). A typical example is the Android Emulator offered by Android Developer Studio. Desktop and mobile devices operate on top of an ISA – Instruction Set Architecture. It is a range of instructions codified in machine language that is decipherable to the processor. Of course, different processors are fed on other ISA.
- The emulator mimics the processor of a device and translates the device ISA so that the tester’s workstation device (or rather, its processor) can understand it – in a process called binary translation.
- Binary translation should ideally be able to help the workstation morph to a state in which it can offer close to native features of the target device, including physical sensors, battery strength, location, etc. However, this is usually not the case.
- Binary translation comes with a significant performance overhead. In case the target devices run on the same ISA at the tester’s device, binary translation is unnecessary.
Now, testers’ workstations are usually computers that run on Intel x86. Their ISAs will not match commercially sold mobile devices that run on ARM (Advanced RISC Machines) architecture. With fundamentally different ISAs, the overhead involved in binary translation will be noticeable and resource-heavy.
- Binary translation can be sped up through hardware acceleration – ensuring the ISAs of the target device and the tester workstation match. Ensuring this is hard to do because of differences in ISAs. Even if possible, it would take time and effort and harm efficiency and productivity levels.
- Additionally, to set up hardware acceleration, you’d need a decent number of hypervisor components, which can be difficult even for experienced devs and QAs.
As is evident, the effort required to get the most of emulators will slow development, involve in-house devs in tertiary tasks they should ideally avoid, and still not guarantee 100% accurate results – because nothing can fully match the specifics of a real mobile device.
Testing Mobile Apps with Simulators
Simulators are meant to run software not built for a certain computer’s OS. Testers usually leverage them to run code in early stages. There are no Android simulators since emulating Android devices is quite simple, thanks to multiple tools available. Therefore, when we say “simulator”, we mean “iOS simulator”.
- An iOS simulator overlays itself on top of a tester’s workstation and replicates iOS so that they can test an app in an iOS interface. However, simulators cannot mimic many functions of iOS, making the replication process incomplete.
- Simulation is faster and less resource-heavy than emulation since the former does not require binary translation. However, the simulator can also not mimic features like incoming calls, battery strength, etc.
- Using iOS simulators on non-macOS platforms is also not possible because they need Apple’s native Cocoa API (a framework library) to manage GUI, runtime, and the like. Since porting Cocoa to another platform requires too much work, devs usually opt for virtualizing macOS on their hardware.
Additionally, since Apple uses proprietary chipsets and custom binaries in its devices, you won’t find too many true iPhone or iPad emulators. To achieve emulation, you’ll actually have to reverse engineer an Apple device. Now, there is a functioning iPS emulator owned by Corellium, but it may not be available to everyone.
- With all these limitations and the effort involved in overcoming them (if possible), it is much easier to test apps on real mobile devices. No matter how comprehensive, no emulator or simulator will give you the certainty of a real device.
Additionally, remember that mobile devices and operating systems are updated frequently. New devices and OS versions are released, and corresponding emulators may be unable to keep up with their release timetable.
Mobile Real Devices for Faster, Better & Accurate App Testing
Modern-day mobile apps strive to offer a wide range of divergent features to meet customer needs and preferences. For example, telehealth apps won’t just allow online consultations between doctors and patients. They tend to offer wellness sessions, fitness classes, webinars, relevant articles, and more.
- Given such multi-experience apps‘ rich, layered nature, they require meticulous, extensive testing of every function in different test environments.
- Just because an app works on an iPhone 13 Pro Max does not mean it will deliver the same efficacy on iPhone SE (3rd generation).
- Downloading, installing and running emulators/simulators for every (or at least the majorly used) device will add significant time and effort.
- Additionally, it will not offer reliable test results based on which apps can be approved for public release.
If you are looking to avoid the hassle involved in setting up, maintaining, and updating an in-house device lab for testing, try something more convenient without compromising on the results.
- Take BrowserStack’s real device cloud that allows testers to completely access thousands of latest and older mobile devices (Android, iOS & more) on the cloud.
- You simply sign up for free, choose the device-OS combination you want, and start testing your apps.
Devices on the BrowserStack cloud range across multiple manufacturers, models and versions. These device centers are also regularly updated with the latest devices, so testers can effortlessly monitor software on devices customers are most likely to use.
Addtional features that make app testing easy on BrowserStack:
- Wide range of debugging tools, including Screenshots, Video Recording, Video-Log Sync, Text Logs, Network Logs, Appium Logs, Device Logs, App Profiling.
- App Live Integrations with tools such as Jira, Gradle, Slack, TestFlight, and many more.
- Support for responsive testing, network throttling, geolocation testing and natural gestures.
Given the importance of mobile app testing in any development workflow, it is best to depend on real device testing rather than testing mobile apps on simulators & emulators. Now, initial costs for a testing plan need to be considered.
But it is also essential to account that if real-world users find too many bugs in an app, they are likely to stop using it, uninstall it, and leave negative reviews on the App Store or Play Store. This would harm brand credibility and the app’s ability to generate revenue – all of which will make a bigger dent in finances than initial testing costs.
Therefore, whatever the scenario, testing mobile apps on real devices remains the best possible practice compared to emulators & simulators.