# 以最少重启与近似学习引导的 Android 应用图形界面测试

> SwiftHand 在为 Android 应用生成测试输入的同时，于测试过程中学习近似的图形界面模型。它对 Dalvik 字节码插桩，读取界面组件树，并推导每个屏幕可用的触摸、滚动、文本、返回键和菜单键输入；可用输入相同的屏幕被视为扩展确定性标记迁移系统中的等价状态。学习得到的模型引导执行进入尚未探索的前沿状态，并尽量避免重启，因为重新安装一次应用约需 30 秒。在 10 个 F-Droid 应用上，作者报告其在给定时间预算内的分支覆盖率高于随机测试和基于 L* 的测试，且达到覆盖率的速度更快。

- 作者：Wontae Choi; George Necula; Koushik Sen
- 原标题：Guided GUI Testing of Android Apps with Minimal Restart and Approximate Learning
- 发表载体：OOPSLA 2013
- 发表状态：会议论文
- 出版／提交日期：2013 年 10 月 29 日
- 日期依据：ACM 为会议论文集 DOI 提交的 Crossref 元数据将在线及印刷出版日期均列为 2013 年 10 月 29 日。SIGPLAN Notices 版本另列印刷日期 2013 年 11 月 12 日；两者均非根据 SPLASH 会议日程推定。
- DOI：10.1145/2509136.2509552
- 来源复核于：2026-10-20
- 收录于：2026-11-03
- 原始论文：<https://doi.org/10.1145/2509136.2509552>
- PDF：<https://people.eecs.berkeley.edu/~ksen/papers/swifthand.pdf>
- 代码：<https://github.com/wtchoi/SwiftHand/tree/b2b45acd636ab63beb0969401d1ee2c77fa0530d>
- BibTeX：<https://awesomerea.org/papers/citations/paper-swifthand.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-swifthand/>
- 记录 JSON：<https://awesomerea.org/papers/paper-swifthand/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-swifthand/index.md)

## 研究范围与局限

这是一种测试生成技术，所学模型只是用于引导探索的近似抽象，并非完整或精确的图形界面规约，也不是应用的重新实现。状态仅以可用输入集合区分，并以启发式方式合并；标签页视图等设计会导致状态爆炸和覆盖率偏低。实现不支持主入口为原生代码的应用，只在 Android 4.1 及更高版本上正常工作，也无法处理在远程服务器上存储数据的应用，这些应用因此被排除在基准之外。评估覆盖 Android 4.1.2 上的 10 个 F-Droid 应用：其中八个在模拟器上运行、预算 3 小时，两个在 Galaxy Nexus 手机上运行、预算 1 小时。对部分小型应用，随机测试在更长时间后可追平覆盖率。未证明这款 2013 年的工具可在当前 Android 版本上运行。

## 与本合集的关联

补充由执行驱动推断 Android 应用图形界面状态模型的研究，以行为模型恢复补足本合集中基于截图和设计稿的应用重建论文。

## 发表与复核说明

Crossref 确认三位作者顺序、SPLASH ’13 中的 OOPSLA 2013 会议论文集及第 623–640 页；其标题采用句首大写形式，本条目保留论文所印的大小写。同一文章也收录于 ACM SIGPLAN Notices 第 48 卷第 10 期第 623–640 页，DOI 为 10.1145/2544173.2509552；本条目使用会议论文集 DOI。作者托管的 PDF 共 17 页，创建于 2013-08-11，载有会议论文集 DOI。论文指明代码位于 github.com/wtchoi/SwiftHand。所审阅的 master 快照 b2b45acd 日期为 2015-01-13，此后再无推送；README 称其为提交 OOPSLA ’13 版本的可运行演示。LICENSE.txt 为三条款 BSD 风格文本，版权归加州大学董事会（2013 年）；GitHub 未识别出 SPDX 许可证。README 要求 JDK 6 或 7、Maven 3、含 chimpchat 的 Android SDK 工具、Scala 2.9.1 以及 1665 或更早修订版的 ASMDEX。为复现论文，它建议使用 API 级别 16 的 Nexus S 模拟器，并通过 DNS 设置禁用网络访问。dist/ 包含预构建 jar、十个基准应用的插桩 APK 以及两个未修改的 APK；这些第三方应用保留各自条款。

## 一手来源

1. <https://doi.org/10.1145/2509136.2509552>
2. <https://api.crossref.org/works/10.1145/2509136.2509552>
3. <https://api.crossref.org/works/10.1145/2544173.2509552>
4. <https://people.eecs.berkeley.edu/~ksen/papers/swifthand.pdf>
5. <https://github.com/wtchoi/SwiftHand/blob/b2b45acd636ab63beb0969401d1ee2c77fa0530d/README.md>
6. <https://github.com/wtchoi/SwiftHand/blob/b2b45acd636ab63beb0969401d1ee2c77fa0530d/LICENSE.txt>
7. <https://github.com/wtchoi/SwiftHand/tree/b2b45acd636ab63beb0969401d1ee2c77fa0530d/dist>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
