Канареечное тестирование: что это такое и как вы можете извлечь из этого пользу?
Опубликовано: 2022-08-20Скорее всего, если вы не программист, вы никогда не слышали о канареечном тестировании. Это нормально, однако вам, вероятно, интересно, что это такое и почему это называется канареечным тестированием?
Термин происходит от фразы «канарейка в угольной шахте». Видите ли, шахтеры приносили с собой в угольную шахту канарейку в клетке, поскольку у канареек более низкая устойчивость к ядовитому газу.
Поэтому рабочие знали, что если канарейка погибнет, они должны выбраться из шахты. С точки зрения разработки программного обеспечения, при создании нового программного обеспечения цель состоит в том, чтобы обнаруживать и устранять проблемы как можно быстрее, прежде чем они станут проблемой для пользователей.
Что такое канареечное тестирование?
Canary-тестирование — это метод опробования новых функций и возможностей с минимальным негативным воздействием на пользователя. Этот тип тестирования обычно используется с небольшой группой пользователей, которым приложение предоставляется с небольшими изменениями. Таким образом, большинство пользователей по-прежнему будут использовать текущую версию программного обеспечения, в то время как выбранная небольшая группа пользователей будет использовать слегка обновленную версию.
Цель этого упражнения — позволить большинству людей, использующих программное обеспечение, продолжать работу с ним без каких-либо проблем, в то же время внося изменения только для небольшого процента пользователей.
Все это делается при одновременной работе существующей и новой версии приложения. Затем, если канареечное тестирование не вернет никаких ошибок, вы можете продолжить его расширение для большего процента пользователей.
Читателям также интересно : Что такое быстрая разработка приложений? 4 этапа методологии RAD — DevriX
Как выполнить канареечный тест?
Первым шагом в канареечном тесте является запуск набора внутренних серверов или контейнеров для запуска нового кода. Как только появятся новые пользователи, ваш балансировщик нагрузки отправит процент от них в «канареечный кластер».
Затем специалисты DevOps наблюдают за серверами, чтобы выявить потенциальные проблемы, такие как вычислительная нагрузка или более высокая скорость ввода-вывода. И имейте в виду, что даже в случае возникновения серьезных проблем можно легко вернуть все к исходному состоянию, поскольку этот процесс не затрагивает всех, кто использует программное обеспечение.
В противном случае вы можете легко внедрить и автоматизировать канареечное тестирование, используя такие инструменты, как Spinnaker, для определения количества пользователей, использующих новый код.
Упомянутый процент обычно составляет около 5%, и как только назначенная команда DevOps установит, что проблем нет, они могут постоянно увеличивать этот процент, пока все не будут использовать новую версию кода приложения.
Более того, канареечное тестирование полезно в ситуациях, когда среда разработки или подготовки не полностью соответствует производственной среде. Использование небольшой тестовой группы пользователей может выявить любые проблемы, которые не были обнаружены во время промежуточной среды или среды разработки.
Читателям также понравится : A/B-тестирование с WordPress: полное руководство — DevriX
Преимущества и недостатки канареечного тестирования
Давайте определим, что хорошо, а что плохо, когда дело доходит до тестирования, используя канареечный метод.
Преимущества канареечного тестирования
- Тестирование в реальном мире . Тестирование в закрытых внутренних средах — это здорово, однако возможность тестировать программное обеспечение на реальных пользователях — это то, что продвинет вас на шаг вперед. С канареечным развертыванием вы можете сделать именно это — протестировать свое приложение на небольшой аудитории, не рискуя выпустить совершенно новое приложение.
- Лучшее управление рисками . Постепенный выпуск новых функций и обеспечение их правильной работы значительно снижает любые серьезные ошибки и общую стоимость любых сбоев.
Используя метод канареечного тестирования, вы, по сути, избавляетесь от необходимости откатывать основные обновления или переписывать большие объемы кода. - Более ориентирован на бизнес . Нужно представить бизнес-данные менеджерам и специалистам по маркетингу/продажам? С canary вы можете очень быстро просмотреть результаты. Например, если вы хотите протестировать новую функцию программного обеспечения — вы можете развернуть новую функцию для небольшой группы пользователей, а затем подождать, чтобы увидеть, хорошо ли она работает или нет. Затем вы можете использовать эти данные, чтобы повысить вовлеченность для ваш продукт.
Недостатки канареечного тестирования
- Проблемы с программным обеспечением . Есть еще непроверенный код, поэтому, естественно, есть риски. В случае, если даже у нескольких пользователей возникают серьезные проблемы с определенной функцией, лучше пропустить канареечное тестирование в пользу более строгого внутреннего тестирования.
- Большие расходы . Если вы собираетесь использовать балансировщик нагрузки для разделения пользователей, вам потребуется дополнительная инфраструктура и больше администрирования. Это означает, что вам придется создать две отдельные рабочие среды и серверные части для выполнения теста. Итак, два сервера приложений, две строки кода, два веб-сервера и сетевая инфраструктура для обслуживания.
- Плохой пользовательский опыт . Некоторым пользователям может не понравиться идея использования их в качестве испытуемых. Если вы хотите открыто говорить о том, что происходит, вы можете сообщить пользователям, что их используют как «канареек», с помощью программы «раннего внедрения» или чего-то подобного.
Когда не следует использовать канареечное тестирование?
Canary-тестирование полезно во многих случаях, однако это не верный ответ на все вопросы (это 42).

