# Тестируйте по ночам и в выходные

(В оригинале - Test While You Sleep (and over Weekends))

Расслабьтесь. Я не имею в виду удаленный центр разработки, выход на работу в выходные или введение ночных смен. Вместо этого я хочу обратить внимание на то, сколько вычислительной мощности имеется в нашем распоряжении. Особенно о том, насколько мы не используем его для того, чтобы облегчить себе жизнь. Вам все время не хватает вычислительной мощности в течение дня? Если это так, то что делают ваши тестовые сервера в нерабочее время? Чаще всего, они простаивают, как по ночам, так и по выходным. И вы можете это использовать.

* *Приходилось ли вам помещать изменение в систему контроля версий без выполнения полного набора тестов?* Одной из причин, почему программисты не запускают тесты перед помещением, является долгое время выполнение полного набора тестов. Когда дедлайн поджимает, люди начинают искать короткие пути. Одно из решений – разбить тесты на две группы. Маленькая, при этом обязательная группа тестов, быстро выполняющаяся, поможет убедиться в том, что перед каждым коммитом проект все еще как-то работает. И большая (при этом включающая в себя и первую маленькую группу тоже, на всякий случай), запускающаяся ночью автоматически и выдающая полный отчет к утру следующего дня.
* *У вас достаточно возможностей протестировать стабильность вашего продукта?* Долгоисполняющиеся тесты важны для обнаружения утечек памяти и других проблем стабильности. Они редко запускаются в рабочее время из-за ограниченности ресурсов. Вы можете запускать эти тесты в пятницу вечером, и до утра в понедельник тесты смогут проработать 60 часов без перерыва.
* *Вам достаточно времени для проведения тестов производительности?* Я видел множество команд, сражающихся за доступ к оборудованию для тестирования производительности. В большинстве случаев командам не хватало времени для работы на нем в течении дня, при этом оборудование простаивало в остальное время. И сервера, и сеть менее всего нагружены по ночам и выходным, и в это время лучше всего проводить тесты производительности.
* *Слишком много комбинаций для тестирования?* Во многих случаях продукт должен работать на нескольких платформах, например, на 32 и 64-х битных Windows, Linux и Solaris, или же на различных версиях одной операционной системы. При этом тестируемое приложение может использовать множество различных транспортных механизмов и протоколов (HTTP, AMQP, SOAP, CORBA и т.п.). Тестирование всех комбинаций вручную очень затратно по времени и чаще всего делается ближе к дате выпуска из-за нехватки ресурсов. И это может быть слишком поздно. Автоматизированные тесты, запускаемые по ночам или на выходных, могут протестировать все комбинации более тщательно.

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

Автор оригинала - [Rajith Attapattu](http://programmer.97things.oreilly.com/wiki/index.php/Rajith_Attapattu)
