
Addie Beach
Mobile applications offer increased flexibility to both users and developers. Users can access content on a wide range of devices, operating systems, and network types, while developers can leverage touch screens and orientation-based layouts to create more responsive features.
However, all of these factors create new testing challenges. To ensure a good user experience (UX), developers have to test their apps across many device models and platforms, which can become costly and time-consuming. Additionally, because mobile apps have a different underlying structure from web apps, they often require different testing tools.
In this post, we’ll explore how you can effectively address these challenges by:
- Testing on emulators, simulators, and real devices
- Identifying UI elements using Android and iOS locators
Test on emulators, simulators, and real devices
Mobile apps are used on a variety of devices and operating systems. Ensuring that all of your users can successfully interact with your app means testing evenly across every operating system you plan to support. Otherwise, your app might work perfectly on one system, but experience bugs and poor performance on another. This often involves tailoring your testing strategy to accommodate the challenges of your target platforms. For example, Android-compatible apps must adapt to devices made by different manufacturers, each with unique hardware configurations.
However, developing for any platform—even exclusively for iOS—means accounting for differences in device size and age. To start, you’ll want to make sure your app’s layout is consistent on differing screen dimensions. A UI that’s too large for a smaller phone can look cramped and might even cut off access to key components. Conversely, one that’s too small for a larger phone or tablet might leave too much blank space, which can confuse users or appear unpolished. You’ll also want to consider computing power across device models. To ensure a consistent UX, you need to monitor app performance on both the newest and older models, whose capabilities may be more restricted.
To exhaustively test device-OS combinations, many developers use simulators and emulators to spin up virtual Android and iOS devices. Simulators let you quickly verify that your app runs well on different software, while emulators also allow testing for hardware configurations. Because they offer speed and flexibility, virtual devices are commonly used in early-stage testing.
That said, virtual devices still struggle to replicate real-world usage in several key aspects. Their ability to mimic actual device UIs is limited, especially for external elements like push notifications or keyboards that may overlay on top of your app. While emulators can provide high-level hardware testing, they often fail to factor in certain real-world conditions, especially sluggish processing, poor battery life, and network throttling. For tests where accuracy is key, like performance or usability testing, real devices often give you more reliable insights.
To help you reliably test your app on as many platforms as possible, Datadog Synthetic Monitoring enables you to spin up mobile tests on real devices across a variety of manufacturers, including Google, Apple, Samsung, and LG. Synthetic Monitoring shows you which devices are currently available, enabling you to quickly run your tests for faster results.

Identify UI elements using Android and iOS locators
In addition to having more devices and platforms to monitor, mobile app testing also gives you more ways to test them. For example, to account for the lack of a traditional web DOM, each mobile OS offers its own set of locators to help you reliably identify elements within tests.
iOS provides accessibility IDs and predicates. Accessibility IDs are strings that correspond to elements within an app. On the other hand, iOS predicates are queries used to select elements that meet a specific criterion. Predicates are useful when a component doesn’t have a specific accessibility ID associated with it; when there are multiple components with the same name; or when the component being selected may change, such as the first item in a list of the most popular products.
Here’s a comparison of what an accessibility ID and an iOS predicate might look like for the same checkout button:
Accessibility ID | iOS predicate |
---|---|
checkout | label == “checkout” |
By contrast, Android provides one unique kind of locator: resource IDs. Resource IDs generally consist of the file name of an element—for example, org.shopist.vending:id/checkout
. Unlike iOS, Android doesn’t include a workaround for finding elements that don’t have a specific resource ID. In these situations, you can use xPath instead.
Datadog Synthetic Monitoring comes with built-in, self-healing locators that automatically identify elements for your tests. However, if you do want to manually specify a locator for an app component, Synthetic Monitoring also enables you to use accessibility IDs, iOS predicates, and resource IDs within your tests. This can be useful for testing certain dynamic conditions, such as selecting the first available slot when scheduling an appointment.
To easily create a test that identifies elements using Android or iOS locators, you can use our out-of-the-box templates. These templates enable you to select elements by accessibility ID, resource ID, predicates, xPath, or component name. Additionally, you can use these templates to extract and validate variables from within elements, such as text that may change depending on which option a user has selected. This enables you to perform granular testing of more user journeys in your app.

Once you’ve created the test, you can then specify the interactions you’d like to test for each element, including taps and double taps, scrolls, and device rotations, as well as the device type.

Enhance your mobile testing strategy with synthetic monitoring
Testing mobile apps presents a number of challenges for developers, requiring additional hardware and software tests as well as a unique set of testing tools. Datadog helps your teams streamline this process and test your apps more accurately through fast, real-device testing. Additionally, by providing both self-healing locators and support for OS-specific locators, Datadog helps ensure that every critical element in your tests is captured.
You can use our documentation to learn more about mobile app testing with Datadog Synthetic Monitoring. Or, if you’re new to Datadog, you can sign up for a 14-day free trial.