Тестовое распространение

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

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

Мы не планируем переписывать какие-либо из наших тестов, но по мере того, как мы добавляем новые тесты и тестируем новые продукты или надстройки, я хотел бы иметь возможность справиться с тем фактом, что мы работаем с очень большим количеством тестов. С другой стороны, если мы сможем найти инструмент, который поможет распространять наши тесты Junit 3.x даже в очень простом виде, бы будет полезен, поскольку нам не придется поддерживать наши собственные инструменты для этого.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
10
0
738
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

Наши специалисты по сборке используют Mozilla Tinderbox. Кажется, есть какие-то зацепки для распределенного тестирования. Извините, что не знаю подробностей, но я подумал, что по крайней мере передам указатель вам.

Это также приятно, потому что вы можете сразу узнать, когда сборка прерывается, и какая проверка могла быть виновата.

http://www.mozilla.org/tinderbox.html

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

Hudson, движок непрерывной интеграции, который я использую, также имеет несколько способов распределить выполнение тестов (отдельные задания объединяют результаты в одно).

Другие вопросы по теме