Тестирование выносливости или soak-тестирование помогает обнаружить проблемы, связанные с производительностью, такие как утечки памяти или ресурсов, до выпуска продукта на определенной платформе.
Допустим, вы планируете достичь или стремитесь поддерживать максимальную производительность своих систем в рабочее время. В такой ситуации вам точно понадобятся тесты, проверяющие выносливость системы.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туторилов, задач по автоматизации и книг по QA.
Что такое тестирование выносливости?
Soak-тестирование – это один из видов нагрузочного тестирования. Он нацелено на выявление проблем, связанных с производительностью.
Сперва запрашивается расчетная нагрузка на систему. Затем система оценивается на предмет того, сможет ли она хорошо работать под значительной нагрузкой в течение длительного периода времени. Таким образом измеряется ее реакция и анализируется ее поведение при длительном использовании.
Для проведения нагрузочного тестирования, в том числе и на выносливость, есть множество инструментов. Например, LoadStorm, LoadRunner, LoadUI, OpenSTA, Apache JMeter, Appvance и WebLoad.
Зачем нужно проводить тестирование выносливости?
Soak-тестирование в основном используется для выявления потенциальных проблем, таких как утечка памяти, утечка ресурсов или деградация, которая может произойти со временем. Это позволяет избежать снижения производительности или системных ошибок.
В то время как стресс-тесты помогают команде разработчиков протестировать систему на пределе ее возможностей, тестирование выносливости предполагает работу системы на пределе возможностей в течение длительного периода использования.
Другими словами, тестирование выносливости позволяет команде имитировать реальное использование, при котором пользователям постоянно нужен доступ к системе.
Какие проблемы выявляет тестирование выносливости?
- Распределение памяти (утечки памяти, которые в итоге приводят к кризису памяти, или сбои округления, которые проявляются только со временем).
- Использование ресурсов базы данных (ошибки при закрытии курсоров базы данных при определенных условиях, которые в конечном итоге приводят к остановке всей системы).
- Ошибки при закрытии соединений между уровнями многоуровневой системы при определенных обстоятельствах, которые могут заблокировать некоторые или все ее модули.
- Постепенное ухудшение времени отклика некоторых задач, поскольку внутренние структуры данных становятся менее организованными в ходе длительного периода тестирования.
Когда проводить тестирование выносливости?
Прежде чем система будет выпущена для клиентов на определенной платформе, она должна успешно пройти серию нагрузочных тестов при нормальном или более высоком уровне трафика.
Затем проводится тестирование выносливости. Оно поможет вам увидеть, как система работает в течение непрерывного периода доступности. Если во время тестирования возникнут какие-либо проблемы, например, утечка памяти или повреждение памяти, о них следует немедленно сообщить.
Поскольку этот процесс может занять целый день, тестирование выносливости следует проводить в выходные дни. Впрочем, это зависит от ограничений тестовой ситуации.
В настоящее время soak-тестирование является одним из наиболее важных. Для успешного развертывания приложения его непременно нужно протестировать на выносливость.
Примечание редакции. Поскольку soak-тестирование – один из видов нагрузочного, рекомендуем почитать “Когда следует начинать нагрузочное тестирование?”.
Преимущества проведения soak-тестирования
- Гарантирует хорошее состояние приложения.
- Обнаруживает ошибки, которые не могут быть найдены другими тестами производительности.
- Выявляет ухудшение производительности, которое может произойти при высокой непрерывной нагрузке, и помогает исправить эти проблемы, чтобы приложение было более надежным.
- Показывает, насколько устойчиво работает система в течение длительного времени.
- Результат теста может быть использован для подтверждения или улучшения требований клиентов к инфраструктуре.
Юзкейсы для soak-тестирования
В идеале, тест на выносливость должен проводиться как можно дольше, хотя продолжительность зависит от системы. Ниже приведены несколько примеров, когда вам может понадобиться тестирование выносливости.
Пример 1. Если банк объявляет о своем закрытии, логично предположить, что в дни закрытия системе придется обрабатывать очень большое количество транзакций. Это событие редкое и неожиданное, но ваша система все равно должна справиться с этой маловероятной ситуацией.
Пример 2. Система должна выдерживать период отсутствия дежурного персонала. Например, если персонал не работает в выходные дни. Тестирование выносливости должно доказать способность системы функционировать в течение периода, превышающего выходные дни.
Пример 3. Ваша система должна обрабатывать 1000 транзакций за 1 час. Вам может понадобиться протестировать не только эту способность, но и выйти за рамки этого требования: протестировать 1000 транзакций за полчаса или 2000 за 1 час.
Несколько соображений по поводу soak-тестирования
- Длительность тестирования часто определяется доступностью системы.
- Каждое приложение должно работать без прерываний.
- Каждая система обычно имеет время технического обслуживания. Периодичность этих окон будет ключевым фактором при определении объема soak-теста.
Сложности тестирования выносливости
- Тестирование занимает много времени. Его неудобно проводить на проекте с очень жесткими временными ограничениями.
- Поскольку тесты выносливости проводятся в течение длительного периода времени и потребляют много данных, необходимо использовать инструмент автоматизации (а для этого – иметь соответствующие технические знания).
- Часто бывает трудно определить, какой объем тестов стоит применять.
- Если тестовая среда неправильно отделена от производственной, ошибки, обнаруженные в ходе soak-тестирования, могут негативно повлиять на всю рабочую систему, вызвав потерю или повреждение данных.
Стратегии тестирования выносливости
Прежде чем проводить тестирование выносливости, необходимо взглянуть на систему с высоты птичьего полета и определить следующие вещи.
- Среда тестирования. Выясните, какое оборудование, программное обеспечение, база данных и операционная система будут использоваться для проведения soak-теста.
- Сценарии тестирования. Поскольку тестирование выносливости – это длительный процесс, важно разработать, проанализировать и окончательно утвердить сценарии тестирования до проведения любых тестов. Команде разработчиков также необходимо определить, насколько сильная нагрузка будет оказываться на систему.
- Приблизительные оценки времени. Длительность soak-тестов зависит от масштаба системы. Она также зависит от участия команды разработчиков и клиентов, фактического использования в производстве и т.д.
- Анализ рисков. Насколько soak-тест остается последовательным при чрезмерном использовании? Есть ли ошибки, которые еще не обнаружены? Существуют ли внешние помехи, которые приведут к сбоям в работе системы?
Перевод статьи «What is Soak Testing? Learn in 5 Minutes».