Columbus:通过系统性回调探索进行 Android 应用测试
软件工程
2023-02-21 v1
摘要
随着 Android 移动设备普及度的持续上升,应用的自动化测试变得比以往更为重要。Android 应用是事件驱动程序。遗憾的是,通过与应用界面交互来生成所有可能类型的事件对自动化测试方法而言具有挑战性。回调驱动测试通过直接调用应用回调消除了事件生成的需要。然而,现有回调驱动测试技术假定具备 Android 回调的先验知识,并依赖熟悉 Android API 的人类专家编写在调用前准备回调参数的桩代码。由于 Android API 庞大且不断演进,先前的技术仅能支持 Android 框架中存在的很小一部分回调。在本工作中,我们引入 Columbus,一种回调驱动测试技术,采用两种策略消除人工参与的需要:(i) 它通过同时分析 Android 框架与待测应用自动识别回调;(ii) 它结合欠约束符号执行(基本类型参数)与类型引导的动态堆内省(对象参数)来生成有效且高效的输入。最后,Columbus 在测试期间集成两种新颖反馈机制——数据依赖与崩溃引导,以增加触发崩溃的可能性并最大化覆盖率。在我们的评估中,Columbus 在崩溃与覆盖率方面均优于最先进的模型驱动、基于检查点与回调驱动的测试工具。
引用
@article{arxiv.2302.09116,
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},
journal= {arXiv preprint arXiv:2302.09116},
year = {2023}
}