Virtual Devices for App Testing: What They Are and When to Use Them
Learn what virtual devices are, how Android Emulator and Xcode Simulator differ, and when to test on virtual, physical, or cloud devices.
A virtual device is a software-provided device environment for running and debugging an app against a chosen device configuration. Android developers commonly use Android Emulator with an Android Virtual Device (AVD); Apple developers run apps on simulated devices through Xcode’s Simulator. Both are useful for frequent development checks and trying configurations without owning every corresponding device. A successful simulated run does not prove that the app behaves or performs the same way on physical hardware.
Use a virtual device for rapid iteration, repeatable checks, and configuration-specific debugging. Use a physical device when a feature depends on hardware or when you need confidence in actual device behavior and performance. A cloud device-testing service can help when remote access to a broader device selection suits your workflow.
1. What is a virtual device for app testing?
It is a software environment that presents an app with a selected device and operating-system configuration. The environment runs on a computer or through a hosted testing service, rather than on the target phone itself.
On Android, an Android Virtual Device (AVD) is a configuration used with Android Emulator. Android Emulator simulates Android devices on a computer so developers can test across devices and Android API levels without having each physical device. Android’s documentation describes the emulator as high fidelity, but that does not mean it reproduces every physical-device feature or performance characteristic. See Android’s Android Emulator documentation.
On Apple platforms, Simulator is the Xcode tool for running an app on simulated devices. Apple calls these simulated devices; they are useful for debugging across hardware configurations, but they are not complete replicas of physical devices. See Apple’s guidance on running apps on simulated or physical devices.
2. Emulator vs. simulator vs. physical device
| Option | What it provides | Good fit | Important limit |
|---|---|---|---|
| Android Emulator with an AVD | A configurable simulated Android device and API level running on a computer. | Android development, repeatable checks, and trying relevant device or API configurations. | Some hardware behavior and actual-device performance cannot be established by a simulated run. |
| Xcode Simulator | Simulated Apple devices available as Xcode run destinations. | Developing and debugging Apple-platform apps across simulated device configurations. | Apple says Simulator does not replicate the performance or features of a physical device. |
| Physical device | An actual phone or tablet with its hardware and operating system. | Hardware-dependent features and checks of behavior or performance on representative target devices. | You need access to the devices you intend to validate. |
| Cloud device testing | Remote execution on devices hosted by a service; available platforms and device types depend on the provider. | Teams that need remote devices or find maintaining a local collection impractical. | Check the provider’s current catalogue, platform support, pricing, and limits before building a workflow around it. |
“Is an iOS Simulator the same as an emulator?” In everyday conversation, both terms can mean a virtual testing environment. For Apple development, the product name is Simulator; Android’s tool is named Android Emulator. Use the platform’s own terminology when following its setup instructions.
3. When should you use virtual devices?
- During ordinary development: Run and debug builds frequently in the local environment for your platform. Virtual devices make it practical to check configurations without acquiring each matching physical model.
- For repeatable checks: Use a known virtual-device profile and operating-system version when you want to rerun the same kind of check during development.
- For configuration coverage: Add relevant screen sizes and Android API levels or Apple simulated-device configurations. Choose configurations that matter to your app; there is no universal list that covers every audience.
- For hardware-dependent behavior: Use a physical device when the feature relies on sensors or other device capabilities that virtual devices do not simulate.
- For performance confidence: Check representative physical hardware. A successful Simulator run does not establish physical-device performance.
- For broader remote access: Consider cloud testing when hosted devices fit your access and execution needs. Confirm the current service scope directly with the provider.
Firebase’s Android Virtual Device guidance recommends examining each build through Android Studio Emulator or an attached physical device for initial validation. Its documentation also describes limitations of virtual devices and the role physical devices play for features they do not simulate: Firebase Test Lab: Android Virtual Devices.
4. A practical virtual-device testing workflow
- Choose the platform tool. Use Android Emulator for Android development or Xcode Simulator for Apple platforms.
- Start with a baseline configuration. Select a device profile and operating-system or API version that is useful for your app’s normal development checks.
- Run the app and debug the change. Treat the virtual environment as a quick, repeatable development check, not as proof of behavior on every target device.
- Add configurations based on relevance. Include screen sizes and OS/API versions that reflect your supported configurations and the app features being changed.
- Identify hardware dependencies. Mark tests that rely on sensors or other device features that may not be represented by a virtual device.
- Validate those cases on physical hardware. Use representative devices selected for your audience and app requirements. The cited sources do not prescribe a universal device count or model list.
- Use cloud devices when they suit the gap. If local access is limited or remote execution is useful, check the provider’s current supported devices, platforms, and terms.
5. Can you test an app without a physical phone?
Yes. You can build and run many development checks on Android Emulator or Xcode Simulator without owning a physical phone. That can be enough for early implementation, debugging, and configuration checks.
It is not enough to establish that every real-device feature works. If your app depends on sensors or other hardware behavior, or you need to assess actual-device performance, include physical-device validation. Firebase notes that physical devices cover functionality relying on features virtual devices do not simulate; Apple specifically cautions that Simulator does not replicate physical-device performance or features.
6. Virtual devices and real-device validation: a risk-based choice
There is no single correct ratio of virtual to physical tests for every app. Decide based on the behavior under test:
| Test concern | Start with | Add physical-device validation when |
|---|---|---|
| General app flow and debugging | Local virtual device | The flow depends on hardware or release risk warrants checking a real target. |
| Layout across configurations | Relevant virtual profiles and OS/API versions | Rendering or interaction needs confirmation on the devices your audience uses. |
| Sensor or device capability | Virtual device for surrounding app logic, if useful | The behavior depends on a capability that the virtual device does not simulate. |
| Performance on a target device | Virtual device for development iteration | You need evidence about actual hardware performance. |
| Remote access to a range of devices | Evaluate a cloud testing service | Choose a service and device based on current catalogue, platform support, and terms. |
7. Capturing screenshots of app screens
Virtual devices can also help you capture repeatable screenshots while developing or documenting an app. For a web app or a browser-based preview, a screenshot API can capture the rendered page; that is separate from validating native app behavior on a virtual or physical device.
ScreenshotNeo is a website screenshot API and MCP server. For screenshot capture, it is an alternative to set up locally: it accepts a URL and returns an image or PDF. The API documentation is at ScreenshotNeo’s API docs.
Or skip the browser setup
For a web preview, make one request with the page URL. Replace YOUR_API_KEY with your key and the example URL with your page. The returned response body is the screenshot.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Cookie banners are accepted and removed before capture, along with supported newsletter popups and chat widgets. Bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents use screenshot tools. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. See the API documentation for request options. Sign up for 1,000 free screenshots a month, with no card required.
8. Troubleshooting virtual-device testing
| Symptom | Likely explanation | What to do |
|---|---|---|
| The app works in a virtual device but fails on a phone. | The simulated environment does not reproduce the physical feature or behavior involved. | Reproduce the issue on representative physical hardware, especially for sensor or other hardware-dependent paths. |
| The app looks correct in Simulator, but feels slow on the target device. | Simulator does not reproduce physical-device performance. | Measure and inspect the app on physical devices relevant to your users. |
| A test passes on one virtual configuration but fails on another. | The configurations differ, for example in screen size or OS/API version. | Record the failing device profile and OS/API version, then reproduce and debug against that configuration. |
| A virtual run cannot exercise a hardware-dependent feature. | The required feature may not be simulated by the virtual device. | Use a physical device for that validation. Keep virtual checks for the app logic that can be exercised there. |
| You cannot access enough relevant devices locally. | Your local device collection does not cover the configurations you need. | Evaluate a cloud device-testing service and confirm its current device catalogue, platform support, and terms. |
9. Performance, reliability, and cost considerations
- Iteration: Local virtual devices let developers access configurations without owning each corresponding physical model. They are useful for frequent checks, but the research sources do not establish a universal speed advantage or benchmark.
- Repeatability: Reusing a documented device profile and OS/API version makes it easier to rerun a particular check under a known configuration. A passing result applies to that tested environment.
- Fidelity: Treat simulation as configuration coverage, not a complete substitute for physical hardware. Use actual devices for hardware-dependent behavior and performance confidence.
- Maintenance: Local devices require access to the development machine and its configured tools. Cloud testing can provide remote access, but availability, catalogue, cost, and limits depend on the provider and can change.
- Cost: No universal cost comparison follows from the cited documentation. Compare the costs of maintaining local hardware with a cloud provider’s current pricing and service limits before choosing.
10. Frequently asked questions
Is Android Emulator the same thing as an Android Virtual Device?
No. Android Emulator is the tool that runs the simulated device; an AVD is a configured virtual Android device used with it.
Does a virtual-device pass mean the app is ready to release?
It confirms behavior in the tested configuration. Add physical-device checks for hardware-dependent features and release confidence on actual target devices.
Should I choose an emulator or a real device?
Use both where the app’s risk calls for it: virtual devices for frequent development checks and relevant configurations, physical devices for hardware behavior and actual performance.
Can cloud testing replace local virtual devices?
It can provide remote device access when that suits your workflow. Whether it replaces any local checks depends on the provider’s current devices, platform support, and your development needs.


