Учебное пособие по тестированию больших данных: что это такое, стратегия, как тестировать.
⚡ Умное резюме
Тестирование больших данных проверяет, что приложение для обработки больших данных обрабатывает терабайты данных корректно, быстро и безопасно, сочетая проверку промежуточного хранения данных, проверку MapReduce и проверку выходных данных с проверками архитектуры и производительности в распределенном кластере Hadoop.
Что такое тестирование больших данных?
Тестирование больших данных — это процесс тестирования приложений, работающих с большими данными, с целью обеспечения корректной работы всех их функций. Цель тестирования больших данных — гарантировать бесперебойную и безошибочную работу системы обработки больших данных, сохраняя при этом производительность и безопасность.
Большие данные — это совокупность больших наборов данных, которые невозможно обработать с помощью традиционных вычислительных методов. Для обработки таких наборов данных используются различные инструменты, методы и фреймворки. Большие данные связаны с созданием, хранением, извлечением и анализом данных, которые поражают своим объемом, разнообразием и скоростью. Вы можете узнать больше об этом. Big Data, Hadoop и Уменьшение карты прежде чем начать тестирование.
Что такое стратегия тестирования больших данных?
Тестирование приложения для обработки больших данных — это скорее проверка качества обработки данных, чем тестирование отдельных функций программного продукта. В тестировании больших данных ключевыми являются тестирование производительности и функциональное тестирование.
В стратегии тестирования больших данных инженеры по обеспечению качества проверяют успешную обработку терабайтов данных с использованием стандартного кластера и других вспомогательных компонентов. Это требует высокого уровня навыков тестирования, поскольку обработка происходит очень быстро. Обработка может быть трех типов:
- Пакетная обработка: Обработка сохраненных данных осуществляется по расписанию, поэтому тесты направлены на оценку завершения заданий и точности.
- Обработка в реальном времени: Обработка записей происходит по мере их поступления, поэтому тесты направлены на выявление задержки и потери данных.
- Интерактивная обработка: Аналитики выполняют запросы напрямую, поэтому тесты нацелены на измерение времени ответа на произвольные запросы.
Приведенная ниже диаграмма суммирует стратегию.
Наряду с этим, качество данных также является важным фактором в тестировании Hadoop. Перед тестированием приложения необходимо проверить качество данных, и это следует рассматривать как часть тестирования базы данных. Оно включает проверку различных характеристик, таких как соответствие, точность, дублирование, согласованность, достоверность, полнота данных и т. д. Далее в этом руководстве по тестированию Hadoop мы узнаем, как тестировать приложения Hadoop.
Как тестировать приложения Hadoop
На следующем рисунке представлен общий обзор этапов тестирования приложений для обработки больших данных.
Тестирование больших данных, или тестирование Hadoop, можно условно разделить на три этапа.
Шаг 1. Проверка промежуточного хранения данных
Первый этап в этом руководстве по тестированию больших данных называется подготовительным этапом к Hadoop и включает в себя проверку процесса.
- Данные из различных источников, таких как реляционные базы данных, веб-блоги, социальные сети и т. д., должны быть проверены, чтобы убедиться в корректности данных, поступающих в систему.
- Сравнение исходных данных с данными, переданными в систему Hadoop, чтобы убедиться, что они совпадают.
- Убедитесь, что данные корректны.tracпроверено и загружено в правильное место. HDFS Локация
Такие инструменты, как Talend Datameer можно использовать для проверки данных на промежуточном этапе.
Шаг 2. Проверка «MapReduce»
Второй шаг — это проверка работы MapReduce. На этом этапе тестировщик больших данных проверяет бизнес-логику на каждом узле, а затем проводит её проверку после запуска на нескольких узлах, обеспечивая следующее:
- Процесс MapReduce работает корректно.
- К данным применяются правила агрегирования или разделения данных.
- Генерируются пары ключ-значение
- Проверка данных после обработки MapReduce
Шаг 3: Этап проверки выходных данных
Заключительный или третий этап тестирования Hadoop — это процесс проверки выходных данных. Файлы выходных данных генерируются и готовы к перемещению в EDW (хранилище корпоративных данных) или любую другую систему в зависимости от требований.
В рамках третьего этапа проводятся следующие мероприятия:
- Чтобы проверить правильность применения правил преобразования
- Для проверки целостности данных и успешной загрузки данных в целевую систему.
- Чтобы проверить отсутствие повреждения данных, сравнив целевые данные с данными файловой системы HDFS.
ArchiТестирование тектуры
Теперь внимание переключается с данных на кластер, который их хранит.
Hadoop обрабатывает очень большие объемы данных и требует значительных ресурсов. Поэтому архитектурное тестирование имеет решающее значение для обеспечения успеха вашего проекта по обработке больших данных. Плохо или неправильно спроектированная система может привести к снижению производительности и не соответствовать требованиям. Как минимум, производительность А тестирование отказоустойчивости следует проводить в среде Hadoop.
Тестирование производительности включает проверку времени выполнения заданий, использования памяти, пропускной способности данных и аналогичных системных метрик. Цель службы тестирования отказоустойчивости — убедиться в бесперебойной обработке данных в случае отказа узлов обработки данных.
Тестирование производительности
Тестирование производительности для больших данных охватывает три основные области.
- Ввод и обработка данных: На этом этапе тестировщик больших данных проверяет, насколько быстро система может обрабатывать данные из различных источников. Тестирование включает в себя определение количества сообщений, которые очередь может обработать за заданный промежуток времени. Оно также включает в себя оценку скорости вставки данных в базовое хранилище данных, например, скорость вставки. MongoDB и Cassandra .
- Обработка данных: Это включает в себя проверку скорости выполнения запросов или заданий MapReduce. Также это включает тестирование обработки данных в отрыве от контекста, когда базовое хранилище данных заполнено наборами данных. Например, запуск заданий MapReduce в базовой файловой системе HDFS.
- Производительность отдельных компонентов: Эти системы состоят из множества компонентов, и крайне важно тестировать каждый из них по отдельности. Например, скорость индексации и обработки сообщений, задачи MapReduce, производительность запросов, поиск и т.д.
Подход к тестированию производительности
Тестирование производительности приложений, работающих с большими данными, включает в себя тестирование огромных объемов структурированных и неструктурированных данных и требует специального подхода к тестированию таких массивов данных.
Приведенная ниже схема показывает последовательность действий при проведении теста производительности.
Тестирование производительности выполняется в следующем порядке.
- Процесс начинается с настройки кластера больших данных, который затем будет протестирован на производительность.
- Определите и спроектируйте соответствующие рабочие нагрузки
- Подготовка отдельных клиентов (создаются пользовательские скрипты).
- Выполните тест и проанализируйте результаты (если цели не достигнуты, настройте компонент и выполните тест повторно).
- Оптимальная конфигурация
Параметры для тестирования производительности
Для проверки производительности необходимо учитывать следующие различные параметры:
- Хранилище данных: Как данные хранятся в различных узлах
- Журналы коммитов: Максимально допустимый размер журнала коммитов.
- Параллелизм: Сколько потоков могут выполнять операции записи и чтения?
- Кеширование: Настройте параметры кэширования: «кэш строк» и «кэш ключей».
- Таймауты: Значения для таймаута соединения, таймаута запроса и т. д.
- Параметры JVM: Размер кучи, алгоритмы сборки мусора и т. д.
- Производительность MapReduce: Сортировка, слияние и т. д.
- Очередь сообщений: Скорость передачи сообщений, размер и т. д.
Требования к тестовой среде
Требования к тестовой среде зависят от типа тестируемого приложения. Для тестирования программного обеспечения для обработки больших данных тестовая среда должна включать следующее.
- Оно должно обладать достаточным пространством для хранения и обработки больших объемов данных.
- Он должен иметь кластер с распределенными узлами и данными.
- Он должен иметь минимальную загрузку ЦП и памяти, чтобы поддерживать высокую производительность для тестирования производительности больших данных.
Тестирование больших данных против традиционного тестирования баз данных
В таблице ниже приведено сравнение двух дисциплин по каждому виду собственности.
| Основные свойства | Традиционное тестирование базы данных | Тестирование больших данных |
|---|---|---|
| Данные | Тестировщик работает со структурированными данными. | Тестер работает как со структурированными, так и с неструктурированными данными. |
| Подход к тестированию | Подход к тестированию четко определен и проверен временем. | Подход к тестированию требует целенаправленных усилий в области исследований и разработок. |
| Стратегия тестирования | Тестировщик может выбрать стратегию «Выборочная проверка», выполняемую вручную, или стратегию «Исчерпывающая проверка» с помощью инструмента автоматизации. | Стратегия «выборки» в больших данных представляет собой сложную задачу. |
| Инфраструктура | Не требуется специальная тестовая среда, поскольку размер файла ограничен. | Требуется специальная тестовая среда из-за большого размера данных и файлов (HDFS). |
| Инструменты проверки | Тестировщик использует либо макросы на основе Excel, либо инструменты автоматизации на основе пользовательского интерфейса. | Нет четко определенных инструментов; спектр очень широк, от инструментов программирования, таких как MapReduce, до HiveQL. |
| Средства тестирования | Инструменты тестирования можно использовать, имея базовые знания по их применению и не требуя специальной подготовки. | Для работы с инструментом тестирования требуется определенный набор навыков и подготовка. Кроме того, эти инструменты находятся на начальной стадии развития, и со временем в них могут появиться новые функции. |
Инструменты, используемые в сценариях обработки больших данных
В таблице ниже распространенные инструменты сгруппированы по уровням кластера.
| Big Data Cluster | Инструменты больших данных |
|---|---|
| НетSQL: | CouchDB, Базы данных MongoDB, Cassandra, Redis, ZooKeeper, HBase |
| Уменьшение карты: | Хадуп, Hive, Pig, Cascading, Oozie, Kafka, S4, MapR, акведук |
| Хранение: | S3, HDFS (распределенная файловая система Hadoop) |
| Серверы: | Эластичный, Heroku, Google App Engine, EC2 |
| Обработка: | Р, Yahoo! Трубы, Механическая турка, BigSheets, Datameer |
Проблемы тестирования больших данных
В большинстве проектов, связанных с большими данными, встречаются три практических препятствия.
- Автоматизация: Тестирование автоматизации Для работы с большими данными необходим специалист с техническими знаниями. Кроме того, автоматизированные инструменты не предназначены для решения непредвиденных проблем, возникающих в процессе тестирования.
- Виртуализация: Это один из важнейших этапов тестирования. Задержка виртуальной машины создает проблемы со временем выполнения при тестировании производительности больших данных в реальном времени. Кроме того, управление образами в больших данных представляет собой сложную задачу.
- Большой набор данных: Объём обусловлен тремя факторами.
- Необходимо проверить больше данных и сделать это быстрее
- Необходимо автоматизировать процесс тестирования
- Необходимо иметь возможность проводить тестирование на разных платформах.
Проблемы тестирования производительности
- Разнообразный набор технологий: Каждый субкомпонент относится к отдельной технологии и требует тестирования в отрыве от других.
- Недоступность определенных инструментов: Ни один инструмент сам по себе не может выполнить сквозное тестирование. Например, NoSQL-базы данных могут не подойти для очередей сообщений.
- Скрипты для тестирования: Для разработки тестовых сценариев и тестовых примеров требуется высокий уровень владения навыками написания скриптов.
- Тестовая среда: Из-за большого объема данных требуется специальная тестовая среда.
- Решение для мониторинга: Существует ограниченное количество решений, способных осуществлять мониторинг всей окружающей среды.
- Диагностическое решение: Для детального анализа узких мест в производительности требуется индивидуальное решение.



