Учебное пособие по тестированию производительности

испытание нагрузкой

Что такое тестирование производительности?

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

Целью тестирования производительности является проверка работоспособности программы.

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

Зачем проводить тестирование производительности?

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

Тестирование производительности проводится для предоставления заинтересованным сторонам информации об их приложении с точки зрения скорости, стабильности и масштабируемости. Что еще более важно, тестирование производительности выявляет, что необходимо улучшить, прежде чем продукт выйдет на рынок. Без тестирования производительности программное обеспечение, скорее всего, будет страдать от таких проблем, как: медленная работа при одновременном использовании несколькими пользователями, несогласованность в разных операционных системах и плохое удобство использования.

Тестирование производительности

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

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

По данным Dunn & Bradstreet, 59% компаний из списка Fortune 500 испытывают примерно 1.6 часа простоя каждую неделю. Учитывая, что средняя компания из списка Fortune 500 с минимум 10,000 56 сотрудников платит 896,000 долларов в час, трудовая часть затрат на простой для такой организации составит 46 XNUMX долларов в неделю, что составит более XNUMX миллионов долларов в год.

Только 5-минутный простой 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: Проверьте время отклика приложения в условиях низкой, нормальной, средней и большой нагрузки.

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

Инструменты тестирования производительности

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

  • HP LoadRunner сегодня является самым популярным инструментом тестирования производительности на рынке. Этот инструмент способен моделировать сотни тысяч пользователей, подвергая приложения реальным нагрузкам, чтобы определить их поведение при ожидаемых нагрузках. Лоадраннер имеет генератор виртуальных пользователей, который имитирует действия живых пользователей-людей.
  • Джметр – один из ведущих инструментов, используемых для нагрузочного тестирования веб-серверов и серверов приложений.

FAQ

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

Например, Microsoft Калькулятор не основан на клиент-сервере и не работает с несколькими пользователями; следовательно, он не является кандидатом на тестирование производительности.

Тест производительности

Важно понимать разницу между тестированием производительности и проектированием производительности. Понимание представлено ниже:

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

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

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

Заключение

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