<p>Testing Android apps effectively requires a systematic exploration of the app’s possible states by simulating user interactions and system events. While existing approaches have proposed several fuzzing techniques to generate various text inputs and trigger user and system events for GUI state exploration, achieving high code coverage remains a significant challenge in Android app testing. The main challenges are (1) reasoning about the complex and dynamic layout of GUI screens; (2) generating required inputs/events to deal with certain widgets like pop-ups; and (3) coordination between current test inputs and previous inputs to avoid getting stuck in the same GUI screen without improving test coverage. To address these problems, we propose <span>VLM-Fuzz</span>, a novel automated approach for Android GUI testing. At its foundation, <span>VLM-Fuzz</span>&#xa0; utilizes a heuristic-based, recursive depth-first search (DFS) strategy that is intelligently guided by a Vision Language Model (VLM) to effectively explore the app’s complex GUI states. The core innovation of <span>VLM-Fuzz</span>&#xa0; is not simply the use of a VLM, but its strategic, on-demand integration within a hybrid exploration framework. Our approach combines a fast, heuristic-based DFS for standard GUI interactions with targeted, VLM-assisted analysis for visually complex screens. We use static analysis to analyze the Android Manifest file and the runtime GUI hierarchy XML to extract the list of components, intent-filters and interactive GUI widgets. VLM is used to reason about complex GUI layout and widgets on an on-demand basis. Based on the inputs from static analysis, VLM, and the current GUI state, we use some heuristics to deal with the above-mentioned challenges. We evaluated <span>VLM-Fuzz</span>&#xa0; based on a benchmark containing 59&#xa0;apps obtained from a recent work and compared it against two state-of-the-art approaches: <i>APE</i>&#xa0;and <i>DeepGUI</i>. <span>VLM-Fuzz</span>&#xa0; outperforms the best baseline by 9.0%&#xa0;, 3.7%&#xa0;, and 2.1%&#xa0;in terms of class coverage, method coverage, and line coverage, respectively. We also ran <span>VLM-Fuzz</span>&#xa0; on 80&#xa0;recent Google Play apps (i.e., updated in 2024). <span>VLM-Fuzz</span>&#xa0; detected 52&#xa0;unique crashes in 12&#xa0;apps, which have been reported to respective developers.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

VLM-Fuzz: Vision language model assisted recursive depth-first search exploration for effective GUI testing of android apps

  • Biniam Fisseha Demissie,
  • Yan Naing Tun,
  • Lwin Khin Shar,
  • Mariano Ceccato

摘要

Testing Android apps effectively requires a systematic exploration of the app’s possible states by simulating user interactions and system events. While existing approaches have proposed several fuzzing techniques to generate various text inputs and trigger user and system events for GUI state exploration, achieving high code coverage remains a significant challenge in Android app testing. The main challenges are (1) reasoning about the complex and dynamic layout of GUI screens; (2) generating required inputs/events to deal with certain widgets like pop-ups; and (3) coordination between current test inputs and previous inputs to avoid getting stuck in the same GUI screen without improving test coverage. To address these problems, we propose VLM-Fuzz, a novel automated approach for Android GUI testing. At its foundation, VLM-Fuzz  utilizes a heuristic-based, recursive depth-first search (DFS) strategy that is intelligently guided by a Vision Language Model (VLM) to effectively explore the app’s complex GUI states. The core innovation of VLM-Fuzz  is not simply the use of a VLM, but its strategic, on-demand integration within a hybrid exploration framework. Our approach combines a fast, heuristic-based DFS for standard GUI interactions with targeted, VLM-assisted analysis for visually complex screens. We use static analysis to analyze the Android Manifest file and the runtime GUI hierarchy XML to extract the list of components, intent-filters and interactive GUI widgets. VLM is used to reason about complex GUI layout and widgets on an on-demand basis. Based on the inputs from static analysis, VLM, and the current GUI state, we use some heuristics to deal with the above-mentioned challenges. We evaluated VLM-Fuzz  based on a benchmark containing 59 apps obtained from a recent work and compared it against two state-of-the-art approaches: APE and DeepGUI. VLM-Fuzz  outperforms the best baseline by 9.0% , 3.7% , and 2.1% in terms of class coverage, method coverage, and line coverage, respectively. We also ran VLM-Fuzz  on 80 recent Google Play apps (i.e., updated in 2024). VLM-Fuzz  detected 52 unique crashes in 12 apps, which have been reported to respective developers.