【问题标题】:TFS: not all agent machines run (any) tests during buildTFS:并非所有代理机器在构建期间都运行(任何)测试
【发布时间】:2017-09-01 21:30:19
【问题描述】:

我们有一组大约 1000 个(当前)测试,用 C# 编写,每周运行两次。我们正在使用 TFS 2017 更新 1(本地),系统配置为在另一台机器上设置的 6 个 VM 上运行测试。其中 4 台虚拟机运行 Windows Server 2012R2,另外 2 台运行 Windows Server 2016。所有虚拟机都是最新的更新。使用 VS 2017 完成开发。所有测试都是直接的非 UI 功能测试,在每台机器上使用 SQL Server 实例,在测试期间没有跨机器通信或类似的东西。每台机器都是自己独立的环境。

所有测试在本地都运行良好(或者如果它们失败了,我们知道原因,这很好)。当我们启动构建时,实际构建和其他初步步骤似乎很顺利。但是,当它进入“运行功能测试”步骤时,只有一些代理机器开始运行它们,通常是 6 台机器中的 2 台,有时是 3 台,而且通常不是相同的机器。查看任务管理器,我可以看到其他虚拟机没有处理器活动可言。我不知道为什么会这样,也不知道为什么似乎是不同的机器成功启动并开始逐次运行测试。

关键是因为所有机器都没有运行,这使我们超过了 6 小时的测试运行限制,我已经看到在其他线程中处理过......我已经尝试了这些线程中建议的所有内容(包括.runsettings 文件中的设置)并且无法让它放弃该超时,因此我们的整个运行在 6 小时后取消,许多测试中止。出于某种原因,上周我们对所有测试进行了干净运行...自上一次运行以来没有任何变化,并且在下一次运行时又恢复为这种行为。

任何关于“懒惰”机器未运行测试或删除 6 小时超时的见解将不胜感激......

附加说明:此行为在 8 月 9 日左右开始“出乎意料”。在此之前,所有机器都按预期运行。在那段时间附近没有发生任何软件升级或任何其他可疑的事情。虽然 6 小时的时间限制这件事困扰了我一年左右。

【问题讨论】:

  • 您是否在运行功能测试构建任务中选择了“按机器数量分布测试”?
  • 我发现了“按机器数量分布测试”设置,我相信当我们升级到 2017 年时,它就一直设置至今。在testsettings文件中runTimeout和testTimeout设置都设置为一周,在runsettings文件中有对testsettings文件的引用。
  • VisualStudio 测试代理部署任务和运行功能测试任务的设置是什么?你能分享他们的截图和这两个任务的构建日志吗?

标签: tfs


【解决方案1】:

有一个名为按机器数量分布测试的执行选项。

不是在程序集级别分发测试,而是启用此功能 设置将根据机器数量分配测试 与分配给任务的容器组件无关。

Source Link

注意:dll 中的测试也可能分布到多台机器上。


要绕过 6 小时的限制,您可以在 testsettings 文件中将 runTimeout 设置为 xx 小时,并且应该能够成功运行超过 6 小时的测试.

<Execution>
   <Timeouts runTimeout="36000000" testTimeout="5400000" />
   <AgentRule name="Execution Agents">
   </AgentRule>
</Execution>

更多详情请参考本帖回复:TFS 2015 vNext : Test Run always abort after 6 hours

【讨论】:

  • 顺便说一句,我确实在一段时间前找到了该线程,并通读了它。似乎对这个 6 小时的问题没有任何帮助。
【解决方案2】:

好的,在彻底检查完所有内容后,我发现我的设置实际上存在两个问题。难以捉摸的是我的 runsettings 文件没有 ForcedLegacyMode=True,这显然是它甚至查找 testsettings 文件所必需的。更正后,我发现它没有正确指向我的 testsettings 文件。之后还有一个问题,它现在没有发现任何测试,但我认为这可能是由于另一个问题,所以我怀疑最初所说的问题现在已经解决了。感谢您的建议!

【讨论】:

    猜你喜欢
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2014-08-07
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多