轻量级android应用自动测试工具-2017全国大学生软件测试大赛
DroidBot: A Lightweight Android App Testing Bot
轻量级Android应用自动测试工具
李元春
liyuanchun@
2017全国大学生软件测试大赛总决赛
Can robots beat human?
Android 自动测试输入生成
•理想:
• 计算机自动生成测试输入
• 自动生成的输入能快速、准确地发现bug
关于“Android 自动测试输入生成”的研究
•近百篇相关论文发表在软件工程领域学术会议
• 代表性工作:DynoDroid, A3E, PUMA, ACTEve, Gator等
•现有研究主要关注
• 分析代码,构造应用模型,生成能触发问题代码的输入
•主要问题
• 受制于代码分析的难度
• 较高的使用要求(需要插桩系统、应用等)
绝大多数自动测试工具的覆盖率及覆盖速度不如Monkey
(图源:Automated Test Input Generation for Android: Are We There Yet? Choudhary et al. ASE 2015)
工具名称 不需要插桩系统 不需要插桩应用 不需要源代码
Monkey
DynoDroid
GUIRipper
PUMA
A3E
ACTEve
JPF-Android
绝大多数自动测试工具需要插桩系统、插桩应用、或需要源码
(数据源:Automated Test Input Generation for Android: Are We There Yet? Choudhary et al. ASE 2015)
Android 自动测试输入生成
•现实
• 大量的测试用例需要人工编写
• 随机测试工具(Monkey)速度慢、覆盖率低、不可复现
• 云测试、众包测试
• 无测试……
关于DroidBot
• 开源/honeynet/droidbot
1
• 起初为The Honeynet Project 的一部分,用于恶意应用识别
• 现在是一个通用的应用自动测试框架
• 广泛用于各种应用动态分析研究
1 The Honeynet Project是一个专注于信息安全相关研究的非营利性组织。
DroidBot的设计思想
轻量级 可扩展
• 无需插桩系统、应用 • 生成应用UI转换模型
• 无需源代码 • 提供基于模型的测试策略
• 适用于绝大多数测试场景 • 支持自定义测试策略
DroidBot架构
•Adapter: 与设备及应用I/O
• 读取UI、进程等相关信息
• 发送UI交互、Intent、传感器等输入
• Brain: 构造应用模型并决策
• 模型:UI状态转换图(UTG)
获取App状态信息
• UI结构及内容: