Каждый сталкивался с ситуацией, когда во время распродажи в каком-нибудь известном интернет-магазине был наплыв пользователей, отчего оплата товаров открывалась с перебоями или не открывалась вообще. Что является причиной этого? А всё дело в том, что сайт просто не выдерживал нагрузки, собирал запросы пользователей в очередь и от этого не выполнял своих повседневных функций.
Согласно исследованию Aberdeen Group, проведенному в 2008 году, 1-секундная задержка во времени загрузки страницы приводит к уменьшению числа просмотров страниц на 1%, снижению удовлетворенности клиентов на 16% и потере конверсий на 7%. В долларовом выражении это означает, что если сайт обычно зарабатывает 100 000 долларов в день, в этом году вы можете потерять 2,5 миллиона долларов в продажах за каждую секунду замедления сайта по сравнению с прошлым годом (или, если уж на то пошло, по сравнению с сайтом вашего конкурента). Низкая производительность веб-сайта влияет на бизнес независимо от типа транзакции или конверсии, которую вы отслеживаете. Сайт розничной торговли, измеряющий покупки в корзине, видит потерю дохода из-за меньшего количества покупок, система бронирования отелей видит снижение количества бронирований, а банк может увидеть меньше платежей по счетам.
Компании могут потерять своего потенциального клиента просто потому, что сайт их конкурента загружает страницу на 1 секунду быстрее. Поэтому так важно уделить особое внимание тестам производительности.
Тестирование производительности — это процесс тестирования программного обеспечения, используемый для проверки скорости, времени отклика, стабильности, надежности, масштабируемости и использования ресурсов программного приложения при определенной рабочей нагрузке. Основной целью тестирования производительности является выявление и устранение узких мест производительности в программном приложении.
Следует помнить, что тестирование производительности — это не функциональное тестирование, потому что это проверка того, как работает наша система. Сначала нам нужно выяснить, что такое плохая производительность на стороне клиента. Это включает в себя:
Тестирование производительности преследует не одну, а несколько целей из-за того, что многие виды тестирования похожи и даже объединяются друг с другом для решения одной задачи.
Не путайте тестирование производительности с нагрузочным тестированием, это две разные вещи. Нагрузочное тестирование — подвид тестирования производительности, собирающее показатели и определяющее производительность и время отклика программно-аппаратной системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям к этой системе (устройству). Таким образом, необходимо определить, какие подвиды тестирования производительности вообще существуют.
Стресс-тест, также известный как тест на разгон или тест емкости, — это тест, который обнаруживает, что производительность системы ограничена каким-либо узким местом. Количество виртуальных пользователей постоянно увеличивается до тех пор, пока не произойдет насыщение производительности (добавление большего количества виртуальных пользователей приводит к увеличению времени отклика, а не увеличению количества транзакций, обрабатываемых в секунду).
Стресс-тестирование позволяет оценить поведение программного продукта при повышенной интенсивности операций и установить максимальный уровень производительности решения. Он правильно выполняется, пока один из критериев не достигнет тестовой остановки. Возможно:
Часто этот вид тестирования проводится, если заказчик предвидит резкое увеличение нагрузки на систему. Например, для электронной коммерции это могут быть дни распродаж.
Тест с фиксированной нагрузкой — это тест, который выполняется с фиксированным количеством виртуальных пользователей в течение определенного периода времени для измерения времени отклика при различных условиях нагрузки, определяемых тестом емкости. Этот тест измеряет, насколько быстро работает система.
Тест на стабильность, также известный как тест на долговечность, тест на выдержку — это очень длительный тест с высокой нагрузкой для проверки стабильности системы. Тест на долговечность показывает, насколько стабильна система.
Минимальная продолжительность теста 12 часов, но лучше до недели и больше. Продолжительность зависит от уровня нагрузки и требований к тестируемому приложению.
Чем меньше продолжительность теста, тем больший уровень нагрузки требуется. Чем больше продолжительность теста, тем меньшая нагрузка должна быть установлена.
Вообще, видов таких тестов много, они похожи друг на друга и большинство из них преследуют одну и ту же цель. И какие же метрики нужно собирать при тестировании производительности?
Необходимо постоянно анализировать свой программный продукт, заранее продумывать, что может произойти, какие сценарии поведения характерны для пользователей. Заказчикам необходимо учитывать этот момент, и думать «Что будет, если мы не будем проводить нагрузочные тесты, а конечный пользователь столкнется с последствиями этого решения?»
Тестирование производительности не выявляет багов, но помогает выяснить, на что способна система. Таким образом вы будете уверены, что сайт или приложение не упадут, когда пользователей станет больше или база данных разрастется.
Автор статьи: Елизавета Буглак, QA.