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

Что такое тестирование производительности?
Тестирование производительности — это процесс тестирования программного обеспечения, используемый для проверки скорости, времени отклика, стабильности, надежности, масштабируемости и использования ресурсов программного приложения при определенной рабочей нагрузке. Основная цель тестирования производительности — выявить и устранить узкие места в производительности программного приложения. Это подмножество проектирования производительности, также известное как «Тестирование производительности».
Основная задача тестирования производительности — проверка следующих характеристик программного обеспечения:
- Скорость – Определяет, быстро ли приложение отвечает
- Масштабируемость – Определяет максимальную пользовательскую нагрузку, которую может обработать программное приложение.
- Стабильность – Определяет, стабильно ли приложение при различных нагрузках
Компания PFLB специализируется на высокоточном тестировании производительности, помогая системам оставаться стабильными при непредсказуемых нагрузках. Ее услуги включают нагрузочное тестирование, тестирование пиковых нагрузок и измерение задержки, с особым акцентом на выявление снижения производительности до того, как это повлияет на конечных пользователей.
Почему важно тестирование производительности?
Функциональные возможности, поддерживаемые программной системой, — это не единственное, что имеет значение. Производительность программного приложения, такая как время отклика, надежность, использование ресурсов и масштабируемость, также важна. Цель тестирования производительности — не поиск ошибок, а устранение узких мест в производительности.
Тестирование производительности проводится для предоставления заинтересованным сторонам информации о скорости, стабильности и масштабируемости их приложения. Что еще более важно, тестирование производительности выявляет, что необходимо улучшить до выхода продукта на рынок. Без тестирования производительности программное обеспечение, скорее всего, будет страдать от таких проблем, как медленная работа при одновременном использовании несколькими пользователями, несоответствия в разных операционных системах и низкая удобность использования.
Тестирование производительности определяет, соответствует ли программное обеспечение требованиям к скорости, масштабируемости и стабильности при ожидаемых нагрузках. Приложения, выпущенные на рынок с низкими показателями производительности из-за отсутствия или недостаточного тестирования, скорее всего, приобретут плохую репутацию и не достигнут ожидаемых показателей продаж.
Таким образом, критически важные приложения такие как программы космических запусков или спасательное медицинское оборудование, должны быть проверены на производительность, чтобы гарантировать, что они будут работать в течение длительного периода без отклонений.
По данным Dunn & Bradstreet, 59% компаний из списка Fortune 500 испытывают примерно 1.6 часа простоя каждую неделю. Учитывая, что средняя компания из списка Fortune 500 с минимум 10,000 56 сотрудников платит 896,000 долларов в час, трудовая часть затрат на простой для такой организации составит 46 XNUMX долларов в неделю, что составит более XNUMX миллионов долларов в год.
Только 5-минутный простой of GoogleПо оценкам, закрытие сайта .com (19 августа 13 г.) обойдется поисковому гиганту примерно в сумму... Курьерская доставка по Москве — бесплатно при заказе от 545,000 XNUMX рублей. Курьерская доставка по Москве — XNUMX рублей в пределах МКАД. Курьерская доставка до XNUMX км за пределами МКАД — XNUMX рублей. Доставка по России осуществляется курьерской службой СДЕК. Стоимость рассчитывается индивидуально, согласно тарифам транспортной компании, после оформления заказа. Международная доставка — стоимость рассчитывается индивидуально в зависимости от страны назначения.
По оценкам, компании понесли убытки в размере, эквивалентном... 1100 XNUMX $ в секунду из-за недавнего Amazon Сбой веб-службы.
Следовательно, тестирование производительности важно. Чтобы помочь вам в этом процессе, ознакомьтесь с этим списком инструменты тестирования производительности.
Типы тестирования производительности
При тестировании программного обеспечения используются шесть основных типов тестирования производительности, которые описаны ниже.
- Нагрузочное тестирование – проверяет способность приложения работать при ожидаемых пользовательских нагрузках. Цель состоит в том, чтобы выявить узкие места в производительности до того, как программное приложение будет запущено в эксплуатацию.
- Стресс-тестирование – включает в себя тестирование приложения в условиях экстремальных рабочих нагрузок, чтобы увидеть, как оно справляется с высоким трафиком или обработкой данных. Цель состоит в том, чтобы определить критический момент приложения.
- Испытание на выносливость – Это делается для того, чтобы убедиться, что программное обеспечение сможет выдерживать ожидаемую нагрузку в течение длительного периода времени. Это помогает выявлять такие проблемы, как утечки памяти и истощение ресурсов, которые проявляются только во время длительной работы.
- Спайк-тестирование – Тестирует реакцию программного обеспечения на внезапные резкие скачки нагрузки, создаваемые пользователями. В отличие от стресс-тестирования, тестирование на скачки нагрузки фокусируется именно на том, как система обрабатывает и восстанавливается после резких, кратковременных всплесков трафика.
- Объемное тестирование – Это включает в себя заполнение базы данных большим объемом данных и мониторинг общего поведения программной системы. Цель состоит в проверке производительности программного приложения при различных объемах данных в базе данных.
- Тестирование масштабируемости – Определяет эффективность программного приложения в плане масштабирования для поддержки увеличения пользовательской нагрузки. Это помогает планировать увеличение мощности вашей программной системы.
Распространенные проблемы с производительностью
Большинство проблем с производительностью связаны со скоростью, временем отклика, временем загрузки и плохой масштабируемостью. Скорость часто является одним из важнейших атрибутов приложения. Медленно работающее приложение потеряет потенциальных пользователей. Тестирование производительности гарантирует, что приложение работает достаточно быстро, чтобы удерживать внимание и интерес пользователя. Ниже перечислены распространенные проблемы с производительностью, где скорость является повторяющимся фактором:
- Длительное время загрузки – Время загрузки — это обычно время, необходимое для первоначального запуска приложения. Как правило, его следует свести к минимуму. Хотя некоторые приложения невозможно загрузить менее чем за минуту, время загрузки следует по возможности сократить до нескольких секунд.
- Плохое время отклика – Время отклика — это время, прошедшее с момента ввода пользователем данных в приложение до момента выдачи приложением ответа на эти данные. Как правило, оно должно быть очень быстрым. Если пользователю приходится ждать слишком долго, он теряет интерес.
- Плохая масштабируемость – Программный продукт страдает от плохой масштабируемости, когда он не может справиться с ожидаемым количеством пользователей или когда он не охватывает достаточно широкий круг пользователей. испытание нагрузкой необходимо сделать, чтобы быть уверенным, что приложение сможет обработать ожидаемое количество пользователей.
- Узкое место – Узкие места — это препятствия в системе, которые ухудшают общую производительность системы. Узкое место возникает, когда ошибки в коде или проблемы с оборудованием приводят к снижению пропускной способности при определенных нагрузках. Часто причиной узкого места является один неисправный участок кода. Ключ к решению проблемы узкого места — найти участок кода, вызывающий замедление, и попытаться исправить его именно там. Как правило, узкое место устраняется либо путем исправления плохо работающих процессов, либо путем добавления дополнительного оборудования. распространенные узкие места производительности составляют:
- Использование ЦП
- Использование памяти
- Использование сети
- OperaСистемные ограничения
- Использование диска
Как проводить тестирование производительности
Методика, принятая для тестирования производительности, может сильно различаться, но цель тестов производительности остается той же. Это может помочь продемонстрировать, что ваша программная система соответствует определенным заранее определенным критериям производительности. Или это может помочь сравнить производительность двух программных систем. Это также может помочь выявить части вашей программной системы, которые снижают ее производительность.
Ниже описан общий процесс проведения тестирования производительности.

