Как принудительно распараллелить тесты в Azure Nunit?

#unit-testing #azure-devops #nunit #vstest #nunittestadapter

#модульное тестирование #azure-devops #nunit #vstest #nunittestadapter

Вопрос:

Мы настраиваем наше текущее решение на Azure devops.

У нас есть большая куча тестов (некоторые модульные тесты, некоторые тесты интеграции), все они выполняются с NUnit.

Мы настроили тест следующим образом:

 - task: VSTest@2
    timeoutInMinutes: 600
    inputs:
      testSelector: 'testAssemblies'
      testAssemblyVer2: '.Test.dll'
      searchFolder: '$(System.DefaultWorkingDirectory)/$(buildConfiguration)'
      codeCoverageEnabled: false
      platform: 'Any CPU'
      configuration: '$(buildConfiguration)'
      rerunFailedTests: false
      pathtoCustomTestAdapters: 'Solution/packages/NUnit3TestAdapter.3.12.0/build/net35'
      minimumExpectedTests: 1000
      runInParallel: true
      distributionBatchType: basedOnAssembly
      failOnMinTestsNotRun: true
      resultsFolder: 'testResults'
  

Это работает, но на это уходит много времени (я говорю о 5 часах), и я ищу способ ускорить процесс.

Одна странная вещь: даже при runInParallel: true использовании, выполняется только один процесс (testhost), который потребляет около 3-6% процессора.

Что я должен сделать, чтобы повредить системный процессор / жесткий диск / … и повысить скорость тестирования?

Комментарии:

1. Вы запускаете эти тесты на собственном агенте?

2. runInParallerl переопределение MaxCpuCount что делает typically, a value of 0 indicates that up to all of the available free cores may be used.

3. Сколько тестовых сборок вы запускаете?

4. @KrzysztofMadej да, я забыл упомянуть об этом, это на собственном агенте.

5. @LeoLiu-MSFT У нас более 6000 модульных тестов, и даже я согласен с тем, что внутри одной конкретной сборки у нас могут быть некоторые случаи, для которых требуется одна и та же система ресурсов (и поэтому они не могут выполняться параллельно), большинство из них тестируют только один класс нашего кода ивы даже можете запустить 10 раз один и тот же экземпляр test. Я прочитал вашу статью, но не могу найти, что должно быть полезным в отношении того, почему она не выполняется параллельно?