When testing mobile devices, buying one of everything would be cost-prohibitive. Even with limiting testing to...
a select few devices, the team likely does not want to test on the actual devices all the time.
Enter emulators, sometimes called simulators, applications that simulate the user interface of one device (perhaps many) on a laptop. These are virtual environments that allow testers to test software without having to purchase and track devices. Emulators don't need to be charged, and sometimes, changing things like bandwidth, operating systems, memory limits and browsers can be as easy as a few clicks.
Here are a few of our favorite mobile emulator tools.
IOS XCode simulator
The Apple toolkit for developing iOS software is called XCode. In addition to the development environment, XCode also provides testing tools, like the iOS simulator. In XCode, you can get the latest version of your product code, build it, then run it in a virtual iOS environment. If you are not a tester with technical inclinations, you may need some help setting up the environment from a developer, but after that, you can get new code and rebuild and emulate a device pretty quickly. XCode and the iOS simulator can be used only on a Mac.
Because Apple controls the entire stack, the XCode application, iPhone simulator and IDE can work relatively hand-in-hand. The process to upload native apps to the simulator, for example, is very straightforward. Best of all, because Apple wants to encourage its infrastructure, XCode and the iOS Simulator have no cost.
Android has a similar infrastructure for emulation of mobile environments running the Android operating system. With the Android emulator, you can select from a variety of Android operating system versions. This tool works on the same premise as the XCode tool. You check out the latest version of your product code, build it in the Android development environment, and then run the emulator with your chosen OS version.
Unlike the iOS emulator, you can run this on both Mac and PC development environments.
Desktop browser-based emulators
The quick and dirty way to get an iOS emulator is to use the right type of browser (likely Safari on a Mac) and point the browser at iphone4simulator.com or iphone5simulator.com. These are "just" websites that render the image of an iPhone and an internal browser that is the right size. Because Apple integrates all devices, the right version of Safari will look very similar to the actual iPhone; images for SearchSoftwareQuality.com for the iPhone simulator and the website are indistinguishable as of this publication.
Again, the browser based emulator may be the fastest and easiest emulator. It also makes for very easy browser-driving tooling, as you don't need any cords, physical devices, VMs or special components -- just have the tooling to the website, then type in your website, and run the checks. The biggest downside is that the images will not match actual device behavior. Finally, be aware that these websites are purely opportunistic, often funded by banner ads. They might go away at any time -- notice there is no iPhone6Simulator.com yet!
If you have apps for both iOS and Android devices and have many devices that you must test on, one other option you might want to consider is virtual service providers. The basic idea is that these companies have the ability to quickly create a variety of virtual environments for different Android and iOS versions, as well as different hardware versions. These services are paid for based on the environments you need and how often you need them. There are many of these providers to choose from; some of the more popular ones are Sauce Labs, SOASTA and Perfecto Mobile.
Where Sauce Labs excels at Appium and Mobile Functional Automation, SOASTA's background is in performance, and Perfecto Mobile specializes in rendering exactly what you see on the real device -- accessible anywhere in the world, through the internet.
Responsive testing with Chrome
Chrome built a tool into Chrome developer tools that will allow you to approximate the size of mobile device screens. This isn't exactly emulating software as it would run on a mobile device, but it is useful for discovering how your product will look when rendering on differently sized screens.
Testing with device emulators shouldn't completely replace the testing you would normally do on a real device. For example, a mouse is much more precise than a human finger -- a single-pixel link may be clickable with an emulator. But, it's important to remember that they are re-creations, not the real thing.