Шаг 1) Определите свою среду тестирования
Изучите свою физическую тестовую среду, производственную среду и доступные инструменты тестирования. Прежде чем начать тестирование, разберитесь в деталях аппаратных, программных и сетевых конфигураций, используемых во время тестирования. Это поможет тестировщикам создавать более эффективные тесты. Это также поможет выявить возможные проблемы, с которыми тестировщики могут столкнуться в процессе тестирования производительности.
Шаг 2) Определите критерии приемлемости производительности
Это включает в себя цели и ограничения по пропускной способности, времени отклика и распределению ресурсов. Также необходимо определить критерии успеха проекта, выходящие за рамки этих целей и ограничений. Тестировщики должны иметь возможность устанавливать критерии и цели производительности, поскольку часто спецификации проекта не содержат достаточно широкого спектра показателей производительности. Иногда их может и не быть вовсе. По возможности, поиск аналогичного приложения для сравнения — хороший способ установить цели производительности.
Шаг 3) Планирование и разработка тестов производительности
Определите, как, вероятно, будет различаться использование продукта среди конечных пользователей, и выделите ключевые сценарии для тестирования всех возможных вариантов использования. Необходимо смоделировать действия различных конечных пользователей, спланировать данные для тестирования производительности и определить, какие метрики будут собираться.
Шаг 4) Настройка тестовой среды
Подготовьте тестовую среду перед началом тестирования. Также подготовьте инструменты и другие ресурсы. Максимально точно смоделируйте производственную среду, чтобы результаты тестирования были реалистичными и пригодными для практического применения.
Шаг 5) Реализуйте дизайн теста
Создайте тесты производительности в соответствии с вашим дизайном тестирования.
Шаг 6) Запустите тесты
Выполнять и контролировать тесты.
Шаг 7) Анализ, настройка и повторное тестирование
Обобщите, проанализируйте и поделитесь результатами тестирования. Затем выполните тонкую настройку и повторное тестирование, чтобы увидеть, есть ли улучшение или ухудшение производительности. Поскольку улучшения, как правило, становятся менее значительными с каждым повторным тестированием, остановитесь, когда узкое место будет вызвано процессором. В этом случае, возможно, придется рассмотреть вариант увеличения мощности процессора.
Метрики тестирования производительности: отслеживаемые параметры
Основные параметры, отслеживаемые во время тестирования производительности, включают в себя:
- Использование процессора – Время, которое процессор тратит на выполнение не простаивающих потоков.
- Использование памяти – Объем физической памяти, доступной процессам на компьютере.
- Время диска – Время, в течение которого диск занят выполнением запроса на чтение или запись.
- Пропускная способность - показывает количество бит в секунду, используемых сетевым интерфейсом.
- Частные байты – Количество байтов, выделенных процессом, которые не могут быть совместно использованы другими процессами. Эти данные используются для измерения утечек и использования памяти.
- Закрепленная память – объем используемой виртуальной памяти.
- Страниц памяти/секунду – Количество страниц, записанных на диск или считанных с него для устранения аппаратных ошибок страничного доступа. Аппаратные ошибки страничного доступа возникают, когда код, не входящий в текущий рабочий набор, вызывается из другого места и извлекается с диска.
- Ошибок страниц/секунду – Общая скорость обработки страниц ошибок процессором. Это происходит, когда процессу требуется код извне его рабочего набора.
- Прерывания процессора в секунду – Среднее количество аппаратных прерываний, которые процессор получает и обрабатывает каждую секунду.
- Длина очереди диска – Среднее количество запросов на чтение и запись, поставленных в очередь для выбранного диска за определенный интервал времени.
- Длина очереди вывода сети – Длина очереди выходных пакетов в пакетах. Если она превышает два, это означает задержку, и необходимо устранить эффект «узкого места».
- Всего сетевых байт в секунду – Скорость передачи и приема байтов через интерфейс, включая символы кадрирования.
- Время отклика - Время от момента отправки пользователем запроса до получения первого символа ответа.
- Пропускная способность – Скорость, с которой компьютер или сеть получают запросы в секунду.
- Объем пула соединений – количество пользовательских запросов, которые удовлетворяются соединениями в пуле. Чем больше запросов будет удовлетворено соединениями в пуле, тем выше будет производительность.
- Максимальное количество активных сессий – максимальное количество сеансов, которые могут быть активны одновременно.
- Коэффициент попадания – это связано с количеством SQL операторы, которые обрабатываются кэшированными данными вместо дорогостоящих операций ввода-вывода. Это хорошее начало для решения узких мест.
- Ударов в секунду – Количество обращений к веб-серверу в течение каждой секунды нагрузочного тестирования.
- Сегмент отката – объем данных, которые можно откатить в любой момент времени.
- Блокировки базы данных – блокировку таблиц и баз данных необходимо отслеживать и тщательно настраивать.
- Топ ждет – отслеживается для определения того, какое время ожидания можно сократить при обработке данных, извлекаемых из памяти, с учетом скорости их загрузки.
- Количество потоков – Состояние работоспособности приложения можно оценить по количеству запущенных и активных потоков.
- Вывоз мусора - Это включает в себя возврат неиспользуемой памяти обратно в систему. Для обеспечения эффективности сборки мусора необходимо контролировать её работу.
Пример тестовых случаев тестирования производительности
Ниже приведены примеры тестовых случаев для оценки производительности:
- Тестовый пример 01: Убедитесь, что время ответа не превышает 4 секунд при одновременном доступе к сайту 1000 пользователей.
- Тестовый пример 02: Убедитесь, что время отклика приложения под нагрузкой находится в допустимом диапазоне при медленном сетевом соединении.
- Тестовый пример 03: Проверьте максимальное количество пользователей, которое может обслужить приложение, прежде чем оно выйдет из строя.
- Тестовый пример 04: Проверьте время выполнения базы данных, когда одновременно читаются/записываются 500 записей.
- Тестовый пример 05: Проверьте использование процессора и памяти приложением и сервером базы данных в условиях пиковой нагрузки.
- Тестовый пример 06: Проверьте время отклика приложения в условиях низкой, нормальной, средней и большой нагрузки.
Во время фактического выполнения теста производительности расплывчатые термины, такие как допустимый диапазон, большая нагрузка и т. д., заменяются конкретными цифрами. Инженеры по производительности устанавливают эти цифры в соответствии с бизнес-требованиями и технической средой приложения.
Лучшие практики тестирования производительности
Следование общепринятым передовым практикам гарантирует получение надежных результатов при тестировании производительности. Эти рекомендации помогают командам избегать распространенных ошибок.
- Отражайте производственную среду – Настройте тестовую среду так, чтобы она максимально точно имитировала производственную среду. Различия в версиях оборудования или программного обеспечения могут привести к искаженным результатам.
- Разрабатывайте реалистичные сценарии тестирования – Создайте тестовые сценарии, имитирующие реальное поведение пользователей, включая время ожидания и сочетание одновременно выполняемых транзакций.
- Используйте метрики, основанные на процентилях. Полагайтесь на время отклика в 90-м и 95-м процентилях, а не только на средние значения. Процентили выявляют задержки в хвостовой части спектра, которые могут быть скрыты средними значениями.
- Проводите тестирование на ранних этапах и постоянно – Интегрируйте тестирование производительности в конвейер CI/CD, а не рассматривайте его как заключительный этап.
- Документирование и исходные результаты – Записывайте результаты каждого тестового запуска. Сравнение новых результатов с базовыми показателями позволяет легко выявлять регрессии в разных версиях.
Как ИИ меняет тестирование производительности
Искусственный интеллект меняет мир.ping Тестирование производительности осуществляется путем автоматизации сложных задач анализа и обеспечения возможностей прогнозирования. Инструменты на основе ИИ анализируют исторические данные, выявляют закономерности и предоставляют практические рекомендации без необходимости вмешательства человека на каждом этапе.
- Прогнозирующее обнаружение аномалий – Алгоритмы искусственного интеллекта анализируют показатели производительности в режиме реального времени во время нагрузочных тестов и выявляют отклонения до того, как они перерастут в критические сбои.
- Автоматизированный анализ первопричин – Инструменты на основе искусственного интеллекта сопоставляют данные в распределенных системах, чтобы точно определить компоненты, вызывающие снижение производительности.
- Интеллектуальная оптимизация тестирования – Модели машинного обучения выявляют избыточные сценарии тестирования и предлагают оптимальные конфигурации, сокращая время выполнения при сохранении охвата тестирования.
- Скрипты самовосстановления для тестирования – Искусственный интеллект адаптирует тестовые сценарии при изменении интерфейсов приложений, снижая затраты на обслуживание наборов тестов производительности.
Инструменты тестирования производительности
На рынке представлен широкий выбор инструментов для тестирования производительности. Выбор инструмента для тестирования будет зависеть от многих факторов, таких как поддерживаемые типы протоколов, стоимость лицензии, требования к оборудованию и поддержка платформы. Ниже приведен список популярных инструментов тестирования.
- HP LoadRunner – Это один из самых популярных инструментов для тестирования производительности на рынке. Он способен имитировать сотни тысяч пользователей, подвергая приложения реальным нагрузкам, чтобы определить их поведение при ожидаемых нагрузках. LoadRunner имеет генератор виртуальных пользователей, который имитирует действия живых пользователей-людей.
- JMeter – Один из ведущих инструментов с открытым исходным кодом, используемый для нагрузочного тестирования веб-серверов и серверов приложений. Он поддерживает множество протоколов и предоставляет широкие возможности для создания отчетов.


