Как не потерять параллельное тестирование с tfs build и сохранить работу агентов сборки - PullRequest
0 голосов
/ 28 декабря 2018

Я настраиваю сборку для тестирования TFS и хочу поддерживать полное параллельное тестирование.Только некоторые из наших тестов выполняются параллельно и, следовательно, после того, как они закончили работать на агенте сборки - агент сборки не получает новые тесты для тестирования.Поэтому сборка, которая заняла у нас 30 минут, начинает занимать час и более, поскольку все тесты переименования выполняются только на одном агенте сборки.Все остальные 20 агентов сборки перестают работать через несколько минут, потому что они закончили выполнять большую часть тестов.Мы запускаем наши параллельные тесты с MSTest2.Наши RunSettings.runSettings объявляются работающими параллельно и являются правильными.

Мы пробовали разные расширенные параметры выполнения в сборке.Мы пытались на основе прошлого времени выполнения тестов.на основе количества тестов и агентов и на основе тестовых сборок.Никто из них не работает - после того, как агент закончил свою большую часть тестов, он просто возвращается в режим ожидания.Мы попытались предоставить машине в сборке только один тест для каждой группы, и это было действительно быстрее, но мы утратили привилегию параллельного тестирования на каждой машине.

Мы хотим, чтобы наша сборка работала следующим образом: Мы запускаемэто, и тесты начинают выполняться.Все машины получат количество тестов для запуска.Когда агент сборки завершит выполнение всех заданных ему тестов, он получит тесты с машины, которая не завершила его тесты.Таким образом, мы будем наслаждаться параллельным тестированием сборки и параллельными тестами на машине.Мы не хотим переходить к точке, в которой наша сборка состоит из 2 этапов - 1, при котором тесты выполняются параллельно, а другой - не параллельно.

Возможно ли создать сборку,ответить на все вышеперечисленное?Мы начали терять головы из-за этого и не нашли примеров для сборок, которые будут работать так, как мы хотим.Или как, по крайней мере, изменить настройки, чтобы агент сборки не мог перестать получать новые тесты после того, как он закончил свою массовую работу.

С наилучшими пожеланиями, и я надеюсь, что я достаточно ясно дал понять.

1 Ответ

0 голосов
/ 28 декабря 2018

Нет, это невозможно.Тесты распределяются в начале тестового прогона.Вы можете сделать следующее:

  • Убедитесь, что все ваши медленные тесты помечены с использованием атрибута [TestCategory("slow")].
  • Создайте одну задачу «Выполнить тесты» в конвейерах Azure и используйте фильтрзапустить все тесты , кроме медленных тестов.Это распределит оставшиеся тесты по всем агентам.
  • Создайте одну задачу «Выполнить тесты» в конвейерах Azure и используйте фильтр только для запуска медленных тестов.Это распределит все медленные тесты среди всех агентов

В итоге вы получите два прогона, но ваши тесты будут распределены более равномерно.

В качестве дополнительного преимущества ваши медленные тесты могут опциональнопропустите, если один из ваших быстрых тестов уже не пройден.

В основном то, что я написал здесь:

...