Распределение тестов

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

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

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

11.08.2008 21:07:44
3 ОТВЕТА
РЕШЕНИЕ

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

2
11.08.2008 21:13:06

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

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

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

1
11.08.2008 22:09:16

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

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

1
26.11.2013 03:58:10