paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Columbus: Android App Testing Through Systematic Callback Exploration

Columbus:通过系统化回调探索的 Android 应用测试
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)2023匹配度 2/10 · 该论文属于 Android 应用自动化测试与回调驱动测试,使用符号执行和动态堆内省,虽涉及程序分析/测试,但并未涉及用户画像核心关注的 ML/Agentic 程序静态分析、LLM 与静态分析/形式化验证结合、浮点程序分析或贝叶斯程序分析。其研究场景和技术目标与用户当前方向匹配度很低。引用 12 inbox
Priyanka Bose, Dipanjan Das, Saastha Vasan, Sebastiano Mariani, Ilya Grishchenko, Andrea Continella, Antonio Bianchi, Christopher Kruegel, Giovanni Vigna
crossref: 2026-09-12dblp: 2026-09-12arxiv: 2026-09-12

AI 速览

一句话:Columbus 自动识别 Android 回调并生成有效参数,借助数据依赖与崩溃引导反馈提升崩溃发现与覆盖率。

Android 应用是事件驱动程序,自动生成所有可能事件十分困难。回调驱动测试通过直接调用应用回调绕开事件生成,但现有技术依赖人工专家预先了解 Android 回调并编写 stub 代码来准备参数,难以覆盖庞大且不断演进的 Android API。本文提出 Columbus:它同时分析 Android 框架与被测应用来自动识别回调,并组合使用欠约束符号执行(生成原始类型参数)与类型引导的动态堆内省(生成对象参数)来构造有效输入。此外,Columbus 在测试过程中引入数据依赖和崩溃引导两种新颖反馈机制,以提高触发崩溃的概率并最大化覆盖率。评估表明,Columbus 在崩溃发现和覆盖率两方面均优于当前最先进的模型驱动、基于 checkpoint 以及回调驱动的测试工具。

问题
Android 应用为事件驱动,自动生成事件代价高;现有回调驱动测试依赖人工专家编写 stub 以准备回调参数,仅能支持 Android 框架中极小部分回调。
方法
Columbus 同时分析 Android 框架与应用以自动识别回调,并结合欠约束符号执行生成原始类型参数、类型引导的动态堆内省生成对象参数;测试中采用数据依赖与崩溃引导两种反馈机制。
评估
与当前最先进的模型驱动、基于 checkpoint 以及回调驱动测试工具进行对比,在崩溃发现数量和代码覆盖率上均取得更优结果。
原文摘要(Abstract)

With the continuous rise in the popularity of Android mobile devices, automated testing of apps has become more important than ever. Android apps are event-driven programs. Unfortunately, generating all possible types of events by interacting with an app's interface is challenging for an automated testing approach. Callback-driven testing eliminates the need for event generation by directly invoking app callbacks. However, existing callback-driven testing techniques assume prior knowledge of Android callbacks, and they rely on a human expert, who is familiar with the Android API, to write stub code that prepares callback arguments before invocation. Since the Android API is very large and keeps evolving, prior techniques could only support a small fraction of callbacks present in the Android framework. In this work, we introduce Columbus, a callback-driven testing technique that employs two strategies to eliminate the need for human involvement: (i) it automatically identifies callbacks by simultaneously analyzing both the Android framework and the app under test; (ii) it uses a combination of under-constrained symbolic execution (primitive arguments), and type-guided dynamic heap introspection (object arguments) to generate valid and effective inputs. Lastly, Columbus integrates two novel feedback mechanisms-data dependency and crash-guidance- during testing to increase the likelihood of triggering crashes and maximizing coverage. In our evaluation, Columbus outperforms state-of-the-art model-driven, checkpoint-based, and callback-driven testing tools both in terms of crashes and coverage.

链接与引用

DOI 原文 · arXiv · PDF(开放获取) · DBLP

BibTeX
@inproceedings{BoseDVMGCBKV23,
  title = {Columbus: Android App Testing Through Systematic Callback Exploration},
  author = {Priyanka Bose and Dipanjan Das and Saastha Vasan and Sebastiano Mariani and Ilya Grishchenko and Andrea Continella and Antonio Bianchi and Christopher Kruegel and Giovanni Vigna},
  booktitle = {ICSE},
  year = {2023},
  doi = {10.1109/icse48619.2023.00121}
}