Как быстро выполнить и запустить миллионы модульных тестов? - PullRequest
0 голосов
/ 29 ноября 2018

Как быстро выполнить миллионы модульных тестов, т. Е. От 20 до 30 минут?

Вот сценарий:

  • Вы выпускаете определенное оборудование, и у вас, скажем,, 2000 модульных тестов.
  • Вы выпускаете новое оборудование, и у вас есть дополнительные 1000 тестов для этого.

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

Во время разработки это решается путем категоризации, использования атрибута TestCategory и запуска только того, что вам нужно.

CIТем не менее, необходимо выполнить каждый тест.По мере увеличения числа время выполнения становится медленнее, а иногда и время ожидания..testrunconfig уже настроен на выполнение parallelTestCount, но со временем это не решит проблему навсегда.

Как бы вы решили это?

1 Ответ

0 голосов
/ 08 февраля 2019

Кажется, что с каждым обновлением в Visual Studio 2017 время выполнения меняется.В настоящее время у нас более 6000 тестов, из которых от 15 до 20% - это модульные тесты, а остальные - интеграционные тесты.

Узким местом, похоже, был сам сервер CI, работающий на одной машине.От 70% до 80% тестов являются асинхронными, и анализ показал, что нет операций блокирования ввода-вывода.Помимо ввода-вывода, мы не используем базы данных, поэтому мы используем кеширование.

Сейчас мы находимся в процессе миграции на Jenkins и используем его плагин Parallel Test Executor для распараллеливания тестов между несколькими узлами вместо одногомашина.Первоначальное тестирование показало, что время выполнения 6000+ тестов варьируется от 10 до 15 минут по сравнению со старым КИ, который занимал 2 часа или иногда останавливался.

...