『慕测科技』基于不一致性分析的移动应用 Bug 报告生成技术( 二 )


结构化 Bug 生成 。 为结合自动化测试过程产生的截图、操作、设备信息等异构数据来对 Bug 进行不一致性分析 , 同时也为提升现有研究中 Bug 描述单一 , 难以理解的短板 , 增加最终 Bug 报告的可读性 , 我们定义了一个结构化 Bug 模型 。 BREGAT 在传统工具仅基于日志报错信息进行 Bug 描述的基础上 , 通过解析测试操作序列 , 得到应用完整的测试路径和页面跳转图 , 结合截图序列为日志中检测到的原始 Bug 片段绑定相应的截图、操作和应用页面路径 , 并加入便于分析兼容性 Bug 的设备品牌、型号、系统版本等信息 , 生成了完备的结构化 Bug 。
Bug 分类和去重 。 通过对来自 16 个类别的 50 个 Android 应用在 20 台不同设备(覆盖 9 个主流品牌、5 个常用系统版本)上的自动化测试结果中 46002 个结构化 Bug 实例进行不一致性分析 , 人工审查并确认 Bug 和不一致性之间关系 , 从 Stack Overflow、GitHub 等问题讨论区确认并收集 Bug 产生的根本原因和通用修复建议 , 我们定义了一个可扩展的带不一致性标签 Bug 分类法 , 共包含 67 个类别 。 分类法中每个 Bug 类别都具有唯一的类别特征三元组(不一致性标签、根本原因、通用日志模式) 。 BREGAT 基于该分类法来指导 Bug 分类和去重 , 对于结构化 Bug 实例 , 用分类法 Bug 类别定义中的通用日志模式尝试匹配结构化 Bug 的设备日志片段 , 匹配成功则为 Bug 实例标注相应类别编号 , 失败则归为未分类 Bug , 在最终 Bug 报告中交由开发者进一步审查 。 对于同类别下的多个 Bug 实例 , BREGAT 基于 Bug 实例在该类别不一致性标签上的取值对 Bug 进行分组 , 位于同类别、同分组下且日志片段相同的 Bug 实例被识别为重复 Bug 进行剔除 。 按类别不一致性标签取值对同类别下 Bug 进行分组 , 在去重的同时还保留了 Bug 和不一致性的关系 。 如同类别下两个 Bug 实例分别产生于系统版本为 6.0 和 7.0 设备上 , 所属 Bug 类别不一致性标签为系统版本不一致性 , 按不一致性标签取值进行分组后这两个 Bug 实例都被保留 , 这对保证 Bug 报告的完备性至关重要 。
Bug 报告生成 。 BREGAT 从多个维度统计分类、去重后的结构化 Bug 分布情况 , 从不同视角生成了可复现、易理解的 Bug 报告 , 图 3 为报告示例 。 报告包含了应用 Bug 在设备、机型、品牌、Bug 类型、Bug 严重等级上的分布情况 。 同时从 Bug 视角为每个 Bug 展现了包含结构化数据的详情页 , 除复现步骤、截图、Bug 日志片段等基本信息外 , Bug 类别信息、通用修复建议及我们首次引入的不一致性信息使报告具备了对 Bug 特性的洞察 。 此外 , 还从设备视角 , 展示了每个设备在测试过程中的完整日志、截图序列 , 便于开发者快速理解、定位和修复 Bug 。
3. 研究效益
移动应用测试需求方在云测平台上发布自动化测试任务 , 测试结束后 BREGAT 自动对多设备测试结果进行 Bug 检测 , 生成结构化 Bug 集合 , 并对结构化 Bug 进行分类、去重 , 最终生成一份具有良好可读性 , 可复现、易理解的 Bug 报告 。 开发者通过查看报告可以掌握应用整体的 Bug 分布情况 , 可针对主流机型或 Bug 严重等级优先修复相应 Bug 。 报告中每个 Bug 均提供了完整的复现步骤、类别信息、日志片段以及不一致性信息 , 帮助开发者快速理解和修复 Bug 。

『慕测科技』基于不一致性分析的移动应用 Bug 报告生成技术
本文插图

图 3 Bug 报告示例
为评估 BREGAT 对自动化测试结果中 Bug 的分类和去重能力 , 我们将其与自动化测试 Bug 报告融合工具 FuRong 进行了对比 。 在对 30 个应用在 20 台设备上的自动化测试结果进行 Bug 分类和去重时 , BREGAT 覆盖了结果中 83%的真实 Bug , 且分类精确率为 86% , 分类能力显著优于 FuRong 。 BREGAT 去除了结果中 97%的重复 Bug , 在去重准确率、召回率、精确率等指标上均优于 FuRong 。 在 16 名开发者代表参与 , 涉及 9 种不同类别的 Bug 复现实验中 , BREGAT 所生成 Bug 报告的平均复现速率为 17.4 秒/个 , 成功率为 100% 。 而作为对照的可理解崩溃报告生成工具—CrashScope , 其平均复现速率为 78.4 秒/个,成功率为 85% 。 参与者在复现实验后填写了匿名报告调查问卷 , 其中 Bug 可读性问题得分的 Friedman 检验结果表明 , BREGAT 报告可读性显著优于 CrashScope 报告 。


推荐阅读