Объемное тестирование

🔥 Важное для 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».

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *