Что такое спайк-тестирование

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

Содержание:

Что такое спайк-тестирование?

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туторилов, задач по автоматизации и книг по QA.

Спайк-тестирование – это вид тестирования производительности, при котором сайт или приложение подвергается внезапному и экстремальному увеличению и уменьшению нагрузки (скачкам). Оно используется для определения того, насколько быстро система может масштабироваться и восстанавливаться и не приводят ли скачки трафика к возникновению узких мест или проблем с производительностью.

Спайк-тестирование аналогично нагрузочному. Но в отличие от нагрузочного тестирования, при спайк-тестах не применяется равномерная или ожидаемая нагрузка на систему (например, 100 запросов в минуту в течение 20 минут). Вместо этого может быть смоделировано 1000 запросов в одну минуту, затем 100 в следующую, затем 2000 в следующую и т.д.

Таким образом имитируются ситуации, когда трафик является большим, непредсказуемым и внезапным. Это помогает предприятиям и организациям подготовиться к таким событиям, как:

  • Выпуск ограниченной серии товара(лимитированные кроссовки).
  • Масштабная короткая распродажа (например, “черная пятница” или “киберпонедельник”).
  • Продажа билетов на выступление популярного артиста или фестиваль.
  • Регистрация в государственном секторе.
  • Крупное сотрудничество с влиятельными лицами, PR-акция или маркетинговая кампания.

Если вы проводите какие-либо из этих мероприятий или ожидаете значительных колебаний трафика, используйте спайк-тесты. Они покажут, как ваш сайт или приложение справятся с наплывом пользователей. Это позволит вам избежать сбоев и обеспечить вашим клиентам лучший пользовательский опыт.

В чем важность спайк-тестов?

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

Всплески трафика являются второй по частоте причиной простоя (после сбоев в сети). Даже крупные компании с высокомасштабируемыми системами и настроенным автомасштабированием страдают от таких сбоев и замедлений.

Трафик от рекламы Super Bowl обрушил сайт Coinbase. Сделки Prime Day обрушили сайт Amazon. Поток желающих подать налоговые декларации привел к сбоям на сайте I.R.S.

Если на сайте вашей компании периодически случаются внезапные подъемы и спады трафика, спайк-тестирование просто необходимо. Оно гарантирует, что ваша система сможет справиться с ними без сбоев, замедлений или ошибок.

Неподготовленность – это прямой путь к неудаче. Сбои в работе сайта представляют собой серьезную угрозу для:

  • Вашей итоговой прибыли: 91% предприятий отмечают огромные потери прибыли во время простоя.
  • Лояльности клиентов: Каждый третий клиент уходит от любимого бренда после одного неудачного опыта.
  • Репутации вашего бренда: 32% ИТ-специалистов утверждают, что репутация их бренда пострадала из-за простоев.

Спайк-тестирование – это не только определение того, как система работает во время всплеска, но и как она восстанавливается в периоды между всплесками.

Даже если ваш сайт или приложение работают стабильно, большинству систем требуется определенное время для стабилизации после резкого увеличения трафика. Если вы внезапно снизили нагрузку и обнаружили, что ошибки все еще присутствуют, время отклика остается высоким или, что еще хуже, система так и не восстанавливается, значит, спайк-тест выявил серьезную проблему.

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

Сравнение нагрузочного, спайк и стресс-тестирования.

Спайк-тестирование является одним из видов тестирования производительности. Тестирование производительности – это комплекс процедур для определения работоспособности, стабильности, потребления ресурсов сайта или приложения. К ним относятся тесты на скорость, масштабируемость и надежность.

Ниже приведено простое описание трех распространенных типов тестирования производительности – нагрузочного, спайк и стресс-тестирования – и их различных целей.

Нагрузочное тестирование

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

Такие тесты обычно ориентируются на ожидаемую нагрузку и применяют ее по единой схеме. Они используются для определения производительности сайта или приложения в ожидаемых (или слегка экстремальных) условиях.

Допустим, вы ожидаете максимум 10 000 одновременных пользователей, при этом средняя продолжительность перехода пользователя составляет 10 минут. В этом случае в течение 10 минут нагрузочный тест будет заполнять сайт 1000 виртуальными пользователями в минуту (или, чтобы немного расширить границы, 1100).

Это позволит вам понять:

  • Сможет ли сайт выдержать 10 000 одновременных пользователей.
  • Сможет ли сайт выдержать 1 000 новых пользователей в минуту.

Стресс-тестирование

Стресс-тестирование – это тип тестирования производительности, который ориентирован не только на ожидаемую, но и на экстремальную нагрузку. Стресс-тесты подразумевают доведение сайта или приложения до предела и наблюдение за его восстановлением.

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

Это говорит о том, что:

  • 1300 пользователей в минуту – это максимальная пропускная способность вашего сайта.
  • Какое узкое место мешает вам увеличить это число.

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

Spike-тестирование

Спайк-тестирование – это единственный тип тестирования производительности, специально предназначенный для проверки того, как работает ваша система во время внезапных больших всплесков трафика. Как и нагрузочное тестирование, оно проверяет производительность под воздействием больших нагрузок. Главное отличие в том, что при спайк-тестировании нагрузка на систему создается внезапно и волнообразно.

Вместо 1 000 пользователей в минуту в течение 10 минут в спайк-тесте может быть смоделировано 4 000 пользователей в первую минуту, затем их отсутствие в течение 8 минут, а затем еще 6 000 пользователей в последнюю минуту.

В отличие от стресс-тестов, спайк-тесты не ставят перед собой цели вызвать сбой тестовой среды. Их задача – убедиться, что система способна справиться с определенным объемом трафика и запросов (и восстановиться после них), а не вывести ее из строя.

Спайк-тестирование – это своего рода подготовка к неожиданным ситуациям.

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

Примеры всплесков веб-трафика, показывающие важность спайк-тестирования

Внезапные всплески трафика встречаются гораздо чаще, чем многие думают. Рассмотрим несколько реальных примеров. Для этого мы собрали данные о трафике, полученном в ходе 4 различных мероприятий с высокой посещаемостью, проводимых 4 различными компаниями и организациями. Эти примеры показывают, насколько масштабными, внезапными и опасными могут быть внезапные нагрузки..

1. Всплеск трафика PR: Rakuten France

Когда компания Rakuten France появилась в национальных новостях, посещаемость ее сайта за две минуты возросла на 819%.

Порог трафика, определенный с помощью нагрузочного тестирования, составлял 1 200 пользователей в минуту. В случае с PR-выступлениями посещаемость была в пять раз выше – до 6 000 новых пользователей в минуту.

“Это была даже не реклама, не предложение или что-то в этом роде. Просто было сказано, на кого работает наш представитель, и упомянут наш бренд, и мы сразу же увидели всплеск”, – говорит Тибо Симонд, менеджер по инфраструктуре Rakuten France.

2. Всплеск трафика при выпуске ограниченной серии продукции: Rapha

Когда велосипедный бренд Rapha объединился с одним из самых популярных брендов уличной одежды для выпуска продукции, они знали, что трафик на сайте будет огромным.

В течение первых двух часов после выхода продукта трафик резко увеличивался и уменьшался. Он колебался от нескольких сотен пользователей в минуту до почти 2 000 пользователей в минуту.

“Наш партнер выпускает продукцию только таким способом. Весь их технологический стек построен на быстрой продаже. На нашей первой встрече они сообщили, что получали 100 000 запросов каждые несколько минут», — рассказал технический директор Rapha Тристан Уотсон. В отличие от партнера, мы работаем по более традиционной модели продаж, поэтому наша инфраструктура не рассчитана на такие резкие скачки трафика.

3. Всплеск трафика при продаже билетов на фестиваль: Ingresso.com

Ingresso.com занимается продажей билетов на Rock in Rio, один из крупнейших музыкальных фестивалей в мире. В последний раз в очереди за билетами на это грандиозное событие стояли 1 млн. пользователей.

Когда началась общая продажа, посещаемость сайта возросла до более чем 20 000 пользователей в минуту. Уже через 5 минут этот показатель снизился вдвое и в течение следующих 20 минут оставался на уровне около 10 000 новых пользователей в минуту.

“Когда вы находитесь в загоне для быков, вам нужно что-то, чтобы контролировать быка. Он непредсказуем и может броситься на вас в любой момент”, – говорит технический директор компании Ingresso Роберто Хосе. Спайк-тестирование позволяет нам контролировать “быка” при внезапном достижении пика трафика”. Дело даже не только в том, чтобы продать много билетов, а в том, чтобы обеспечить больший контроль и безопасность нашей работы”.

4. Резкий всплеск трафика при регистрации в государственном секторе: “Эффект пресс-конференции”

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

В приведенном примере трафик увеличился на 525% всего за две минуты. В государственном секторе мы называем такие скачки трафика “эффектом пресс-конференции”.

Spike-тесты и автомасштабирование

В большинстве компаний и организаций корпоративного уровня в системы встроено автомасштабирование.

Простым языком, автомасштабирование означает автоматическую регулировку вычислительной мощности в зависимости от уровня нагрузки.

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

Автомасштабирование имеет ряд ограничений:

  • Оно имеет свою скорость реакции, а значит в зависимости от уровня нагрузки может занимать слишком много времени.
  • Автомасштабирование не позволяет устранить такие распространенные узкие места, как платежные шлюзы и запросы к базам данных.
  • Если приложение не было специально создано для автомасштабирования, оно может не обладать достаточной гибкостью, необходимой при внезапных скачках трафика.

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

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

Возьмем, к примеру, упомянутый выше случай с Rakuten France. Трафик на сайте Rakuten увеличился с 500 посетителей в одну минуту до 6 000 посетителей в следующую.

Если бы компания Rakuten провела нагрузочный тест с постепенным увеличением трафика со 100 посетителей в минуту до 6 000 посетителей в минуту в течение часа, то ее системы, возможно, смогли бы автомасштабироваться и обработать его в полной мере. Тестировщики компании могли бы посмотреть на результаты этого нагрузочного теста и сказать: “Мы можем масштабироваться для обработки 6 000 посетителей в минуту, так что все будет в порядке”.

Но реальный всплеск трафика для Rakuten произошел не через час, а буквально через две минуты. Спайк-тест гораздо лучше подходит для подготовки к такой ситуации. Он показывает, могут ли их системы реагировать и масштабироваться достаточно быстро, чтобы справиться с внезапным резким наплывом пользователей.

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

Лучшие практики спайк-тестирования

Установите четкие цели и контрольные показатели

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

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

  • Время отклика: сколько времени требуется приложению для ответа на запросы.
  • Ответы на ошибки: количество запросов, которые приводят к ошибкам (например, коды ошибок 5xx).
  • Пропускная способность: количество транзакций в секунду.
  • Использование ресурсов: уровень использования процессора и памяти.

Допустим, это именно те 4 показателя, которые вы хотите отслеживать. Нужно определить цели для каждой метрики и то, как они работают вместе.

Спросите себя:

  • Сколько пользователей одновременно мы должны быть в состоянии обрабатывать?
  • Какой должна быть задержка при таком количестве пользователей?
  • Какой объем процессора и памяти нам удобно использовать?
  • Сколько транзакций в секунду мы должны обрабатывать?
  • Какое количество ошибок (если таковые имеются) допустимо?
  • Как быстро и эффективно мы сможем восстанавливаться после всплесков?

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

Важно отметить, что в самом начале работы сайта увеличение пропускной способности может быть дешевле и проще. Но по мере роста числа одновременно обслуживаемых пользователей будут расти и затраты.

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

Поймите путь пользователя

Вторым важным шагом перед проведением спайк-тестов является четкое определение того, что именно делают пользователи в вашей системе. Если ситуация, при которой все пользователи разом устремляются на ваш сайт в определенный момент, практически невозможна, то не стоит даже тратить время на спайк-тесты (лучше использовать нагрузочный тест).

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

К распространенным узким местам сайта относятся:

  • Платежные шлюзы.
  • Запросы к базам данных (вход в систему, обновление баз данных товаров).
  • Создание объектов корзины (процессы добавления в корзину или оформления заказа, службы расчета налогов, автозаполнение адресов).
  • Сторонние поставщики услуг (службы аутентификации, службы борьбы с мошенничеством),
    плагины для сайта.
  • Транзакции (обновление баз данных товаров при обработке заказов и платежей).
  • Динамический контент (рекомендательные системы, динамический поиск и фильтры).
  • Использование центрального процессора.

Британский бренд электронной коммерции LeMieux провел нагрузочное тестирование своего сайта в преддверии крупнейшей распродажи “Черная пятница”. Они точно определили, какую нагрузку сайт сможет выдержать, затем создали виртуальную комнату ожидания и установили отток из комнаты ожидания на сайт с определенной скоростью.

Но утром в день распродажи в “Черную пятницу” сайт стал заметно тормозить. Они поняли, что в своих нагрузочных тестах не учли возможности поиска и фильтрации, сосредоточившись на объеме трафика, а не на его поведении.

“Мы считали, что предыдущие проблемы были вызваны количеством людей, пользующихся сайтом. Но также важно понимать, как они взаимодействуют с сайтом и, следовательно, какой объем запросов возвращается на серверы”.

ДЖОДИ БРЭТЧЕЛЛ, АДМИНИСТРАТОР ЭЛЕКТРОННОЙ КОММЕРЦИИ И ЦИФРОВЫХ ПЛАТФОРМ, LEMIEUX

Важно, чтобы тестирование было реалистичным, основанным на потоке данных и воспроизводило реальное поведение пользователей.

Для оптимальной работы сайта необходимо, чтобы средний приток был равен среднему оттоку.

Потоковый подход к спайк-тестированию включает в себя следующее:

  • Типичную последовательность страниц (например, главная страница, страница продажи, страница товара, корзина и т.д.).
  • Предполагаемое время выполнения каждого действия (например, сколько времени требуется покупателям, чтобы перейти от страницы товара к оплате).
  • Наиболее популярные рабочие процессы ( использование большинством покупателей строки поиска или фильтрации товаров).

Такой потоковый подход становится важным и при проверке результатов. Для обеспечения точности пропускной способности можно использовать закон Литтла.

Как провести спайк-тестирование

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

Как правило, нагрузочное тестирование состоит из следующих этапов:

  1. Создание выделенной тестовой среды, идентичной производственной.
  2. Определение максимальной нагрузки, которую необходимо выдержать.
  3. Применить максимальную нагрузку к приложению.
  4. Применить минимальную нагрузку к приложению.
  5. Повторять скачки в последовательном или случайном порядке.
  6. Оценить производительность (при пиковой и минимальной нагрузке).
  7. Оптимизировать производительность и устранить узкие места.
  8. Повторяйте спайк-тесты до тех пор, пока они не будут соответствовать поставленным целям.

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

Как справиться со скачками трафика?

Общеизвестно, что с внезапными всплесками трафика трудно справиться. Если ваши спайк-тесты провалились, то, возможно, вы столкнулись с одной или несколькими из следующих проблем:

  • Можно повысить производительность, но это чрезвычайно дорого и сложно в реализации.
  • Можно повысить производительность, но необходимые изменения нецелесообразно реализовывать для разовой распродажи или акции.
  • Можно повысить производительность, но не успеете реализовать необходимые изменения к конкретной дате, когда ожидается высокий наплыв пользователей на сайт.
  • Узкие места в вашей системе связаны со сторонними поставщиками услуг (поставщики платежей, калькуляторы доставки и налогов, защита от ботов и мошенников), которые не могут увеличить пропускную способность.
  • Решение проблемы отсутствует, ваши системы просто не справляются с ожидаемым количеством пользователей.

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

Это так называемая виртуальная комната ожидания.

Она дает вам контроль над тем, что не могут другие усилия по оптимизации производительности: над трафиком.

При высокой нагрузке сайты или приложения с виртуальной комнатой ожидания перенаправляют посетителей в настраиваемую комнату ожидания с помощью HTTP-переадресации 302. Затем эти посетители возвращаются на ваш сайт или приложение в контролируемом порядке по очереди.

Если вы проводите распродажу или регистрацию, которая начинается в определенное время, вы можете создать запланированную комнату ожидания. Она будет сдерживать ранних посетителей на странице обратного отсчета, а затем рандомизировать их, как в лотерее, давая всем равные шансы. Посетители, пришедшие позже, добавляются в конец очереди по принципу “первый пришел – первый ушел”.

С помощью виртуальной комнаты ожидания можно контролировать поток трафика с точностью до минуты. Настройте отток трафика из зала ожидания на ваш сайт таким образом, чтобы он точно соответствовал возможностям, выявленным в ходе проведения спайк-тестов: сто, тысяча или десять тысяч пользователей в минуту.

А если в системе возникнут непредвиденные узкие места, вы сможете оперативно снизить поток трафика.

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

Заключение

Спайк-тестирование – это тип тестирования производительности, при котором сайт или приложение подвергается внезапному и экстремальному увеличению или уменьшению нагрузки (всплески).

  • Спайк-тестирование важно для имитации скачков трафика в тестовой среде, чтобы проверить, как они влияют на производительность, выявляют ли они узкие места или проблемы с масштабируемостью, а также насколько хорошо восстанавливается система.
  • Нагрузочное, спайк и стресс-тестирование – три распространенных типа тестов производительности. При нагрузочном тестировании ожидаемая нагрузка на систему имитирует регулярное (а иногда и экстремальное) использование. Стресс-тестирование доводит систему до предела, чтобы определить уровень нагрузки, вызывающий сбой, и возможность восстановления системы. Спайк-тестирование – это единственный тип тестирования производительности, который специально изучает, как влияют на производительность внезапные и резкие подъемы и спады трафика.
  • Скачки трафика могут быть ожидаемыми и неожиданными. В качестве примера неожиданного всплеска трафика можно привести PR-акции и вирусные маркетинговые активности. К ожидаемым скачкам относятся такие события, как выпуск продукции, продажа билетов и громкие заявления в государственном секторе.
  • Автомасштабирование помогает системе справиться с растущим уровнем трафика. Но во время особенно резких скачков оно часто не может реагировать достаточно быстро. Спайк-тестирование позволяет проверить реакцию автомасштабирования и определить, сможет ли оно справиться с ожидаемыми резкими всплесками трафика
  • Процесс спайк-тестирования включает в себя:
    1. Определение целей и контрольных показателей.
    2. Понимание процесса работы пользователя.
    3. Выбор инструментов для проведения тестов.
    4. Проведение спайк-тестирования.
    5. Использование результатов для выявления и устранения узких мест.
    6. Повторение тестов до тех пор, пока производительность не будет соответствовать поставленным целям.
  • Если спайк-тесты не дают результата, и производительность не достигает требуемого уровня, можно использовать виртуальную комнату ожидания, чтобы контролировать поток трафика и предотвратить ошибки, замедления или сбои, вызванные большим количеством пользователей на сайте.

Перевод статьи «Spike testing: Everything you need to know to safeguard your site».

1 комментарий к “Что такое спайк-тестирование”

  1. Пингбэк: Что такое тестирование ПО? Виды, методы и инструменты тестирования

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *