Development

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

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

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

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

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

Автор оригинала – Rajith Attapattu