The terms “emulator” and “simulator” are often used interchangeably. These technologies serve as virtual pieces of hardware that operate on a PC or laptop.
Developers can obtain emulators from platform and device makers. Google’s Android SDK, for example, includes a mobile emulator. Earlier this year, Intel released x86 system images that let the Android emulator access a development platform’s CPU natively, which boosts performance. [Disclosure: Intel is the sponsor of this content.] In addition, Apple’s iOS Simulator lets users run iOS apps on a Mac. There is also a Windows Phone Emulator from Microsoft and BlackBerry Simulators from RIM. Handset manufacturers such as Samsung and Motorola also offer emulators as add-ons.
Such emulators and simulators help developers design, test and discover bugs in their mobile apps. The tools are typically used in the early stages of app creation and generally provide an initial level of testing.
“In general, mobile platform emulators are great,” says Jason Ray, software engineer at Agilex Technologies, a Virginia-based professional services company that specializes in enterprise mobility. “While they don’t replace usability testing, they do provide quick feedback during the development process and a mechanism for automated UI testing.”
Damian Moriarty, international delivery manager at Retriever Communications, which provides an integrated development environment for mobile apps, says functional testing is far easier to accomplish on device emulators. Logging faults and taking screen shots of faults is simpler when working on a desktop. Retriever Communications’ RADE IDE links to emulators so that a developer can deploy an app directly to the testing software, according to the company. This helps promote fast prototyping, Moriarty says.
In addition, emulation eases the task of delivering a cross-platform application. “It makes the ability to deliver a multi-platform app far more feasible,” Moriarty says. “You don’t need a huge storeroom of devices to account for every single device permutation.”
“Because we cannot buy all the phones for each developer, it is convenient to use simulators,” adds Ryhor Burakou, iOS team lead at Elinext Group, an alliance of software development companies based in Minsk, Belarus.
Limitations of Mobile Simulators and Emulators
While emulators and simulators provide convenience, they also face limitations. Most notably, emulators can’t completely mimic a given device. So the test results can’t be completely reliable.
Moriarty says an emulator may be used to project an app’s color scheme on a wall for several observers to view. But colors displayed on the actual device — in full sunlight as opposed to projected in a darkened room — may be too close together to provide sufficient contrast to keep the app useable, he says.
Burakou advises developers never to judge actual visual aesthetics or app performance based on data data from the emulator.
As for performance, an emulator may underperform or outperform the actual mobile device. Moriarty says that in working with Windows Mobile Emulator over the years, he’s found that running the emulator on a laptop with a 2.4 GHz processor isn’t going to flush out the performance issues on a mobile device equipped with a 600 GHz processor.
More recently, Moriarty has encountered the reverse situation with Android emulators. “They seem to be much slower than the device, particularly when we are talking about tablet apps,” he says.
So developers need to take into account the potential differences between the performance they see in the emulator versus what a user will experience in the field with actual devices. Moriarty says app makers ultimately need a physical device to fully understand whether an app’s responsiveness will fall within a range acceptable to users.
Emulators are useful for prototyping and uncovering problems early on in the app design and development lifecycle. They can give developers a quick take on whether an app will run on a particular device, without having to initially invest in that device. Actual hardware testing will need to take place at some point, however.
In short, emulate — but then verify.