Тестирование на выносливость

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

Это нефункциональное тестирование.

При тестировании на выносливость проверка производительности проводится в течение более длительного периода времени (например, 12 часов, 72 часа или более) по сравнению с другими типами тестирования, такими как нагрузочное или стресс-тестирование.

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

Содержание

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Пример тестирования на выносливость

Для начала давайте разберемся с самим понятием «утечка памяти». Простое определение утечки памяти – это «неспособность освободить память объектами, которые больше не используются». Причина этой неспособности – недостатки кода, написанного программистом.

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

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

Устранение утечек памяти полностью зависит от используемого языка программирования.

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

Процесс тестирования на выносливость

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

1. Анализ бизнес-требований и системных требований

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

2. Планирование тестирования

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

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

3. Разработка тестовых сценариев и тест-кейсов

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

4. Создание тестовой среды

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

5. Выполнение тестов

Когда среда готова, выполняются тестовые сценарии. Если на этом этапе выявляются какие-либо проблемы, они записываются. Разработчики исправляют замеченные проблемы, после чего проводится повторное тестирование.

6. Закрытие

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

Преимущества тестирования на выносливость

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

Недостатки тестирования на выносливость

  • Это трудоемкий процесс. Он может продолжаться от 12 часов до нескольких дней.
  • Необходимо провести соответствующее исследование на предмет того, требуется ли тестирование на выносливость. Например, для любого сайта, который не генерирует много трафика и имеет поддержку, этот тип тестирования может быть не приоритетным.
  • Это дорогостоящий процесс, поскольку он требует непрерывной работы системы в течение всего времени тестирования. Это требует наличия соответствующей инфраструктуры.
  • Важно, чтобы среда тестирования на выносливость была отделена от других тестовых сред, поскольку проведение этого вида тестирования может привести к сбоям в работе приложений или потере данных.
  • Тестирование на выносливость требует правильного планирования, особенно когда необходимо определить количество часов, в течение которых должны проводиться тесты.
  • Ручное тестирование на выносливость невозможно, поэтому для его проведения придется использовать средства автоматизации. Команда тестировщиков должна владеть этими инструментами.

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

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

  • JMeter. Apache JMeter – это инструмент тестирования производительности, написанный на Java. Это платформонезависимое программное обеспечение с открытым исходным кодом. Поддерживает интеграцию с Selenium, а также может использоваться в качестве инструмента для модульного тестирования.
  • LoadRunner. Инструмент тестирования производительности, который может использоваться также для модульного и интеграционного тестирования. В том, что касается тестирования производительности, это лидер рынка. LoadRunner также поддерживает скрипты из JMeter и Selenium через объявление библиотеки интерфейса. Он не бесплатный, но может генерировать определенное количество пользователей в пробной версии.
  • Appvance. Инструмент автоматизации, используемый, в частности, для функционального тестирования, тестирования производительности и безопасности. Это инструмент, основанный на искусственном интеллекте, который предоставляет виртуальную пользовательскую панель и аналитику в реальном времени.
  • OpenSTA. Это инструмент с открытым исходным кодом, который используется для проведения HTTP и HTTPS нагрузочных тестов по подготовленным сценариям с измерением производительности. OpenSTA расшифровывается как Open System Testing Architecture. Инструмент написан на C++ компанией CYRANO и поддерживает только операционные системы Microsoft Windows.
  • WebLOAD Professional. Еще один инструмент для тестирования производительности, который имеет различные ценовые планы и может использоваться бесплатно, но при этом генерировать ограниченное количество пользователей. Он также поддерживает Selenium и Perfecto Mobile.

Заключение

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

Перевод статьи «Endurance Testing | Soak Testing».

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

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