理解 Treeherder 结果¶
Treeherder 是开发人员查看其 Try 推送的 CI 测试结果的主要仪表板。仪表板的主要目的是显示所有任务及其状态,以及查看日志、查看失败、添加作业、取消作业或连接到其他工具的工具。
当测试失败时,重要的是要弄清楚这是否是回归或间歇性故障。通常会看到 3-10% 的作业失败,尽管大多数失败是间歇性的(基础设施失败、时间错误、测试有点不稳定等)。有时会出现回归,但故障被认为是间歇性的。
- 测试失败时,可以使用一些工具
确认失败 (CF)
重新触发 (R)
NEW 注释 (NEW)
毛线手套图标
Bug 建议
简而言之:对所有失败使用确认失败,并在所有结果都出来后,哪些测试为橙色且没有毛线手套图标的则需要进一步调查。
最好了解每个工具的工作原理,并将它们结合使用,以最大限度地提高时间效率并找到回归。
确认失败 (CF)¶
- 此工具将在适用时发出强信号。确认失败通过在同一浏览器中运行失败的测试路径 10 次来工作。我们发现与其他方法相比,这是最强的信号,但存在一些限制
这需要在失败行中可以发现的测试失败。
这要求故障出现在受支持的测试框架中(web-platform-test、mochitest*、reftest、xpcshell)。
某些特定硬件(例如 android reftests)或所需的机器存在一些例外情况。
运行此操作可能会导致基础设施故障。
某些特定测试在此方法中运行效果不佳。
这会为在失败任务中发现的每个故障(最多 10 个)启动一个 CF 任务,因此您通常最终会获得 >1 个 CF 作业。
运行此操作时,会调度一个新任务,通常只需几分钟即可完成(重新触发可能需要 15-90 分钟,具体取决于任务)。如果您在故障上运行确认失败,并且缺少测试路径、不受支持的框架或其他已知的限制,则会自动调度重新触发。
要启动确认失败,您需要选择任务
然后点击任务操作菜单
最后选择“确认测试失败”
作业完成后,Treeherder 将确定 CF 作业是否通过,如果它是间歇性的,则会在原始故障中添加一个 图标。
将来,我们计划仅在 NEW 故障上自动运行确认失败。
重新触发 (R)¶
- 重新触发时,整个任务将重新运行。如果测试失败一次,重新运行它,如果它通过,则它是间歇性的,这听起来很简单。实际上,这不是最强的信号,但有时它是最好的信号。以下是一些限制
重新触发存在基础设施故障
重新触发有一组不同的测试失败(可能甚至没有运行您的测试)
重新触发运行其他测试,这些测试可能会影响浏览器的状态/机器,导致结果不确定
重新触发可能需要很长时间(许多任务运行时间 >30 分钟)
鉴于这些限制,重新触发是收集更多信息的实用工具,如果任务没有成功,请准备好更详细地仔细检查日志和故障。
要启动重新触发,您可以:选择一个任务
点击任务操作栏中的旋转箭头图标
NEW 注释 (NEW)¶
Treeherder 保留了过去 3 周在 Autoland 和 Mozilla-Central 上看到的每个失败行的缓存。当出现新的失败行时,它将在任务失败摘要中用 NEW 标记标记。NEW 标记在查找几乎所有回归方面非常成功,缺点是许多 NEW 标记出现在间歇性故障上(如果最近没有看到间歇性故障,或者失败行略有不同)。
NEW 故障适用于所有任务(构建、lint、测试等)和所有故障(包括基础设施故障)
- 在 Try 服务器上,会显示 NEW 注释,它可以作为一种方法,将大量失败的任务快速筛选到更易于管理的数量。最佳实践是在失败的 NEW 任务上运行确认失败或重新触发。要仅查看失败的任务,您可以
点击整个页面的筛选图标
选择字段“故障分类”并选择值“未分类的新故障”
然后点击“添加”
以上内容将在 url 中添加 &failure_classification=6,如果您愿意,可以手动添加。
毛线手套图标¶
Treeherder 的另一个功能是 图标。如果作业重新触发或确认失败并且为绿色,则会将其添加到橙色作业中。这是一个忽略作业故障的绝佳视觉快捷方式。
Bug 建议¶
Treeherder 最初内置的功能是,在查看“失败摘要”时,会显示 bug 建议,向您显示与失败匹配的类似 bug。
如果存在 单个跟踪 Bug,则只会显示该 Bug。
- 需要牢记一些注意事项
如果存在 bug,很容易假设故障是间歇性的。
这并不能告诉您是否已将间歇性故障变成永久性故障。
该 bug 可能是针对不同的配置(查看故障历史记录并比较平台、构建类型、测试变体,以确保此故障不会扩散)
该 bug 可能已不活跃数月。