Тестирование больших данных: руководство для начинающих

Teya Manasherova
NOP::Nuances of Programming
7 min readSep 21, 2021

Большие данные — что это?

Большие данные — совокупность данных, объем которых со временем постоянно растет. Эти данные делятся на три категории.

  • Структурированные. Тип файла известен, так как установлен формат.
  • Неструктурированные. Формат файла неизвестен, так как он может быть представлен в виде изображений, видео, плоских файлов и т. д.
  • Полуструктурированные. Комбинация структурированных и неструктурированных данных.

Тестирование больших данных — что это?

Тестирование больших данных — процесс выполнения таких функций, как создание, хранение, извлечение и анализ огромных объемов данных (изображений, плоских файлов и аудио). Традиционные методы тестирования могут не справиться с такими требованиями, поэтому возникает необходимость в отдельной стратегии для больших данных.

Таким образом, подход к тестированию подразумевает научно-исследовательскую деятельность, так как для разработки стратегии выборки нужны специальные навыки.

Набор данных — группа связанных, дискретных фрагментов данных, доступ к которым можно получить по отдельности или в комбинации. Он состоит из большого объема данных, которые может быть трудно проанализировать.

Выборка решает эту проблему с помощью подмножества данных из набора.

Тестирование больших данных гарантирует:

  • Безопасность и подлинность

Тестирование проводится на разных уровнях и с разными интервалами, чтобы устранить любые нарушения безопасности или уязвимости в системе. Оно обеспечит безопасность и конфиденциальность данных, а также позволит укрепить доверие к клиентам.

  • Точность

Работа с неструктурированными данными позволит лучше понять полезные данные, принять решения, улучшить анализ рисков и разработать более эффективные стратегии цифрового маркетинга.

  • Проверку в режиме реального времени

Тестирование производительности должно проводиться с помощью данных в режиме реального времени. Необходимо обеспечить достоверность данных, используемых для этой цели.

  • Надежность и эффективность

Данные собираются и извлекаются из различных источников и каналов, однако это может привести к тому, что они окажутся неэффективными, неточными и ненадежными. Тестирование гарантирует, что данные включают проверку слоев, компонентов и логики.

Возможные проблемы при тестировании больших данных

Обширный набор данных из различных источников

  • Требуется больше времени на тестирование совместимости на различных платформах.
  • Требуется больше времени для быстрой автоматизации.
  • Требуется больше времени на проверку и подтверждение данных.

Выбор фреймворков автоматизации и стратегии

  • Необходимость избегать непредвиденных ошибок из-за неподходящих процедур.
  • Требуется помощь экспертов для написания скриптов.
  • Для создания тестовых случаев необходим высокий уровень написания сценариев.

Виртуализация

  • Управлять задержками виртуальной машины — сложная задача.

Тестирование производительности

  • Необходимо разработать решения для узких мест производительности.
  • Комплексное решение не может быть выполнено одним инструментом.
  • Размер данных требует специальных условий.

Разница между традиционным тестированием и тестированием больших данных

Традиционное тестирование

  • Использует структурированные данные.
  • Не требует специальной среды, т.к. размер файла ограничен.
  • Тестировщик может выбрать ручное или автоматическое тестирование.
  • Использует макросы Excel или UI-средства автоматизации.
  • Требует базовые знания по инструментам.

Тестирование больших данных

  • Может иметь структурированные, неструктурированные или полуструктурированные данные.
  • Требуется специальная среда для большого объема данных.
  • Выбор стратегии будет отличаться, так как тестировщику потребуется работать с выборкой.
  • Необходимы такие инструменты программирования, как MapReduce и HIVEQL.
  • Необходим определенный набор навыков и обучения по тестированию инструмента.

Важные факторы при построении стратегии тестирования больших данных

Тестирование больших данных фокусируется в большей степени на проверке обработки данных приложения, а не отдельных функций. Тестировщики также должны учитывать такие факторы качества, как точность, дублирование, достоверность и согласованность и т. д.

Прежде чем определить подходящую стратегию тестирования, команда должна ответить на следующие вопросы.

  1. Какой план необходим для тестирования приложений с большими данными?
  2. Какие виды подходов к тестированию следует считать применимыми для приложений с большими данными?
  3. Какие требования необходимы для настройки окружающей среды?
  4. Какие подходы необходимы для проверки данных в приложении больших данных?
  5. Какие инструменты необходимы для тестирования?

