DragonCrawl: Uber's Journey to AI-Powered Mobile Testing Using Small Language Models

uber · Automotive · 2024 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Mobile application testing

Uber needed to scale mobile testing across constantly changing apps, cities, devices, and languages without spending massive engineering time maintaining brittle test scripts.

Constraints:

Architecture

DragonCrawl reframes mobile testing as a language/retrieval task. It converts the current mobile screen into text, combines that screen representation with a natural-language test goal, and asks a fine-tuned language model which UI element to interact with and how. Uber evaluated transformer models with precision@N and chose a tuned base MPNet model because it combined high retrieval quality, lower latency, 110M parameters, and 768-dimensional embeddings. The system then executes flows in CI across apps, cities, languages, devices, and OS versions.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  screen-text-representation[Screen text representation] --> dragoncrawl-model[DragonCrawl model]
  test-goal[Test goal] --> dragoncrawl-model
  dragoncrawl-model --> mobile-action-executor[Mobile action executor]
  mobile-action-executor --> ci-test-runner[CI test runner]
  evaluation-harness[Evaluation harness] --> dragoncrawl-model
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Screen text representation Textual description of the current mobile screen and available UI actions. DragonCrawl model
Test goal Natural-language objective for the test flow. DragonCrawl model
DragonCrawl model Fine-tuned MPNet-based decision model that selects UI actions. Mobile action executor, Evaluation harness
Mobile action executor Runs the chosen action in Rider or Driver Android app flows. CI test runner
CI test runner Runs flows before releases and across cities, devices, and OS versions. Mobile action executor
Evaluation harness Precision@N evaluation for action-selection embedding quality. DragonCrawl model

Data flow

A mobile test supplies DragonCrawl with the current screen text and a goal. The model embeds and interprets the screen/action options as a retrieval-style decision problem, chooses the next UI element and interaction, and repeats this process through the mobile flow. CI executes the selected actions and observes whether the target trip or app flow completes.

“We provide DragonCrawl with the text representation of the current screen, along with the goals of the test we want to execute, and then we ask it what we should do.”article, stated
“Given the context, it chooses what UI element to interact with, and how to interact with it.”article, stated

Why this architecture

Uber used a language-model decision loop because mobile tests are sequences of context-dependent steps that must adapt to UI changes, cities, and languages. A tuned base MPNet model gave nearly the same retrieval quality as larger models while reducing latency and embedding cost, making it better suited for frequent production CI use.

“We realized that we could formulate mobile testing as a language generation problem.”article, stated
“The fastest model turned out to be the base MPNet, with ~110M parameters (which technically makes it a small/medium language model).”article, stated

Models used: MPNet base · MPNet large · T5 11B · RoBERTa · OpenAI DALL-E

Scale

Alternatives considered (roads not taken)

Manual testing for every code change.

Rejected because: Manual testing had too much overhead to cover every minor change.

“Manual testing is usually carried out, but with high overhead, it cannot be done extensively for every minor code alteration.”article, stated

Traditional script-based mobile tests.

Rejected because: Scripts broke under minor UI changes and required recurring manual updates.

“test scripts can offer better scalability, they are also not immune to frequent disruptions caused by minor updates, such as new pop-ups and changes in buttons.”article, stated

Use a larger or untuned model for action selection.

Rejected because: Base MPNet had high precision, lower latency, smaller embeddings, and avoided the quality loss expected from an untuned model under frequent app changes.

“T5-11b not tuned gave us good precision@1, 2, and 3, but given the frequency with which we plan to use this model, and the variability in the data”article, stated

Patterns

tool-use-orchestration (orchestration)

DragonCrawl chooses concrete UI elements and interactions as actions in a mobile testing loop.

“Given the context, it chooses what UI element to interact with, and how to interact with it.”article, stated

fine-tuning-adaptation (model-operations)

Uber tuned MPNet for the mobile-testing action-selection task rather than using a generic untuned model.

“To choose the right model for DragonCrawl, we tuned and evaluated several models.”article, stated

eval-driven-development (evaluation)

DragonCrawl model selection was guided by precision@N retrieval metrics over candidate actions.

“We framed the evaluation as a retrieval task because we ultimately want DragonCrawl to mimic the way humans retrieve information and make decisions.”article, stated

latency-optimization (operations)

Uber selected base MPNet because it was fastest and had smaller embeddings while preserving high precision.

“embedding quality is high across all models, but latency varies significantly. The fastest model turned out to be the base MPNet”article, stated

Tradeoffs

Mobile test representation

Chose Natural-language screen text plus test goals. over Hardcoded test scripts tied to specific UI paths..

Rationale: Language representation lets the model adapt to UI changes, goals, and non-English contexts.

“To successfully get through those obstacles and complete a test, we need context and goals, and the simplest way for us to provide these to an automated system is through natural language.”article, stated

Model selection

Chose Fine-tuned base MPNet. over Larger models such as MPNet large or T5 11B..

Rationale: Base MPNet had high precision, lower latency, 110M parameters, and 768-dimensional embeddings.

“MPNet (base) 0.9723 0.9623 0.9423 110M 768”article, stated

Tune despite acceptable untuned precision.

Chose A customized model. over Using untuned T5-11B with decent precision@N..

Rationale: The expected usage frequency and app variability made small precision differences important.

“given the frequency with which we plan to use this model, and the variability in the data because the Uber app changes constantly”article, stated

Gotchas (what bit them)

Script-based tests created a large maintenance burden.

Root cause: Small UI changes like new pop-ups and button changes disrupted scripted tests.

Resolution: DragonCrawl adapts to screen text and goals instead of hardcoding brittle paths.

“All of these changes, no matter how minor, require recurring manual updates to the test scripts.”article, stated

Global testing did not scale with manual or script maintenance.

Root cause: Uber needed testing across diverse cities and 50+ languages.

Resolution: DragonCrawl uses language-model resilience and natural-language inputs to test across cities and languages without code tweaks.

“the substantial maintenance costs of these tests significantly hinder their adaptability and reusability across diverse cities and languages”article, stated

Untuned model precision looked acceptable but was not enough for frequent use.

Root cause: Uber's app changes constantly, making small precision gaps costly over repeated CI runs.

Resolution: Uber selected a customized base MPNet model instead of accepting untuned T5 precision.

“the variability in the data because the Uber app changes constantly, we would quickly suffer from those extra points not provided by a model not customized by us.”article, stated

Evaluation

Uber evaluated action selection as a retrieval problem with precision@N, compared several transformer models, and then measured production CI stability, maintenance, city coverage, device/OS resilience, and bug detection.

Metrics: MPNet base precision@1 0.9723, precision@2 0.9623, precision@3 0.9423 · 110M parameters and 768-dimensional embeddings for base MPNet · 99%+ stability in November and December 2023 · 85 of 89 top cities successfully completed trips · Ten high-priority bugs blocked in three months

“Precision@1 Precision@2 Precision@3 Parameters Embedding size MPNet (base) 0.9723 0.9623 0.9423 110M 768”article, stated
“In the three months since launching DragonCrawl, we blocked ten high-priority bugs from impacting customers”article, stated

Outcomes

Uber cites thousands of developers, 3,000+ simultaneous experiments, 50+ languages, 89 top-city evaluations, 85 successful city completions, 99%+ stability, and ten blocked high-priority bugs.

“We did not need to manually update and/or maintain DragonCrawl.”article, stated
“This is the first time at Uber that a mobile test as complex as requesting and completing a trip has been successfully executed in 85 cities worldwide”article, stated