Вот когда вам определенно не следует использовать канареечный подход:
- В средах, которые не подходят для непрерывного развертывания.
- При работе с критически важным программным обеспечением, таким как системы жизнеобеспечения или ядерные реакторы.
- Финансовые системы, сбой в которых может привести к значительным экономическим последствиям.
Когда вы не можете обновить программное обеспечение удаленно.
Как выполнить канареечное развертывание?
Теперь давайте взглянем на необходимые шаги, которые необходимо предпринять для выполнения канареечного развертывания.
- Подготовьтесь к развертыванию на промежуточном сервере.
- Исключите канареечные узлы с помощью балансировки нагрузки.
- Разверните новую версию на канареечных узлах.
- Протестируйте новую версию с помощью автоматических тестовых сценариев.
- Подключайте канареечные узлы к трафику с балансировкой нагрузки.
- Разверните обновление на остальные производственные узлы.
На практике развертывание начинается с подготовки промежуточного сервера. Проверьте файлы конфигурации, сценарии тестирования, артефакты сборки и т. д. После этого вы можете либо запустить автоматические или ручные тесты, либо оставить сервер в рабочем состоянии и посмотреть, все ли работает хорошо или происходит сбой.
Когда запускать Canary в производство?
После того, как вы протестировали свое канареечное обновление на 5 или 10% пользователей и все работает правильно, вы можете удвоить или утроить процент тестовых пользователей.
Затем снова протестируйте, соберите отзывы по метрикам, и как только вы оцените, что все работает нормально, еще раз, вы можете приступить к обновлению 70% производственной среды.
Наконец, повторите процедуру тестирования и, если все в порядке, разверните новую версию программного обеспечения для 100 % пользователей и, конечно же, продолжайте мониторинг.
Компании, внедрившие Canary Deployment
Чтобы показать вам, что канареечное развертывание является популярным методом реализации, мы рассмотрим некоторые компании, которые используют канареечное развертывание.
Нетфликс
Гигант потокового сервиса использует автоматизированный канареечный анализ с Kayenta с 2018 года. Это позволяет чрезвычайно быстро обновлять производственную среду Netflix. Компания заявляет, что этот метод развертывания повысил производительность разработчиков при одновременном снижении риска внесения изменений в их производственную среду.
Инстаграм
Эта социальная медиа-платформа также является давним поклонником канареечного развертывания. Их соучредитель и технический директор Майк Кригер поделился, что канареечные релизы гарантируют, что ошибки не наносят слишком большого ущерба и затрагивают только небольшую группу людей.
Знаете ли вы, что у Google Chrome есть специальная версия, предназначенная для разработчиков? Верно, Google Chrome Canary позволяет протестировать новые API-интерфейсы веб-платформы и увидеть, как будет выглядеть будущее браузера раньше всех.
Майкрософт
Microsoft использует собственный персонал для канареечного тестирования всех обновлений своих продуктов. Этот процесс существует со времен Windows Vista и Microsoft Azure. Обновление до Windows 10 также было выполнено с использованием канареечных обновлений операционных систем их сотрудников.
Резюме
Canary-тестирование — отличный способ быстро представить новые версии приложений в реальных тестовых средах. Не только это, но и позволяет лучше управлять рисками и получать больше отслеживаемых данных.
Несмотря на то, что у канареечного тестирования так много преимуществ, оно не всегда является решением для любой ситуации. Обязательно проведите исследование, прежде чем начать развертывание канареек, иначе это может иметь для вас неприятные последствия.