
Fastbot Android
https://github.com/bytedance/fastbot_android- Category
- Developer Tools
- Rank
- No. 1101Tools index
Previous survey · No. 1106 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- bytedance
- GitHub
- 1.2k stars
- 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 app → Model of app's UI state transitions and navigation flows
Generate automated UI test sequences
App transition model and testing parameters → Automated test cases that exercise app functionality
Execute model-based UI testing
Android app and generated test sequences → Test execution results and interaction logs
Detect stability bugs and crashes
Test execution data and app behavior logs → Bug reports identifying stability issues and crash scenarios
Explore app UI states systematically
Android application interface → Comprehensive coverage of discoverable UI states and paths
Surface edge case scenarios
App transition model and testing heuristics → Identified problematic user interaction sequences
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.