「慕测科技」Bug 报告生成技术,基于不一致性分析的移动应用

图1Bug报告生成流程
1.研究意义
近年来 , 随着智能设备的普及 , 移动应用已成为人们日常生活中不可或缺的一部分 。 娱乐、购物、支付和其他类型应用不断涌现 , 诸如GooglePlay和AppStore的移动应用市场上有数百万应用可供用户下载 。 Android应用因其灵活开源的特性和功能多样的第三方库备受开发者青睐 , 而其碎片化的生态也同样影响着数十亿用户 。 不同移动设备软硬件环境存在差异 , 使得未经充分测试的应用暴露出许多潜在的Bug , 造成用户流失 , 开发商声誉受损 , 最终导致应用在竞争激烈的市场中被用户抛弃 。 为保障应用质量 , 减少用户损失 , 开发者需要及时地进行Bug修复 , 包含了详细Bug描述信息的应用Bug报告则是修复阶段的重要参考 。
但现有Bug报告无论是在其展现形式还是生成效率方面都存在一些不足 , 在Bug修复阶段对开发者的帮助十分有限 。 常见的手工测试报告中通常包含了具备领域知识的众包测试工人对Bug的理解和分析 , 但手工测试效率低 , 人工成本较高 。 现有自动化测试工具大幅提升了测试效率 , 降低了开销 , 但其生成的Bug报告通常是对测试数据的简单罗列和展示 , 缺乏对于Bug特性的洞察 , 如类别信息、修复建议 , 导致其结果仍然需要消耗一定人工审查成本 。 虽然自动化测试可在多设备上批量执行 , 以模拟应用真实运行场景 , 但在生成Bug报告时 , 应用在不同设备上产生的重复Bug未被有效去除 。 此外 , 现有手工测试和自动化测试Bug报告均未考虑多设备场景下引入的不一致性 , 即应用GUI特性和测试设备碎片化导致相同应用在不同设备上的行为和表现存在差异 。 因此 , 去除了多设备上的重复Bug , 结合了不一致性信息 , 包含对于Bug特性的洞察 , 具有良好可读性 , 能够提升开发者理解和修复Bug效率的易理解Bug报告显得尤为必要 。
2.研究内容
为结合自动化测试和手工测试Bug报告的优点 , 填补现有易理解自动化测试Bug报告研究存在的空白 , 针对Android应用自动化测试结果 , 我们提出了一种基于不一致性分析的移动应用Bug报告生成技术—BREGAT(BugReportGenerationforMobileAppTesting) 。 我们首次对自动化测试结果中存在的不一致性进行了形式化定义 , 并讨论了Bug和不一致性之间关系 , 如GUI不一致性相关Bug说明是应用自身问题所致 , 与设备无关 , 这对提升最终Bug报告可理解性十分关键 。 通过对真实自动化测试结果中Bug的审查和分析 , 我们定义了一个可扩展的带不一致性标签的Bug分类法 , 各类别均标注了不一致性标签 , 收集了产生原因和通用修复建议 。 BREGAT实现了该分类法 , 用于对自动化测试结果中检测到的结构化Bug进行分类、去重 , 并结合截图、操作、设备信息等异构数据生成易理解Bug报告 , 加速Bug理解和修复 。 图2为BREGAT工作流程 。
「慕测科技」Bug 报告生成技术,基于不一致性分析的移动应用
文章图片
图2BREGAT工作流程
Bug检测 。 相比于截图和操作等GUI数据 , 测试设备日志详细记录了应用程序的真实运行状态和生命周期 , 可以发现更多源码级别的Bug , 其中一些Bug用户仅从GUI层级甚至无法感知 。 日志也是开发者分析应用运行状态 , 调试应用功能的关键参考信息 。 因此 , 对于应用测试过程中在Android设备AP(ApplicationProcessor)端main , system , events , radio , crash缓冲区打印的设备日志 , BREGAT通过“fatal” , “error” , “exception”和“ANR”等Bug关键字来定位设备日志中Bug相关报错信息 。 对于打印了异常堆栈的Bug , 即对应日志中多行结构化输出 , 通过相应的日志模式匹配筛选出完整的Bug日志 。 BREGAT最终从设备日志中过滤出UncaughtException , ANR(ApplicationNotResponse)以及包含了常见Bug关键字的开发者自定义日志输出 , 或疑似Bug的日志片段 。


推荐阅读