•
Drizz raises $2.7M in seed funding •
•
Featured on Forbes
•
Drizz raises $2.7M in seed funding •
•
Featured on Forbes

Look at this user flow journey:
User logins in > User adds a product to cart > User completes checkout.
This already describes a test requirement. No matter whether one is a product manager, a QA engineer or a developer, they already understand this.
The job of an automation framework is to translate this user flow into a more detailed requirement calling out specific selectors, actions, waits and other framework specific commands. A framework's ability to translate this is a major barrier in mobile test automation.
Natural language mobile testing is based on this requirement. You define a test using the same language as the user flow, and the test system converts this intent into a set of instructions for operating a real mobile app.
Natural language test authoring covers several other approaches. Writing "Tap the Login button" instead of an XPath doesn't make a test intelligent. A good system should be able to understand the instruction, find the target element, confirm the system state and respond to changes in the user interface.
While some tools already convert natural-language instructions into specific selectors, others interpret instructions relative to the currently displayed screen and find the target as a label among other UI elements. This is the approach to mobile QA.
The goal is not to make the test easier to write alone. It is to ensure the test executes whatever the team wants to test and reduce the maintenance of the test suit over time.
Natural-language mobile test automation enables you to describe a test using everyday language as opposed to code or instructions to a framework.
An example is:
“Open the app, enter a valid email address, enter the password, tap Login, and verify the dashboard appears”
With Appium or XCUITest it might look something like this:
A natural language interface will interpret the same action flow, and map each step to an action, target, condition, or assertion.
Instead of this:
The platform handles the translation from human intent to machine execution. The question is how it handles that translation and that's where the architectures diverge.
This is how codeless test automation actually works in practice on Drizz, a single sentence becomes an executable test case.
Although a test will require logic, natural language will not replace the need for logical test design. Natural language enables the team to explain the test differently with the platform, and will execute the requirement in a direct manner.
Automation of mobile web apps is similar to web automation. The structure of the DOM is more stable than that of native mobile apps.
Native mobile apps use accessibility trees, resource IDs, content descriptions, and potentially different platform specific view hierarchies. These IDs offer assistance, but may still be incomplete and inconsistent.
For example: a button on one platform may have a stable test ID with no accessibility label, while on the other platform it may have a stable accessibility label with no test ID.
While building an app, different element trees may be generated with Flutter, React Native, and Jetpack Compose. Automating elements based on the user interface may be done to improve the user experience.
Due to the various screen hierarchies, even the same interface may appear different on Google Pixel and Samsung Galaxy devices. A selector that is effective on one device may not work on another.
Natural-language authoring makes creating executable tests from product requirements simpler and more accessible in that manual QA engineers, product managers, and business analysts who understand product requirements can help create tests without knowing an automation framework.
Instructions dictate actions in natural language. There are several steps that occur before a system takes an intended command.
This step is where the system figures out the intent of the instruction. Let’s simplify the instruction to “Tap the Login button.”
In this, the system looks at:
A more elaborated instruction could add context such as:
“Tap the Login button which is below the password field.”
To understand the instruction, the system needs to analyze both the target and its relationship to another element.
In this step, the platform is examining the application the system is currently in.
This is the step where most natural language testing tools differ.
A selector-based system, for example, either lists all accessibility labels or makes queries to the accessibility tree and the UI hierarchy to look for an element with a matching resource ID, text value, or accessibility identifier.
Vision-based systems like Drizz take a screenshot of the system and look for elements on the basis of their appearance, text, context, and position relative to other elements.
The system has to correlate the instruction with an element on the screen.
An example is a Login button that is the only visible button. If a screen contains many Login buttons, for example, the system might use the button’s position, other surrounding text, and the context of the previous test to select the correct target.
A good set of instructions minimizes the ambiguity involved.
“Tap Continue in the payment section” is more specific than “tap the button.”
The platform executes the requested action:
The execution layer still has to address mobile-specific issues such as keyboards, permission dialogs, loading states, scrolling, and animations.
After each action, the system validates the resulting screen state.
For example, after tapping Login, it might validate:
A test should validate results, not just actions.
“Tap Login” confirms an interaction. “The dashboard is visible” confirms the expected application behavior.
While the test authoring format might appear to be same across tools, but the execution technology varies considerably.
In this, a sentence is transformed into a traditional locator and action. This is how it works:
“Tap Login” → Determine the intent → Find a corresponding locator → Issue a tap
This method can use a resource ID, XPath, accessibility label, or a text value.
This method works great when the app has stable and complete identifiers. The down side is selector maintenance.
Every code refactor usually renames an ID or restructures a view hierarchy. If device-specific rendering is used, the natural-language instructions may appear correct but the underlying selectors they call may fail.
This approach uses both natural language and screen analysis to understand and execute instructions. The system takes the instruction “Tap Login,” takes a screenshot of the screen, analyzes the screen, identifies the Login control, and performs the instruction.
This model is used to identify selectors when View Hierarchies and accessibility trees of mobile apps change frequently, and when multiple devices and/or different OS mobile apps are added to the scope of testing.
This model has some constraints. Visual systems must cope with ambiguous screens, hidden elements, small controls, low contrast screens, miss-aligned structures and unexpected dialogs.
They may consume more time for the initial execution than a direct selector lookup.
However, be assured that natural-language instructions do not execute selectors. If you're selecting a tool, then always evaluate how the platform finds and operates on the elements before selecting a tool.
Both architectures let you write tests in plain English. The difference is what breaks and when:
The decision framework:
These aren't mutually exclusive. Some teams use plain English for regression suites (high volume, low maintenance) and code for complex edge cases (low volume, high precision).
Drizz uses natural language-based test authoring along with Drizz’s Vision AI for automation of mobile application testing. Let's say a QA engineer describes a testing flow like this:
“Enter valid email, enter password, tap Login, and verify the dashboard is loaded.”
Here's how Drizz handles this
Because the test uses visual understanding, rather than making a selector for every screen and platform, the test sustains UI changes. In fact, this makes the same user flow tests portable across both platforms iOS and Android as well as against various manufacturers and a range of screen sizes.
Buttons may change location or have altered styling or internal identifiers. Still the valid instructions are preserved. It doesn't mean that Drizz won't need explicit waits, reliable test data, device coverage and meaningful assertions. It continues to do. What it solves is the maintenance problem and the problem of translation selectors. QA teams must still design clear and logical flows, determine the reasons of test failures due to timing, network issues, app bugs or specific device behaviours.
Drizz doesn't replace QA engineers. It improves their workflow and help them achieve better outcomes.
Record and Playback tools turn taps, clicks and keystrokes into a set of automated steps. They are useful for creating the first draft of a test, but recorded tests are extremely brittle as they depend on the exact selectors, coordinates and timing present during recording.
Natural Language Testing focuses on intent instead of detail. Let’s understand this with an example.
“Add the blue running shoes to the cart.”
The recorded test may depend on the product’s position in the list. An intent-based test would identify the product by its name, colour and surrounding content. This difference is what makes natural language tests much easier to review. The product manager can simply evaluate the test and its acceptance criteria. A QA engineer can easily identify missed test steps without reading any framework code.
Like regular English, instructions must still have a structured approach. Be sure your instructions only outline one clear action or assertion.
Weak Instruction: “Log in and make sure everything works.”
Strong Instructions:
Describe the context of an area when a screen element is repeated.
For example, to be more specific, say, “Tap Continue in the payment section” rather than just saying, “Tap Continue,” if there are many Continue buttons.
Avoid having a setup, action, and validation step described vaguely in one statement. Then isolate each step.
Failure to do so will make it unclear why the step failed.
A flow with distinct test data that yields definitive results.
A login test should determine what it considers a successful login, i.e., a successful dashboard load, or a failed login due to an incorrect password.
A checkout test should not just focus on the final tap, but should also state what it considers a successful checkout, i.e., an order confirmation.
The entirety of a coded test suite should not be replaced at once. New tests for recently added features should be the first priority.
Once the time of authoring, the reliability of execution, and the effort to correct failed steps is known, the next priority should be the migration of tests that use selectors that fail frequently.
These tests offer the clearest indication of a reduction in maintenance. This should be followed by the migration of critical regression flows such as:
Tests should be coded for flows requiring complex custom business logic, system interactions, APIs, and installations of applications or devices outside the normal range.
Natural language and code based testing strategies can be integrated as complementary approaches.
Yes. Product managers, manual QA engineers and even business analysts can crate natural language mobile. tests just by describing what they want to test and the expected user behaviour. However, the platform still needs an execution model, access to applications, devices and test data.
Yes, it works provided that the platform supports the devices, the OS, the app types and any required test integration frameworks. Always check the coverage for native, hybrid, flutter, react native, and compose apps before adoption.
No. Codeless testing incorporates tools like builders, record-and-playback tools, configuration-based tests, and natural-language systems. Natural-language tests use written instructions as the main authoring format.
No. It just reduces the some causes of flakiness such as selector breakage and test maintenance after UI changes. Other things like timing, device variation, network failures, unstable test data and more types of defects need separate fixes.
Natural-language mobile test automation is best suited for cases where requirements, execution, and validation are in one unambiguous flow.
When you're evaluating natural language tests, look beyond the writing tool and consider how a system understands different screens, new UI changes, test failures and its root causes, supports real devices and integrates with CI / CD. Natural-language systems shine for mobile apps that have different UI experiences across many devices.
Natural language mobile test automation removes the bottleneck between knowing what to test and automating it. The question isn't whether to adopt it, rather which architecture it's built on. If your app changes frequently, your team includes non-engineers, or your current tests break on every release, start with a platform that combines NLP with visual understanding rather than one that hides selectors behind English sentences.