微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure DevOps VsTest多代理并行

如何解决Azure DevOps VsTest多代理并行

我将Azure DevOps Server 2020与自托管代理一起使用,并创建了CI管道,该管道在一个代理上并行执行所有测试。大约5000个测试(没有UI测试)大约需要7分钟才能完成。为了加快速度,我添加了3个额外的代理,将任务并行放置在同一管道中的另一个作业中:4.所有4个代理首先下载构建工件,然后再下载运行测试的一部分。但是不幸的是,测试运行不是更快,而是更慢,每个代理大约需要8分钟。

我的vstest Yaml for 1个代理商

- task: VSTest@2
  displayName: 'Run tests'
  inputs:
      testSelector: 'testAssemblies'
      testAssemblyVer2:
            **\*test*.dll
            !**\*TestAdapter.dll
            !**\*TestFramework.dll
            !**\obj\**
      searchFolder: '$(System.ArtifactsDirectory)'
      runInParallel: true
      codeCoverageEnabled: false
      rerunFailedTests: false

我的vstest Yaml,有4个代理商

- task: VSTest@2
  displayName: 'Run tests'
  inputs:
      testSelector: 'testAssemblies'
      testAssemblyVer2:
            **\*test*.dll
            !**\*TestAdapter.dll
            !**\*TestFramework.dll
            !**\obj\**
      searchFolder: '$(System.ArtifactsDirectory)'
      runInParallel: true
      codeCoverageEnabled: false
      distributionBatchType: 'basedOnExecutionTime'
      rerunFailedTests: false

我还尝试根据测试数量+代理数量进行组装批处理,但是似乎没有任何效果

让我感到奇怪的是,我有一个基于UI的旧CI管道,在具有4个TestCategories的变量上具有multi-config和multiplier,它分配了更多的测试〜10000个(也有我的5000个),但是正如TestCategory所述使用相同的4个代理(代理1上的Cat1,代理2上的Cat2等),最慢的一个在不到4分钟的时间内完成。

基于UI的Yaml如下所示:

steps:
- task: VSTest@2
  displayName: 'Run tests'
  inputs:
    searchFolder: '$(Build.BinariesDirectory)'
    testFiltercriteria: 'TestCategory=$(Tests)'
    runInParallel: true
    codeCoverageEnabled: false

我认为我必须缺少明显的东西。

谢谢!

编辑1:

我使用RDP连接到代理,并且在任务管理器中有多个正在运行的testhost.x86实例,同时最多运行8个实例,但不是恒定的。如果我在本地启动测试,则testhost.x86的8个以上实例几乎一直都处于启动状态,并且几乎没有消失。如果有帮助的话。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。