Для начала следует отметить, что тестирование любой производительности – это не просто вид проверки, а общее описание для большого количества видов тестов, дающих данные о текущем поведении системы при наступлении разнообразных ситуаций.
В практике QA на сегодняшний день существует такой перечень видов тестирования производительности:
- Нагрузочные проверки;
- Процесс стресс-тестирования;
- Проверка на выносливость или продолжительное тестирование;
- Пиковые тесты.
Рассмотрим каждый тип по отдельности.
Нагрузочные тесты
Базовая цель: понять, что система может корректно справиться с создаваемой на определенном уровне нагрузкой. Например, нужно за три часа выполнить более 1000 банковских операций, которые должны проходить за 1 секунду.
Нагрузочные проверки – это вид теста на производительность, который дает понимание того, как программное обеспечение может вести себя при определенной нагрузке. Данный тест может дать указание на потенциальный предел возможностей вашего ПО, за которым система перестанет функционировать должным образом.
Анализируя процесс нагрузки, стоит учитывать количество пользователей, которые могут одновременно находиться в системе и проводить подобные операции. Нагрузочное тестирование применяется для верификации и определения таких процессов:
- Потенциальные условия высокой нагрузки: дает данные для других типов проверок, которые создаются для выявления узких мест в ПО;
- Потенциальная пропускная способность;
- Время отклика: растет оно или нет;
- Использование ресурсов (внешних и внутренних).
Процесс стресс-тестирования
Базовая цель: постепенно, в непрерывной форме повышать нагрузку на ПО, пока оно не отобразит ошибку или отказ от дальнейшей работы (к примеру, повысить сумму виртуальных пользователей, пока ПО полностью не перестанет работать).
Стресс-тесты часто используют для тестирования программного обеспечения, которое может столкнуться с нарастающей системной нагрузкой. Они могут предоставлять данные о стабильной работе ПО, когда ресурсы аппаратного обеспечения исчерпываются.
К примеру, программе необходимо больше ОЗУ, места на жестком диске и т.д. Данный вид тестирования программной производительности применяется для нахождения и последующей верификации поведения веб-продукта, которое вынужденно функционировать за пределами стабильной и допустимой нагрузки.
Это немного схоже с нагрузочным тестированием, но базовая идея здесь в том, что ПО необходимо вывести за рамки его технических возможностей. Тестировщику нужно определить, в какой момент веб-продукт может отказать, каким образом это произойдет и проанализировать, как он может восстановиться (если ПО в состоянии выполнить процедуру технического восстановления).
При стресс-тестировании можно узнать очень много интересного касательно:
- Номинальных пределов системы;
- Условий отказа в работе;
- Степени адекватности стратегии переключения работы при отказе.
Дополнительно можно определить:
- Состояние прогона;
- Потенциальные утечки памяти.
Проверка на выносливость или продолжительное тестирование
Базовая цель: постараться выполнить имитацию классической нагрузки в течение определенного времени, дабы убедится в том, что применение ресурсов остается на том же уровне (пространство на диске, утечка памяти, условия для разгона и прочее).
Тестирование на продолжительность и выносливость – это проверка работы системы с нормальной нагрузкой на протяжении длительного времени. Кто-то может выполнять тесты днями, а кто-то при должном подходе может находить баги спустя пару часов после начала прогона. Важно понимать: как правило, нагрузка может быть небольшой, но сам тест будет длиться долго.
Такой подход может помочь отыскать:
- Проблемы, которые могут проявляться только при длительном использовании ПО;
- Утечку памяти;
- Промежуток времени, после которого система может отказать;
- Сумму ошибок за одну единицу времени.
Пиковые тесты
Базовая цель: постараться измерить способность ПО обращаться с кривой экстремального спроса, удерживая повышенную нагрузку за короткий отрезок времени, и эффективно восстановить все ресурсы после данного всплеска.
Подобные виды тестов проводятся для верификации характеристик производительности системы, когда она длительное время подвергается высоким нагрузкам. Классический шаблон – протестировать повышение и резкий упадок нагрузки несколько раз в течение длительного отрезка времени.
Пиковые тесты помогают:
- Найти баги с одновременными транзакциями – условия прогона тестов;
- Понять, насколько быстро может масштабировать приложение.
На проектах и продуктах, которые подвергаются проверкам производительности, именно при пиковых проверках можно найти много чего интересного. Мгновенный удар по системе быстро укажет на узкие места и другие технические странности, которые можно не обнаружить при других тестах. В большинстве случаев они вызваны изначальными условиями гонки.
В конце мы хотели бы отметить, что тестирование производительности является довольно важной частью проверки программного обеспечения. Данное тестирование имеет свои типы, каждый из которых отвечает за проверку работоспособности и производительности системы в определенных условиях. Тестирование производительности поможет убедиться, что система способна быстро выполнять поставленные задачи.
Оставить комментарий