При тестировании больших данных необходимо учитывать следующие три аспекта.

  1. Проверка данных

Первоначально данные должны быть загружены из источника в систему больших данных с помощью инструментов извлечения. Затем важно убедиться, что в систему будут введены правильные данные.

2. Обработка данных

Тестировщики проверяют бизнес-логику на каждом узле. Проверка данных должна быть выполнена снова после запуска на нескольких узлах. Это помогает убедиться, что результат соответствует ожиданиям.

3. Проверка выходных данных

Проверка выходных данных подразумевает процесс переноса сгенерированных файлов выходных данных в Enterprise Data Warehouse. Необходимо подтвердить точность, чтобы убедиться в отсутствии потери данных. Затем нужно проверить логику преобразования и обеспечить целостность данных.

Типы тестирования при построении стратегии тестирования больших данных

Функциональное тестирование

  1. Архитектурное тестирование
  • Тестирование приема данных помогает проверить, что все данные извлечены и загружены должным образом, с учетом таких факторов, как отказоустойчивость, доступность данных и стабильное соединение с потоками данных.
  • Тестирование обработки данных проверяет процесс обработки данных и гарантирует, что бизнес-логика правильно выполнена путем сравнения выходных файлов с входными.
  • Тестирование хранилища данных подразумевает сравнение загруженных данных с выходными данными хранилища. Тестирование также обеспечивает непрерывную доступность и балансировку нагрузки в хранилище данных.

2. Тестирование переноса

Тестирование переноса проверяет отсутствие потери данных в результате их переноса из старой системы в новую или из-за изменения технологии. Данное тестирование можно разделить на:

  • тестирование перед переносом;
  • тестирование переноса;
  • тестирование после переноса.

Нефункциональное тестирование

1.Тестирование производительности

  • Загрузка и пропускная способность данных проверяет, насколько быстро система сможет потреблять данные из различных источников и как быстро сможет быть помещена в базовое хранилище.
  • Скорость обработки данных измеряет скорость, с которой обрабатываются данные при использовании MapReduce.
  • Производительность подсистемы гарантирует, что отдельные компоненты системы доступны и подключены.

2. Тестирование безопасности обеспечивает необходимую авторизацию и аутентификацию данных. Поскольку приложение работает с большим объемом данных, необходимо обеспечивать следующие аспекты для тестирования безопасности:

  • уязвимость;
  • атака «грубой силой»;
  • SQL-инъекции и XSS (межсайтовые сценарии);
  • точки доступа к службам.

3.Тестирование механизма на падение создает узлы восстановления данных и подготавливает приложение к неустойчивости. Это обеспечивает плавную обработку данных при переключении узел за узлом.

4.Отслеживание качества данных проверяет точность, своевременность и согласованность данных, записей и сообщений в приложении.

Как выполнить некоторые из основных типов тестирования

Тестирование базы данных

  1. Загрузить данные на выбранную платформу, например Hadoop. Она используется для хранения данных на товарных серверах и запуска приложения больших данных в кластерах.
  2. Убедиться, что правильные данные полностью импортированы в платформу, а обработка выполняется в соответствии с бизнес-требованиями в выбранном фреймворке.
  3. Определить подмножество данных и проверить все вышеизложенное.
  4. Сравнить полученный результат с обработанными данными из фреймворка. Здесь необходимо создать скрипты для тестирования, чтобы извлечь данные и обработать их.
  5. Поместить данные в хранилище.
  6. Проверить сохраненные данные еще раз с помощью операций CRUD. Это обеспечит правильное отображение обработанных данных в хранилище до и после загрузки.
  7. Визуализировать данные с помощью инструментов бизнес- аналитики (например, Oracle, SAP и т. д.). Веб-сервисы используются для передачи данных из хранилища в бизнес-аналитику. Таким образом, тестировщики также должны протестировать сервисы.

Данные из исходной БД:

  • Проверка данных из источников, чтобы убедиться в их правильности и целостности.

Тестирование фреймворка:

  • Данные обрабатываются в соответствии с бизнес-логикой.
  • Параллельная обработка данных.
  • Наборы данных хранятся в распределенных файловых системах.

Хранилище данных:

  • Пользовательские CRUD-операции
  1. Данные созданы в исходной БД.
  2. После создания они будут доступны в хранилище до и после загрузки. То же самое относиться к обновленным данным.

