🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 15.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks
Содержание:
- Что такое объемное тестирование?
- Зачем нужно объемное тестирование: простой пример
- В чем разница между объемным, нагрузочным и стресс-тестированием?
- Как проводить объемное тестирование?
- Преимущества объемного тестирования
- Основные проблемы объемного тестирования
- Рекомендации по проведению объемного тестирования
- Инструменты для проведения объемного тестирования
Что такое объемное тестирование?
Объемное тестирование (Volume Testing) — это вид нагрузочного тестирования, который помогает оценить, как приложение справляется с большим объемом данных.
Эти данные бывают двух видов:
- Первый — база данных системы. Если система регулярно работает с большими объемами данных, объемное тестирование становится обязательным этапом. В ходе такого тестирования размер базы данных увеличивается до требуемого объема, при этом могут одновременно выполняться множественные запросы.
- Второй — интерфейсный файл. Если система взаимодействует с файлом (например, считывает данные из файла и/или записывает в него), такой файл создаётся согласно требованиям теста. После этого оценивается производительность системы при взаимодействии с файлом.
Главные задачи объемного тестирования при работе системы с большим объемом данных:
- Убедиться, что данные не теряются.
- Проверить, насколько быстро система отвечает.
- Проверить, что данные остаются целостными.
- Убедиться, что не происходит неожиданный сбой системы.
Этот вид тестирования также называют flood testing (тестирование на «затопление»), так как в систему подаётся огромный объем данных для оценки ее поведения.
Зачем нужно объемное тестирование: простой пример
Представим себе интернет-магазин. Предположим, на площадке появляются новые бренды, популярные на рынке и обладающие широким ассортиментом товаров. Система должна обрабатывать этот внезапно увеличившийся объем данных без падений и лагов.
Объемное тестирование также применяют для проверки прогнозируемых объёмов данных в будущем. Например, банковское приложение сейчас генерирует X ГБ данных, через 2 года — уже X10, а через 5 лет — X50. Лучше протестировать это заранее, чем ловить падения на проде.
Когда код уже написан, рекомендуется проверить, справится ли система с тем объемом данных, который на нее может лечь в будущем. Для этого и проводится объемное тестирование.
Оно также помогает заранее выявить потребность в изменении инфраструктуры или базы данных. Лучше подготовить систему к будущей нагрузке заранее, чем вносить срочные изменения постфактум, когда проблема уже возникла.
Объемное тестирование позволяет убедиться, что даже при повышенной нагрузке на базу данных система продолжает работать стабильно, без сбоев.
В чем разница между объемным, нагрузочным и стресс-тестированием?
Объемное тестирование проверяет, как система ведет себя при работе с большим объемом данных.
Нагрузочное тестирование проводится для оценки производительности системы при постепенном увеличении нагрузки до ее предельного значения.
Стресс-тестирование направлено на проверку надёжности системы путём подачи экстремальной нагрузки — числа пользователей и объема данных, превышающих допустимый предел.
Вот как это работает на примерах:
- Объемное тестирование — увеличение количества товаров на сайте.
- Нагрузочное тестирование — увеличение числа пользователей, одновременно работающих с системой.
- Стресс-тестирование — резкое увеличение количества одновременно работающих пользователей, а также объема входящего потока данных до тех пор, пока система не выйдет из строя.
Как проводить объемное тестирование?
Чтобы провести объемное тестирование грамотно, нужно учесть несколько вещей:
- Понять, с каким объемом данных система будет работать в ближайшие годы. В этом помогут бизнес-пользователи, аналитики и маркетологи.
- Разобраться в устройстве базы данных — что где хранится и как обрабатывается.
- Разобраться, как ведет себя система, если в нее загрузить большой объем данных.
- Составить четкий тест-план для подготовки тестовых данных, максимально приближенных к реальным.
- Настроить тестовое окружение — железо, конфигурации и все остальное.
- Выбрать инструменты автоматизации, которые будут использоваться в тестировании.
Преимущества объемного тестирования
Вот несколько ключевых преимуществ объемного тестирования:
- Объемное напрямую влияет на лояльность пользователей. Когда система сталкивается с большим объемом данных, это может вызвать временные сбои или снизить скорость ее работы. Подобные проблемы оставляют у клиентов негативные впечатления. Если выявить это всё на этапе тестирования, багов станет меньше, а лояльность клиентов — выше.
- Это также помогает снизить затраты на поддержку системы. Добиться этого можно за счет выявления сбоев, вызванных объемом данных, еще до выхода в прод.
- Помогает найти слабые места, которые начинают тормозить при работе с большим объемом данных.
- Дает уверенность разработчикам и заказчику в том, что система справится с реальными объемами.
- Проверяет, что данные попадают в нужные таблицы, и ничего не теряется при массовых обновлениях.
- Позволяет заранее проверить систему на готовность к прогнозируемому росту объема данных в будущем.
- Помогает понять, сколько данных система потянет.
- Снижает общие риски отказов, связанных с производительностью системы.
Основные проблемы объемного тестирования
К основным проблемам, связанным с проведением объёмного тестирования, относятся:
- Это один из трудозатратных и дорогостоящих видов нефункционального тестирования, так как требует использования инструментов автоматизации и привлечения квалифицированных специалистов.
- Команда тестировщиков должна хорошо разбираться в базах данных, что может увеличить стоимость проекта.
- В случае небольших систем объемы данных могут быть незначительными, и тогда проведение объемного тестирования становится неоправданным.
- Иногда сложно заранее подготовить тест-кейсы с конкретными объемами данных, так как объемы будущих данных трудно спрогнозировать.
- Воспроизвести реальные данные в нужном объеме и виде для объемного тестирования бывает невозможно.
Рекомендации по проведению объемного тестирования
- Определите четкие цели. Перед началом объемного тестирования необходимо четко обозначить цели, ключевые метрики производительности и критерии успешности.
- Проводите тестирование в контролируемом окружении. Убедитесь, что тест выполняется в условиях, максимально приближенных к продакшену: по железу, ПО, сетевым настройкам и прочим параметрам.
- Начинайте с небольших объемов и постепенно увеличивайте нагрузку. Как и при обычном нагрузочном тестировании, начинать стоит с малого объема данных, увеличивая его шаг за шагом.
- Используйте реалистичные данные. Для достоверности тестирования применяйте данные, приближенные к тем, с которыми работает продакшен. Это позволит получить адекватные результаты о поведении системы при реальной нагрузке.
Следование этим подходам позволит провести надежное объемное тестирование и получить точные данные о поведении системы при высоких объемах данных.
Инструменты для проведения объемного тестирования
Ниже приведен список некоторых автоматизированных инструментов, используемых тестировщиками по всему миру:
- HammerDB — инструмент для нагрузочного тестирования, поддерживающий множество СУБД, включая Oracle Database, SQL Server, IBM Db2, MySQL, MariaDB, PostgreSQL и Redis. Программа бесплатная и с открытым исходным кодом, размещена на GitHub под эгидой TPC. Работает под Linux и Windows.
- JdbcSlim — тоже бесплатный open-source-инструмент. Это фреймворк, который позволяет интегрировать SQL-запросы и команды в Slim FitNesse. Доступен на GitHub. Отделение тестовых данных, конфигураций и SQL-кода делает его удобным для бизнес-пользователей, так как тест-кейсы пишутся независимо от реализации. Поддерживает СУБД с JDBC-драйверами.
- DBFit — инструмент для автоматизированного тестирования баз данных с открытым исходным кодом, основанный на FitNesse. Разработан Гойко Аджичем. Поддерживает Oracle, SQL Server, MySQL, IBM Db2, Derby и PostgreSQL.
- JMeter — при объемном тестировании с помощью JMeter моделируется высокая нагрузка на систему (например, множество пользователей), чтобы проверить производительность и масштабируемость веб-приложений, баз данных и серверов.
Заключение
Для любой системы объем данных является важным параметром. Объемное тестирование относится к видам нефункционального тестирования. Оно используется для проверки объема данных, с которыми система взаимодействует или, предположительно, будет взаимодействовать в будущем.
Такое тестирование требует значительных временных затрат, однако оно помогает выявить такие проблемы, как снижение скорости отклика и потеря данных.
Перевод статьи «Volume Testing».