This paper was written in collaboration with UC Davis' Computer Science Department and accepted at COLM 2026.


01

User-centric feature coverage

LLM agents are now capable at black-box mobile testing.1,2,3 Given an app binary, without source code, it will install the app, navigate, and produce test cases. The metric in the literature is Activity Coverage: the fraction of the app's activities, its distinct screens, that a session reaches. For native Android Apps, it is easy to compute from the APK and easy to reproduce. It was used for various methods like random input generation,4 model-based exploration,5 deep learning and reinforcement learning,6,7,8 and even current LLM agents.1,2,3

However, Activity Coverage does not measure whether the features users rely on were tested.

A feature is a capability for accomplishing something, like adding an item to a cart or resuming playback where it stopped, and it usually runs across a sequence of activities. A session can visit each of those activities and never exercise the feature. Developer surveys report the same preference: use-case and functional tests over structural tests are preferred.9

We built two things: a benchmark that measures whether a generated test suite covers the features users depend on, and ECS, a testing pipeline that raises that coverage.

Our benchmark:

5,000
Real user reviews crawled across 10 popular applications
3,012
User-centric target features after manual filtering
40.3%
Feature coverage achieved by the state of the art

Our results:

Activity Coverage · commercial apps
Previous best (DroidAgent2)
14.9%
CodeDroid (ECS)
39.1%
0%2.6× improvement50%
Feature Coverage · 3,012 target features
Previous best (DroidAgent2)
40.3%
CodeDroid (ECS)
64.1%
0%1.6× improvement100%

02

Measuring feature coverage

There is no public ground truth for a commercial app's features, since internal specifications are not released. The closest prior work measured feature coverage by manual counting,2 which doesn't scale across apps, and lacks the insight into which features were missed.

We used two public sources as validated proxies.

  1. 1App description: lists the features a developer built and chose to advertise.10,11
  2. 2Reviews: records what users experienced, and because reviewers explain why they kept or dropped an app, they name minor features and missing ones.12,13,14

We pulled the description and 500 reviews (250 most recent, 250 most relevant) from 10 top Play Store apps. This yields 5,779 raw feature candidates. A large share is not observable software behavior, so we filtered by hand against a fixed taxonomy, removing pricing and billing, shipping and logistics, account policy, customer support, and vague complaints. 3,012 target features remain, most of them (2,548) from negative reviews, which is where users are most specific about app features.

Automated scoring is difficult since LLM agent outputs and target feature descriptions are likely worded differently. A user review might say "The add-to-cart button in search results is a coin flip," while the target feature is "add-to-cart functionality".

LLM-as-a-judge is the standard setup for this kind of comparison.15,16 To make the judging as accurate as possible, both agent output and target features are first translated into short, objective descriptions (using Gemini 3 Flash, temperature 0), stripping the opinion and bug language. Against 100 manually labeled pairs, the judge agrees 93% of the time (Cohen's kappa 0.83). The pipeline runs on any tool that outputs natural language test cases, which makes it usable and useful as a metric.


03

Designing the CodeDroid (ECS) pipeline with Deterministic AI

We turn an APK into a suite of reproducible test cases in three stages.

This pipeline is another case of applying our deterministic agent design principles. The agent plans against a map of the app built before it takes a step, acts only on state it has observed, writes tests that replay the same way on the next run, and reports failures clearly. The model is used where its judgment helps, and it is constrained where stochasticity makes tests unreproducible and unpredictable.

Exploration. We use static analysis to extract Manifest declarations, resource identifier strings, and intent filter definitions that describe the app's activities and how control passes between them. All of it is loaded into a knowledge base to build the agent's prior knowledge. The agent then works through the knowledge base one activity at a time. Each session writes the paths and elements it observed back into the knowledge base for the next session. Exploration is forced into every known activity.

Critical User Journeys. For each trace, the LLM writes an inferred user intent for every interactable element on the screen. Intents must be anchored to elements present in the accessibility tree. A CUJ is the intent plus the exact interaction steps plus the activity path which allows reliable replay.

Aggregation. Many features only exist as a combination of journeys. A purchase is a search CUJ, a cart CUJ, and a payment CUJ in sequence, and no single trace contains it. We sample batches of CUJs app and have the LLM write a synthetic review of each batch, simulating a user that experiences multiple CUJs and writes a review about the features they used.


04

Results

4.1 Activity Coverage

Test generation is bounded by exploration. Static analysis and forced exploration were important components. CodeDroid's ECS also finds more unique screens per token than any LLM baseline, because it plans against a map instead of guessing.

Activity Coverage · large commercial applications
CodeDroid (ECS)
39.1%
Previous best (DroidAgent2)
14.9%
GPTDroid
5.2%
DroidBot
3.4%

4.2 Feature coverage

Most importantly, our method achieves a 23.8% gain over the state of the art.

Feature coverage · 3,012 target features
CodeDroid (ECS)
64.1%
Only CUJs (no reviews)
51.8%
Previous best (DroidAgent2)
40.3%

05

Closing

The benchmark makes feature coverage a number developers can track, and CodeDroid's ECS moves coverage from 40.3% to 64.1%. Additionally, because CUJ generation compares expected features against the observed UI, the system records what users expect and cannot find. For example, on another testing app, Amazon Shopping, it flagged the missing Prime filter, and a wishlist button that disappeared, which matched real complaints. These are product feedback, generated automatically, before anyone writes the review. This is the direction we are building toward at CodeDroid.

COLM 2026
Towards Comprehensive Mobile Application Testing for User-centric Feature Coverage via Simulating Real-World Users with Personas
UC Davis & CodeDroid LLC
References
  1. Liu et al., 2023 — Chatting with GPT-3 for zero-shot human-like mobile automated GUI testing (GPTDroid)
  2. Yoon et al., 2023 — Autonomous large language model agents enabling intent-driven mobile GUI testing (DroidAgent)
  3. Wang et al., 2025 — LLMDroid: enhancing automated mobile app GUI testing coverage with large language model guidance
  4. Android Developers, 2017 — UI/Application Exerciser Monkey
  5. Li et al., 2017 — DroidBot: a lightweight UI-guided test input generator for Android
  6. Li et al., 2019 — Humanoid: a deep learning-based approach to automated black-box Android app testing
  7. Lv et al., 2022 — FastBot2: reusable automated model-based GUI testing for Android enhanced by reinforcement learning
  8. Zhao et al., 2024 — DinoDroid: testing Android apps using deep Q-networks
  9. Linares-Vasquez et al., 2017 — How do developers test Android applications?
  10. Gorla et al., 2014 — Checking app behavior against app descriptions
  11. Shamsujjoha et al., 2021 — Checking app behavior against app descriptions: what if there are no app descriptions?
  12. Maalej and Nabil, 2015 — Bug report, feature request, or simply praise? On automatically classifying app reviews
  13. Pagano and Maalej, 2013 — User feedback in the appstore: an empirical study
  14. Motger et al., 2024 — T-FREX: a transformer-based feature extraction method from mobile app reviews
  15. Zheng et al., 2023 — Judging LLM-as-a-judge with MT-Bench and Chatbot Arena
  16. Gu et al., 2024 — A survey on LLM-as-a-judge