Пользовательская среда:

  • Анализ данных.
  • Создание отчетов.

Функциональное тестирование

Аналогично функциональному тестированию, выполняемому в других приложениях.

  • Тестирование интерфейса (например, веб-страниц) должно проводиться в соответствии с требованиями пользователя.
  • Отображаемые результаты во внешнем интерфейсе должны быть подтверждены ожидаемым результатом.

Тестирование производительности

  1. Настроить кластер больших данных.
  2. Определить и спланировать задания, которые необходимо выполнить при рабочих нагрузках.
  3. Создать индивидуальные скрипты. При этом важно учитывать следующие параметры.
  • Хранилище данных: как данные хранятся в разных узлах приложения.
  • Журнал фиксации: насколько может вырасти журнал фиксации.
  • Параллелизм: сколько потоков может выполнять операции записи и чтения.
  • Кэширование: настройте параметры кэша «кэш ряд» и «ключевой кэш».
  • Время ожидания: значения для времени ожидания соединения, времени ожидания запроса и т. д.

4. Провести тестирование на производительность, а затем проанализировать результаты. Если результаты не соответствуют требованиям производительности, то необходимо оптимизировать компоненты и заново провести тестирование.

5. Если производительность стабильна, то процесс завершен.

Разработка тестовых сценариев и случаев

Тестировщикам необходимы другие документы вместе с документом требований для разработки тестовых сценариев или случаев для приложения с большими данными. Ниже изложены некоторые из них.

  1. Входной документ содержит структуру БД и ее связи с таблицами.
  2. Аналитический документ содержит типы данных сопоставления исходных и целевых таблиц после извлечения данных в хранилище.
  3. Проектный документ содержит все входные данные и показывает, какой результат они будут производить и т. д.

Примечание: эти документы не являются обязательными и зависят от стандартов компании или характера проекта.

Инструменты тестирования больших данных

Прием данных:

  • CouchDB
  • Kafka
  • Sqoop
  • Databases MongoDB
  • Cassandra
  • Redis
  • ZooKeeper
  • HBase

Обработка данных:

  • Hadoop
  • Hive
  • Pig
  • Cascading
  • Oozie
  • Kafka
  • S4
  • MapR
  • Flume

Хранилище данных:

  • Amazon S3
  • HDFS (Hadoop Distributed File System)

Перенос данных:

  • Talend
  • Kettle
  • Clover DX

Серверы:

  • Elastic
  • Heroku
  • Google App Engine
  • EC2

Лучшие практики тестирования больших данных

  1. Тестирование должно основываться на бизнес-логике.
  2. Исправление ошибок нужно ставить в приоритет.
  3. Не забывайте про контекст.
  4. Автоматизируйте работу, чтобы сэкономить время.
  5. Цели тестирования должны быть ясными.
  6. Связь между командой и клиентом очень важна.
  7. Убедитесь, что у вас есть хорошие технические навыки, так как вы будете работать с выборкой данных.
  8. Важно уметь работать как с неструктурированным, так и с полуструктурированным материалом, а также со структурированными данными в хранилище данных или в реляционной системе управления базами данных.
  9. Тестировщик программного обеспечения должен уметь работать с постоянно меняющейся схемой.
  10. Тестировщикам важно проявлять творческий подход, чтобы разработать методологии и утилиты, которые обеспечивают достаточный охват тестирования при сохранении высокой производительности тестирования.

Заключение

Тестирование больших данных — это процесс проверки функционального и нефункционального тестирования с большим объемом структурированных и неструктурированных данных. При этом используются специальные инструменты и методы тестирования для проверки сквозной бизнес-логики.

Для обработки данных можно рассмотреть стратегию выборки данных.

Манипулирование средой для тестирования очень важно. Основные требования к проведению тестирования будут следующими:

  • Требуется место для хранения, обработки и проверки данных.
  • Оперативность реагирования кластеров и соответствующих узлов.
  • Наличие мощных ресурсов обработки данных.

Конкретные инструменты должны быть определены до настройки стратегии тестирования, так как для различных процессов доступно множество инструментов.

Всегда лучше заранее выявить любые проблемы, связанные с автоматизацией, тестированием производительности, визуализацией данных и т. д., а затем разработать план по их преодолению во время тестирования.

--

--