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




Я видел, как некоторые люди играли с распределенный JUnit. Я не могу особо ручаться за его эффективность, но другие команды, которых я видел, казалось, думали, что это было достаточно прямолинейно. Надеюсь, это поможет.
Наши специалисты по сборке используют Mozilla Tinderbox. Кажется, есть какие-то зацепки для распределенного тестирования. Извините, что не знаю подробностей, но я подумал, что по крайней мере передам указатель вам.
Это также приятно, потому что вы можете сразу узнать, когда сборка прерывается, и какая проверка могла быть виновата.
Также есть параллельный джунит. В зависимости от того, как вы в настоящее время выполняете свои тесты, его удобство может варьироваться - идея состоит в том, чтобы просто многопоточно в одной системе с несколькими ядрами. Я немного поиграл с ним, но это изменение по сравнению с тем, как мы сейчас проводим наши тесты.
Hudson, движок непрерывной интеграции, который я использую, также имеет несколько способов распределить выполнение тестов (отдельные задания объединяют результаты в одно).