FuncDroid: Towards Inter-Functional Flows for Comprehensive Mobile App GUI Testing
As mobile application (app) functionalities grow increasingly complex and their iterations accelerate, ensuring high reliability presents significant challenges. While functionality-oriented GUI testing has attracted growing research attention, existing approaches largely overlook interactions across functionalities, making them ineffective at uncovering deep bugs hidden in inter-functional behaviors. To fill this gap, we first design a \textbf{F}unctional \textbf{F}low \textbf{G}raph (\textbf{FFG}), a behavioral model that explicitly captures an app’s functional units and their inter-functional interactions. Based on the FFG, we further introduce an \textit{inter-functional-flow-oriented GUI testing} approach with the dual goals of precise model construction and deep bug detection. This approach is realized through a \textit{long–short-term-view-guided testing} process. By combining two complementary test-generation views, it can adaptively refine functional boundaries and systematically explore inter-functional flows under diverse triggering conditions. We implement our approach in a tool called \textbf{FuncDroid}, and evaluate it on two benchmarks: (1) a widely‑used open‑source benchmark with 50 reproducible crash bugs and (2) a diverse set of 52 popular commercial apps. Experimental results demonstrate that FuncDroid significantly outperforms state‑of‑the‑art baselines in both coverage (+28%) and bug detection number (+107%). Moreover, FuncDroid successfully uncovers 18 previously unknown non‑crash functional bugs in commercial apps, confirming its practical effectiveness.