РУКОВОДСТВО ПО СТРЕСС-ТЕСТИРОВАНИЮ ДЛЯ НАЧИНАЮЩИХ

РУКОВОДСТВО ПО СТРЕСС-ТЕСТИРОВАНИЮ ДЛЯ НАЧИНАЮЩИХ

Вы хотите узнать, что такое стресс-тестирование и как его проводить?

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

В этом руководстве рассматриваются некоторые основные этапы выполнения стресс-тестирования вашего приложения, а также следующее.

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

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

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

Давайте рассмотрим приложение, которое может одновременно обрабатывать только 100 пользователей и 100 ГБ данных. При нагрузочном тестировании мы будем использовать 150 ГБ при 120 пользователях в приложении одновременно и анализировать поведение.

Мы можем найти ответы на следующие вопросы:

  • В какой именно момент происходит сбой приложения?
  • Происходит ли сбой приложения?
  • Сколько времени требуется для восстановления?
  • Есть ли проблемы с памятью/безопасностью?

Зачем мы проводим стресс-тестирование

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

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

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

Типы стресс-тестирования

Стресс-тестирование охватывает различные аспекты приложения с помощью 5 различных типов стресс-тестирования.

  1. Распределенное стресс-тестирование
  2. Стресс-тестирование приложений
  3. Транзакционное стресс-тестирование
  4. Системное стресс-тестирование
  5. Исследовательское стресс-тестирование

#1. Распределенное стресс-тестирование

В этом типе стресс-тестирования мы тестируем распределенную систему с сервером, подключенным к нескольким клиентским системам.

Мы применяем стресс ко всем клиентским системам и отслеживаем состояние каждого клиента.

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

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

#2. Стресс-тестирование приложений

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

#3. Транзакционное стресс-тестирование

В этом типе стресс-тестирования вы применяете стресс к одной или нескольким транзакциям между двумя или более приложениями.

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

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

#4. Системное стресс-тестирование

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

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

№5. Исследовательское стресс-тестирование

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

Некоторые Примеры сценария исследовательского стресс-тестирования:

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

Цели стресс-тестирования

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

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

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

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

Стресс-тестирование мобильных приложений

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

Следуйте этим пунктам при стресс-тестировании мобильных устройств:

  • Попробуйте стресс-тестирование Monkey: проверьте систему при постоянном изменении ориентации устройства, частых сбоях в работе сети, энергичной прокрутке вверх и вниз и т. д.
  • Используйте приложение одновременно с несколькими другими приложениями, работающими в фоновом режиме, такими как музыка, загрузки, обновления приложений и т. д.
  • Сосредоточьтесь на страницах интерфейса, которые содержат большое количество изображений, видео или других данных, требующих страниц и стресс-тестов.
  • Определите наиболее часто используемые функции приложения и проведите их стресс-тест.
  • Не используйте эмуляторы или симуляторы, они не дают реальных результатов.
  • Избегайте тестирования в сетях Wi-Fi, вместо этого используйте мобильные сети.
  • При тестировании используйте телефоны среднего и низкого класса.
  • Протестируйте приложение с помощью бета-тестирования реальных пользователей.

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

РУКОВОДСТВО ПО СТРЕСС-ТЕСТИРОВАНИЮ ДЛЯ НАЧИНАЮЩИХ

Шаг 1. Планирование стресс-теста

Соберите необходимые данные, проанализируйте систему и определите цель стресс-теста.

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

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

Метрики: В зависимости от платформы, на которой работает приложение, метрики меняются. Поэтому решите, какие показатели применимы, а также их допустимый предел.

Шаг 2. Создайте сценарии автоматизации

Для автоматизации тестирования напишите сценарии и сгенерируйте тестовые данные для каждого сценария.

Шаг 3. Выполнение сценариев

Теперь запустите эти сценарии и сохраните соответствующие результаты.

Шаг 4. Анализ результатов

Изучение результатов тестирования и выявление дефектов в системе.

Шаг 5. Настройка и оптимизация

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

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

НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ

СТРЕСС-ТЕСТИРОВАНИЕ

Это подмножество тестирования производительности< тд класс = столбец-2>Это подмножество тестирования производительности

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

Целью стресс-тестирования является определение того, как система ведет себя при экстремальных нагрузках и как она восстанавливается после сбоя

Ограничение нагрузки — это пороговое значение перерыва

Ограничение нагрузки выше порогового значения перерыва

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

Атрибуты, которые проверяются при стресс-тестирование — это время отклика стабильности, пропускная способность и т. д.,

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

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

Это помогает нам понять, как система ведет себя при ожидаемой нагрузке.

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

Здесь тестовыми данными будет огромное количество пользователей .

Здесь тестовыми данными будет огромное количество пользователей и огромный объем данных.

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

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

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

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

Метрики для стресс-тестирования

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

Измерение масштабируемости и производительности. Время ответа. Он измеряет время, необходимое для получения ответа после отправки запроса во время стресс-тестирования.< p>Страниц в секунду: измеряет, сколько страниц запрашивается/читается в секунду.

Пропускная способность: Он измеряет, сколько данных отправляется/получается во время стресс-теста.

Раунды: он измеряет количество запланированных тестовых сценариев по сравнению с тем, сколько раз клиент выполняет их в стресс-тестировании.< p>Ответ приложения:

Время обращения: это среднее время восстановления изображения или страницы, когда приложение находится в стадии тестирования.

Время до первого байта:Это время, необходимое для возврата первого байта данных или информации во время стресс-теста.

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

Ошибки:

Неудачные подключения: измеряет количество подключений, отклоненных клиентской системой во время стресс-теста.

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

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

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

Способы улучшения стратегии стресс-тестирования

  1. Определите правильные сценарии: сосредоточьтесь на наиболее часто используемых пользователями рабочих процессах. Пример: процесс оформления заказа для электронной коммерции.
  2. Учитывайте скорость сети:Большинство пользователей подключаются через мобильные сети, поэтому при тестировании следует учитывать среднюю скорость сети пользователя.
  3. Протестируйте разные типы пользователей: приложение с разными ролями пользователей, такими как клиент, сотрудник службы доставки, поставщик , администратор и т. д. Рабочие процессы для каждой роли разные, одна проблема в одной из ролей пользователя может повлиять на другую.
  4. Сделайте это частью своего рабочего процесса:Перед ожидаемым событием, таким как праздничная распродажа, кампания, запуск продукта и т. д., разработчики планируют стресс-тестирование. Лучший способ интегрировать его в свой процесс — включить его в процессы непрерывной интеграции и развертывания.
  5. Создайте план оценки результатов: мы должны оценить результаты тестирования и сообщить о проблеме разработчики. Для обеспечения плавного процесса должен быть разработан четко определенный план быстрого устранения проблемы до того, как приложение будет запланировано для развертывания.

Примеры тестов

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

Некоторые примеры тестовых случаев:

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

Заключение

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

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

TAG: qa

От QA genius

Adblock
detector