理解 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 分钟,具体取决于任务)。如果您在故障上运行确认失败,并且缺少测试路径、不受支持的框架或其他已知的限制,则会自动调度重新触发。

要启动确认失败,您需要选择任务

../../_images/th_select_task1.png

然后点击任务操作菜单

../../_images/th_task_action.png

最后选择“确认测试失败”

../../_images/th_confirm_failures.png

作业完成后,Treeherder 将确定 CF 作业是否通过,如果它是间歇性的,则会在原始故障中添加一个 MITTEN 图标。

将来,我们计划仅在 NEW 故障上自动运行确认失败。

重新触发 (R)

重新触发时,整个任务将重新运行。如果测试失败一次,重新运行它,如果它通过,则它是间歇性的,这听起来很简单。实际上,这不是最强的信号,但有时它是最好的信号。以下是一些限制
  • 重新触发存在基础设施故障

  • 重新触发有一组不同的测试失败(可能甚至没有运行您的测试)

  • 重新触发运行其他测试,这些测试可能会影响浏览器的状态/机器,导致结果不确定

  • 重新触发可能需要很长时间(许多任务运行时间 >30 分钟)

鉴于这些限制,重新触发是收集更多信息的实用工具,如果任务没有成功,请准备好更详细地仔细检查日志和故障。

要启动重新触发,您可以:选择一个任务

../../_images/th_select_task1.png

点击任务操作栏中的旋转箭头图标

../../_images/th_retrigger1.png

或在键盘上键入“r”键

如果任务被重新触发并且为绿色,则原始失败任务将具有一个 MITTEN 图标。

NEW 注释 (NEW)

Treeherder 保留了过去 3 周在 Autoland 和 Mozilla-Central 上看到的每个失败行的缓存。当出现新的失败行时,它将在任务失败摘要中用 NEW 标记标记。NEW 标记在查找几乎所有回归方面非常成功,缺点是许多 NEW 标记出现在间歇性故障上(如果最近没有看到间歇性故障,或者失败行略有不同)。

NEW 故障适用于所有任务(构建、lint、测试等)和所有故障(包括基础设施故障)

../../_images/th_new.png
在 Try 服务器上,会显示 NEW 注释,它可以作为一种方法,将大量失败的任务快速筛选到更易于管理的数量。最佳实践是在失败的 NEW 任务上运行确认失败或重新触发。要仅查看失败的任务,您可以

点击整个页面的筛选图标

../../_images/th_filter.png

选择字段“故障分类”并选择值“未分类的新故障”

../../_images/th_filter_classifications.png

然后点击“添加”

../../_images/th_filter_add.png

以上内容将在 url 中添加 &failure_classification=6,如果您愿意,可以手动添加。

毛线手套图标

Treeherder 的另一个功能是 MITTEN 图标。如果作业重新触发或确认失败并且为绿色,则会将其添加到橙色作业中。这是一个忽略作业故障的绝佳视觉快捷方式。

Bug 建议

Treeherder 最初内置的功能是,在查看“失败摘要”时,会显示 bug 建议,向您显示与失败匹配的类似 bug。

../../_images/th_bug_suggestions.png

如果存在 单个跟踪 Bug,则只会显示该 Bug。

需要牢记一些注意事项
  • 如果存在 bug,很容易假设故障是间歇性的。

  • 这并不能告诉您是否已将间歇性故障变成永久性故障。

  • 该 bug 可能是针对不同的配置(查看故障历史记录并比较平台、构建类型、测试变体,以确保此故障不会扩散)

  • 该 bug 可能已不活跃数月。