Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1101Tools index

Previous survey · No. 1106 ·

Pricing
Open Source
Type
TOOL
Builder
bytedance
Date

About

Model-based UI testing tool for Android that learns app transitions to surface stability bugs.

What it does

Fastbot drives an Android app through taps, long presses, scrolling, back navigation, and restarts. It reads the current interface tree, represents screens and available actions, then favors actions with higher expected value. Runs can reuse a saved model and record crashes, native failures, unresponsive states, and activity coverage.

Why it's ranked here

Fastbot offers more direction than blind event generation while retaining high input speed. Its strongest case is broad stability exploration across many Android versions, backed by reusable state models and configurable actions. The substantial native build and device setup make it better suited to committed testing teams than casual checks.

What's good

The engine distinguishes widgets, states, and visited actions, then increases priority for unexplored or unsaturated choices. It supports custom events, widget exclusions, tree pruning, input fuzzing, and reusable models. Reports separate Java crashes, native crashes, unresponsive states, and explored activities, giving teams several concrete investigation signals.

Tradeoffs

Setup requires Gradle, the Android SDK, NDK, CMake, several generated artifacts, and manual device transfers. Execution uses a long device-shell command rather than a packaged desktop runner. Activity coverage can overstate the reachable surface because its total includes abandoned, invisible, or unreachable activities. Documentation also exposes some inconsistent strategy names.

How to use it well

Use Fastbot for extended stability and exploratory fuzzing runs against Android builds on connected devices. Preserve useful models between runs, supply app strings, and enable bug reports for triage. Customize actions when business flows need guidance. It does not document assertion-based functional checks, so keep deterministic scenario tests alongside it.

Technical notes+

README.md documents a Gradle 7.6.2 build that produces monkeyq.jar, plus build_native.sh for shared libraries, followed by adb transfers and execution through app_process. build.gradle uses Android Gradle Plugin 4.2.2 and adds monkey/libs/framework.jar to the Java boot classpath. native/model/Model.cpp parses UI XML, creates states, requests an action from an agent, and serializes a DeviceOperateWrapper as JSON. native/desc/State.cpp derives widget actions and hashes states, while native/agent/AbstractAgent.cpp raises priorities for unvisited and unsaturated actions. native/agent/AgentFactory.cpp always constructs ModelReusableAgent regardless of the requested algorithm. native/events/Preference.cpp adds custom events, XPath matching, exclusions, pruning, and fuzzed text input.

Observed

License
Fastbot Revised License, referenced through LICENSE.txt
Primary languages
Java and C++
Install surface
Source build producing a Java JAR and native shared libraries
Interface
ADB-driven shell command on a connected Android device
Platform support
Android 5 through 14, including modified Android-based systems
Output surface
Device logs for Java crashes, native crashes, ANRs, and activity coverage
Build dependencies
Gradle, Android SDK, NDK, and CMake

Read from README.md, build.gradle, native/Base.cpp, native/desc/Node.cpp, native/desc/State.cpp, native/desc/Action.cpp, native/desc/Widget.cpp, native/model/Graph.cpp, native/model/Model.cpp, native/desc/Element.cpp, native/desc/ActionFilter.cpp, native/desc/StateFactory.cpp, native/events/Preference.cpp, native/agent/AgentFactory.cpp, native/agent/AbstractAgent.cpp.

What it can do

  • Learn app UI transitions automatically

    Android application APK or installed appModel of app's UI state transitions and navigation flows

  • Generate automated UI test sequences

    App transition model and testing parametersAutomated test cases that exercise app functionality

  • Execute model-based UI testing

    Android app and generated test sequencesTest execution results and interaction logs

  • Detect stability bugs and crashes

    Test execution data and app behavior logsBug reports identifying stability issues and crash scenarios

  • Explore app UI states systematically

    Android application interfaceComprehensive coverage of discoverable UI states and paths

  • Surface edge case scenarios

    App transition model and testing heuristicsIdentified problematic user interaction sequences

Tags

androidtestingmobileautomationfuzzing

Tech Stack

Java

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.