问题描述
我将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 (将#修改为@)