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


结构化Bug生成 。 为结合自动化测试过程产生的截图、操作、设备信息等异构数据来对Bug进行不一致性分析 , 同时也为提升现有研究中Bug描述单一 , 难以理解的短板 , 增加最终Bug报告的可读性 , 我们定义了一个结构化Bug模型 。 BREGAT在传统工具仅基于日志报错信息进行Bug描述的基础上 , 通过解析测试操作序列 , 得到应用完整的测试路径和页面跳转图 , 结合截图序列为日志中检测到的原始Bug片段绑定相应的截图、操作和应用页面路径 , 并加入便于分析兼容性Bug的设备品牌、型号、系统版本等信息 , 生成了完备的结构化Bug 。
Bug分类和去重 。 通过对来自16个类别的50个Android应用在20台不同设备(覆盖9个主流品牌、5个常用系统版本)上的自动化测试结果中46002个结构化Bug实例进行不一致性分析 , 人工审查并确认Bug和不一致性之间关系 , 从StackOverflow、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 报告生成技术,基于不一致性分析的移动应用
文章图片
图3Bug报告示例
为评估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报告 。


推荐阅读