Вы хотите узнать, что такое стресс-тестирование и как его проводить?
Стресс-тестирование — важная часть процесса разработки программного обеспечения. Это помогает определить, как программа будет вести себя в условиях стресса, и может помочь разработчикам определить, какие изменения необходимы для повышения стабильности.
В этом руководстве рассматриваются некоторые основные этапы выполнения стресс-тестирования вашего приложения, а также следующее.
Что такое стресс-тестирование?
Стресс-тестирование — это тип тестирование производительности, которое вводит систему в экстремальные условия, т. е. обеспечивает перегрузку системы, чтобы проверить, может ли она выдержать такую нагрузку. Он использует огромный объем данных и большое количество пользователей сверх ожидаемой емкости.
Основная цель стресс-тестирования — измерить способность программного обеспечения обрабатывать ошибки. Большинство программ спроектированы так, чтобы идеально работать в идеальной ситуации, мы не узнаем предела безопасного использования, если не приложим усилий. Стресс-тестирование помогает нам определить точную точку сбоя, когда программное обеспечение превышает свой предел.
Давайте рассмотрим приложение, которое может одновременно обрабатывать только 100 пользователей и 100 ГБ данных. При нагрузочном тестировании мы будем использовать 150 ГБ при 120 пользователях в приложении одновременно и анализировать поведение.
Мы можем найти ответы на следующие вопросы:
- В какой именно момент происходит сбой приложения?
- Происходит ли сбой приложения?
- Сколько времени требуется для восстановления?
- Есть ли проблемы с памятью/безопасностью?
Зачем мы проводим стресс-тестирование
Давайте рассмотрим реальный сценарий, когда веб-сайту или приложению может потребоваться стресс-тестирование перед запуском.
Когда на веб-сайте электронной коммерции, таком как Amazon или Flipkart, объявляется распродажа, объявляется о распродаже, в настоящее время широко распространено такое количество пользователей, которые будут одновременно входить в систему, искать продукты, совершать платежи и т. д. . Если система выйдет из строя из-за перегрузки в таких ситуациях, эти сайты потеряют деньги и репутацию.
- Стресс-тестирование проверяет устойчивость и надежность программного обеспечения.
- Стресс-тестирование помогает нам подготовиться и предотвратить системные сбои.
- Стресс-тестирование выявляет уязвимости системы безопасности, которые могут проявиться в условиях пиковой нагрузки.
- Стресс-тестирование позволяет выяснить возможности восстановления и обработки ошибок программного обеспечения.
- Стресс-тестирование выявляет проблемы с утечкой памяти и показывает, как работает механизм сохранения данных во время сбоя.
- Стресс-тестирование помогает нам определить, попадает ли система в аварийный режим. взаимная зависимость/тупиковая ситуация, любые проблемы, связанные с приоритетами запросов.
Типы стресс-тестирования
Стресс-тестирование охватывает различные аспекты приложения с помощью 5 различных типов стресс-тестирования.
- Распределенное стресс-тестирование
- Стресс-тестирование приложений
- Транзакционное стресс-тестирование
- Системное стресс-тестирование
- Исследовательское стресс-тестирование
#1. Распределенное стресс-тестирование
В этом типе стресс-тестирования мы тестируем распределенную систему с сервером, подключенным к нескольким клиентским системам.
Мы применяем стресс ко всем клиентским системам и отслеживаем состояние каждого клиента.
Допустим, один или несколько клиентов в распределенных системах не могут связаться с сервером.
Начнется исследование этой клиентской системы, отладка возможных проблем, которые необходимо устранить.
#2. Стресс-тестирование приложений
В этом типе стресс-тестирования вы должны сосредоточиться на критических проблемах с производительностью, выявить проблемы, связанные с данными, такие как узкие места, блокировка данных, блокировки и т. д., когда приложение находится под нагрузкой. стресс.
#3. Транзакционное стресс-тестирование
В этом типе стресс-тестирования вы применяете стресс к одной или нескольким транзакциям между двумя или более приложениями.
Транзакционный стресс-тест работает на транзакционном уровне с объемом нагрузки, который превышает ожидаемую мощность, с которой может справиться система.
Поскольку он имеет дело с межкомпонентными взаимодействиями, он полезен для настройки, оптимизации и поиска условий ошибки на уровень конкретного компонента.
#4. Системное стресс-тестирование
В этом типе стресс-тестирования мы применяем стресс или экстремальную нагрузку к нескольким приложениям, работающим в одной системе.
Целью систематического стресс-тестирования является выявление проблемы в условиях, когда различные приложения блокируют друг друга и конкурируют за системные ресурсы, такие как память, процессор, циклы, дисковое пространство и пропускная способность сети.
№5. Исследовательское стресс-тестирование
В этом типе стресс-тестирования мы подвергаем систему, приложение или любые компоненты программного обеспечения экстремальным условиям, которые вряд ли произойдут.
Некоторые Примеры сценария исследовательского стресс-тестирования:
- Все пользователи одновременно входят в приложение.
- Отключение базы данных, что приводит к невозможности доступа к данным из системы.
- Ввод большого объема входных данных в базу данных за один раз.
Цели стресс-тестирования
- Определить надежность и стабильность программного обеспечения.
- Оптимизировать систему для предотвращения сбоев.
- Выявить проблемы, возникающие только при высокой нагрузке на систему.
- Чтобы проверить, отображаются ли сообщения об ошибках, когда система подвергается большому трафику.
- Для анализа сообщений о сбоях, чтобы понять поведение программного обеспечения после сбоя
- Чтобы гарантировать, что целостность данных, безопасность и т. д. программного обеспечения не нарушены во время сбоев.
- Чтобы проверить, восстанавливается ли приложение после сбоя без вмешательства.
- li>Для правильного планирования масштабируемости и требований к ресурсам.
Стратегия стресс-тестирования
Стратегия тестирования, которой мы должны придерживаться при стресс-тестировании, включает следующие процессы.
- Создайте тестовую среду:Определите необходимое оборудование, программное обеспечение, инструменты и конфигурацию сети для разработки тестовой среды.
- Установите критерии приемлемости производительности: Определите критерии успеха стресс-теста, категории и определите используемые показатели. для измерения производительности программного обеспечения.
- Планирование и разработка стресс-теста: определение тестовых сценариев путем создания, планирования и разработки стресс-тестов для программного обеспечения.
- Настройте тестовую среду. Тестовая среда настроена с необходимыми инструментами и ресурсами, необходимыми для выполнения плана. промышленности для разработки, проектирования и внедрения стресс-тестов.
- Выполнение стресс-тестов: Выполнение стресс-тестирования и мониторинг программного обеспечения путем сбора и проверки данных и результатов тестов.
- Анализ результаты:Прежде чем поделиться результатами с остальными членами команды, убедитесь, что показатели находятся в допустимых пределах, нет нарушений порогового значения и во время тестирования собрано достаточно данных.
Стресс-тестирование мобильных приложений
С ростом популярности смартфонов пользователи склоняются к мобильным приложениям, а не к браузерам. Таким образом, нативные мобильные приложения должны пройти стресс-тестирование.
Следуйте этим пунктам при стресс-тестировании мобильных устройств:
- Попробуйте стресс-тестирование Monkey: проверьте систему при постоянном изменении ориентации устройства, частых сбоях в работе сети, энергичной прокрутке вверх и вниз и т. д.
- Используйте приложение одновременно с несколькими другими приложениями, работающими в фоновом режиме, такими как музыка, загрузки, обновления приложений и т. д.
- Сосредоточьтесь на страницах интерфейса, которые содержат большое количество изображений, видео или других данных, требующих страниц и стресс-тестов.
- Определите наиболее часто используемые функции приложения и проведите их стресс-тест.
- Не используйте эмуляторы или симуляторы, они не дают реальных результатов.
- Избегайте тестирования в сетях Wi-Fi, вместо этого используйте мобильные сети.
- При тестировании используйте телефоны среднего и низкого класса.
- Протестируйте приложение с помощью бета-тестирования реальных пользователей.
Как проводить стресс-тестирование
Шаг 1. Планирование стресс-теста
Соберите необходимые данные, проанализируйте систему и определите цель стресс-теста.
Ключевые сценарии. Мы обнаружили часто используемые функции, к которым пользователи будут обращаться постоянно.
Рабочая нагрузка: мы должны четко определить объем нагрузки и необходимое количество пользователей, т. е. рассчитать пиковую нагрузку и спланировать, сколько еще вы будете применять для стресс-тестирования.
Метрики: В зависимости от платформы, на которой работает приложение, метрики меняются. Поэтому решите, какие показатели применимы, а также их допустимый предел.
Шаг 2. Создайте сценарии автоматизации
Для автоматизации тестирования напишите сценарии и сгенерируйте тестовые данные для каждого сценария.
Шаг 3. Выполнение сценариев
Теперь запустите эти сценарии и сохраните соответствующие результаты.
Шаг 4. Анализ результатов
Изучение результатов тестирования и выявление дефектов в системе.
Шаг 5. Настройка и оптимизация
Основываясь на результатах анализа, теперь мы можем сосредоточиться на тонкой настройке программного обеспечения, изменив конфигурацию и оптимизировав код для получения желаемых результатов.
Нагрузочное тестирование против стресс-тестирования
НАГРУЗОЧНОЕ ТЕСТИРОВАНИЕ | СТРЕСС-ТЕСТИРОВАНИЕ |
---|---|
Это подмножество тестирования производительности< тд класс = столбец-2>Это подмножество тестирования производительности | |
Целью нагрузочного тестирования является определение верхнего предела системы, установка SLA для приложения и проверка того, как система выдерживает большую нагрузку | Целью стресс-тестирования является определение того, как система ведет себя при экстремальных нагрузках и как она восстанавливается после сбоя |
Ограничение нагрузки — это пороговое значение перерыва | Ограничение нагрузки выше порогового значения перерыва |
Атрибуты, которые проверяются при нагрузочном тестировании: пиковая производительность, пропускная способность сервера, время отклика при различных уровнях нагрузки, требования к балансировке нагрузки и т. д. | Атрибуты, которые проверяются при стресс-тестирование — это время отклика стабильности, пропускная способность и т. д., |
Нагрузочное тестирование выполняется для проверки производительности системы при экстремальной нагрузке. | Стресс-тестирование выполняется для проверки устойчивости системы при экстремальной нагрузке. |
Это помогает нам понять, как система ведет себя при ожидаемой нагрузке. | Это помогает нам понять, как система ведет себя при экстремальной нагрузке, превышающей ожидаемую мощность. |
Здесь тестовыми данными будет огромное количество пользователей . | Здесь тестовыми данными будет огромное количество пользователей и огромный объем данных. |
Используется для определения верхнего предела емкости системы. | Используется для определения производительности и возможности восстановления системы, когда она подвергается нагрузке, превышающей верхний предел емкости системы. . |
Нагрузочные тесты помогают тестировщику определить узкое место, а также понять основную причину таких проблем. | Стресс-тесты помогают тестировщику выявлять утечки памяти, замедления работы, проблемы безопасности и повреждение данных. |
Метрики для стресс-тестирования
В зависимости от тестируемого приложения метрики, используемые для стресс-тестирования, будут различаться. Вот некоторые часто используемые показатели:
Измерение масштабируемости и производительности. Время ответа. Он измеряет время, необходимое для получения ответа после отправки запроса во время стресс-тестирования.< p>Страниц в секунду: измеряет, сколько страниц запрашивается/читается в секунду.
Пропускная способность: Он измеряет, сколько данных отправляется/получается во время стресс-теста.
Раунды: он измеряет количество запланированных тестовых сценариев по сравнению с тем, сколько раз клиент выполняет их в стресс-тестировании.< p>Ответ приложения:
Время обращения: это среднее время восстановления изображения или страницы, когда приложение находится в стадии тестирования.
Время до первого байта:Это время, необходимое для возврата первого байта данных или информации во время стресс-теста.
Время страницы: это время, необходимое для получения всей информации на странице, когда приложение находится под стресс.
Ошибки:
Неудачные подключения: измеряет количество подключений, отклоненных клиентской системой во время стресс-теста.
Неудачные раунды: измеряет количество неудачных раундов.Неудачные обращения: измеряет количество неудачных попыток, выполненных системой
Примеры реальных сценариев стресс-тестирования
- Сайты электронной коммерции будут иметь огромный всплеск активности во время мегараспродаж.
- Когда веб-сайты университетов публикуют результаты экзаменов, их проверяют несколько пользователей одновременно.
- Откроются продажи билетов на популярный фильм, несколько пользователей будут бронировать билеты.
- Миллионы пользователей смотрят вирусные видеоролики на YouTube.
- Новости или какое-либо важное событие, которое увеличивает посещаемость новостных веб-сайтов или блогов. .
- Финансовые приложения или веб-сайты будут иметь огромный трафик, когда происходят изменения на фондовых рынках.
- Приложения для потоковой передачи музыки будут иметь огромное количество пользователей, когда популярный исполнитель выпускает новый альбом.
Способы улучшения стратегии стресс-тестирования
- Определите правильные сценарии: сосредоточьтесь на наиболее часто используемых пользователями рабочих процессах. Пример: процесс оформления заказа для электронной коммерции.
- Учитывайте скорость сети:Большинство пользователей подключаются через мобильные сети, поэтому при тестировании следует учитывать среднюю скорость сети пользователя.
- Протестируйте разные типы пользователей: приложение с разными ролями пользователей, такими как клиент, сотрудник службы доставки, поставщик , администратор и т. д. Рабочие процессы для каждой роли разные, одна проблема в одной из ролей пользователя может повлиять на другую.
- Сделайте это частью своего рабочего процесса:Перед ожидаемым событием, таким как праздничная распродажа, кампания, запуск продукта и т. д., разработчики планируют стресс-тестирование. Лучший способ интегрировать его в свой процесс — включить его в процессы непрерывной интеграции и развертывания.
- Создайте план оценки результатов: мы должны оценить результаты тестирования и сообщить о проблеме разработчики. Для обеспечения плавного процесса должен быть разработан четко определенный план быстрого устранения проблемы до того, как приложение будет запланировано для развертывания.
Примеры тестов
Поскольку стресс-тестирование не является функциональным тестированием, мы автоматизируем процесс с помощью инструментов тестирования производительности, таких как Apache JMeter. Эти инструменты могут предоставить приложению огромный объем данных, загрузить приложение большим количеством пользователей, которые получают доступ к различным функциям приложения.
Некоторые примеры тестовых случаев:
- Проверьте, когда пороговое значение превышается, и происходит сбой системы.
- Проверьте, может ли система восстановиться после сбоя без какого-либо вмешательства.
- Проверьте, отображается ли правильное сообщение при сбое системы.
- Проверьте, как система реагирует на нагрузку для различных комбинаций ОЗУ, процессора, сети и т. д.
- Проверьте, может ли пользователь выполнить то же действие, когда система превышает ожидаемый предел.
- Проверьте, не переходит ли система в приоритет проблема, когда огромное количество пользователей запрашивают одно и то же действие.
- Проверьте время отклика системы под нагрузкой.
- Проверьте производительность системы в очень медленной сети.
- Проверьте все приведенные выше тестовые примеры на наличие сервер, на котором запущено более одного приложения, чтобы проверить, не затронуто ли другое приложение и т. д.
Заключение
Стресс-тестирование является важным и полезным процесс, который дает представление о различных показателях, связанных с потенциальным повреждением системы, включая потребление памяти, использование процессора, использование сети, использование диска, неудачные/успешные транзакции, взаимоблокировки, конфликты, распределение потоков и т. д.
Поэтому это необходимо для нас. в качестве SDET для проведения стресс-тестирования справляться с такой нагрузкой и устранять эти проблемы.
TAG: qa