ETL-тестирование

Давайте сегодня поговорим об одном из самых востребованных и набирающих актуальность навыков для QA – ETL-тестировании (Extract, Transform, and Load).

Клиентам предлагается богатый ассортимент продуктов и услуг на основе различного рода технологий, процессов и решений. ETL или хранилище данных  (DWH) – одно из направлений, которое быстро и успешно развивается.

В ходе ETL-процессов данные извлекаются из исходных систем, преобразуются в соответствии с бизнес-правилами и, наконец, загружаются в целевую систему (хранилище данных). Хранилище данных (DWH – Data Warehouse) – это общекорпоративное хранилище, содержащее интегрированные данные, которые помогают в процессе принятия бизнес-решений. Оно является частью бизнес-аналитики.

Данное руководство даст вам полное представление об ETL-тестировании и о том, какие приемы используются для тестирования ETL-процессов.

Содержание:

Зачем организациям нужны хранилища данных?

Организации с чётко сформированной ИТ-практикой стремятся достичь оптимального уровня технологической трансформации. В настоящее время они пытаются добиться большей продуктивности, используя данные, с которыми легко работать.

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

Большинство компаний для хранения и мониторинга данных, получаемых в режиме реального времени, а также исторических данных, выбирают хранилища данных. Создание эффективного хранилища данных – непростая задача. Многие организации имеют распределенные отделы с различными приложениями, работающими на распределенных технологиях.

Для успешной интеграции различных источников данных из разных отраслей используется ETL.

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

Хорошо спланированный, четко определенный и эффективный объем тестирования гарантирует плавный переход проекта в продакшен. Когда процессы ETL проверяются и валидируются независимой группой экспертов и таким образом подтверждается, что хранилище данных является надежным, бизнес становится динамичным.

Тестирование ETL или хранилища данных подразделяется на четыре этапа (независимо от используемой технологии или ETL-инструментов):

  1. Тестирование нового хранилища данных. Новое хранилище данных создается и проверяется с нуля. Данные берутся из требований заказчика и различных источников данных, а новое хранилище создается и проверяется с помощью ETL-инструментов.
  2. Миграционное тестирование. В этом случае у заказчика есть существующее DWН и ETL, выполняющие свою работу, но он хочет использовать новые инструменты для повышения эффективности.
  3. Запрос на изменение. В таком типе проекта в существующее DWН добавляются новые данные из различных источников. Также может возникнуть ситуация, когда заказчику необходимо изменить существующие бизнес-правила или интегрировать новые требования.
  4. Тестирование отчетов. Отчет – это конечный результат любого хранилища данных и основная цель, для которой строится DWН. Отчет должен быть протестирован путем проверки макета, отображаемых в отчете данных и правильности расчетов.

ETL-процессы

Схема ETL-процессов

Техники ETL-тестирования

  1. Тестирование трансформации данных. Проверка правильности преобразования данных в соответствии с различными бизнес-требованиями и правилами.
  2. Подсчет записей Source to Target. Проверка равенства количества записей в загружаемом файле количеству записей в целевом DWH.
  3. Тестирование Source to Target. Проверка того, что все необходимые данные загружены в хранилище данных без каких-либо потерь.
  4. Тестирование корректности данных. Нужно убедиться, что приложение ETL должным образом отклоняет поврежденные данные, заменяет их значениями по умолчанию и сообщает о них.
  5. Тестирование производительности. Данные должны загружаться в DWH в установленные и ожидаемые сроки.
  6. Валидация данных. Проверка данных в DWH-системе и сравнение их с исходными данными.
  7. Интеграционное тестирование. Проверка того, что данные из различных источников были правильно загружены в целевую систему, а также проверка всех пороговых значений.
  8. Миграционное тестирование. Проверка корректности работы ETL при переносе на новую платформу.
  9. Проверка метаданных. Проверяются тип данных, длина, индекс, ограничения и т.д.
  10. Проверка на дубликаты. Проверяется наличие в  в целевом DWH дубликатов данных. Дублирование данных может привести к ошибкам в аналитических отчетах.

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

Процесс тестирования ETL/хранилища данных

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

  1. Анализ требований
  2. Валидация
  3. Оценка трудозатрат (эстимация) процесса тестирования. Основывается на количестве таблиц, сложности бизнес-логики и структуры таблиц, объеме данных и производительности задания.
  4. Планирование тестирования. Основывается на данных эстимации тестирования и бизнес-требований. Здесь необходимо определить, что будет входить в список планируемых задач, а что выходит за их рамки. На этом этапе также необходимо обратить внимание на зависимости, риски и мероприятия по их снижению.
  5. Разработка тест-кейсов и тестовых сценариев на основе всех имеющихся данных. Здесь также необходимо разработать data mapping и SQL-скрипты.
  6. Как только все тест-кейсы будут готовы и утверждены, команда тестирования приступит к выполнению смоук-тестов и подготовке тестовых данных для тестирования.
  7. Тестирование выполняется до тех пор, пока не будут достигнуты критерии выхода. Таким образом, этап выполнения включает в себя запуск ETL-заданий (jobs), мониторинг выполнения заданий, выполнение SQL-скриптов, создание баг-репортов, повторное тестирование дефектов и регрессионное тестирование.
  8. После успешного окончания составляется отчет и завершается процесс тестирования. На этом этапе дается согласие на переход на следующий этап разработки.

Первые две фазы, т.е. анализ требований и валидация, можно рассматривать как предварительные этапы процесса ETL-тестирования.

Таким образом, основной процесс можно представить следующим образом:

"Лестница": планирование тестирования, разработка теста, исполнение, закрытие теста, закрытие.

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

Тестирование ETL/хранилища данных может потребовать от команды тестировщиков написания SQL-запросов или адаптации запросов, предоставленных командой разработчиков. В любом случае, команда тестирования должна знать, какие должны быть результаты выполнения этих SQL-запросов.

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

Существует распространенное заблуждение, что тестирование баз данных и хранилищ данных похожи. На самом деле это разные направления в тестировании.

  • Тестирование баз данных проводится на меньшем объеме данных, обычно с использованием  OLTP баз данных (Online transaction processing). А тестирование DWH проводится на основе OLAP баз данных (Online analytical processing).
  • При тестировании БД данные последовательно поступают из источников с одинаковой структурой, в то время как при тестировании хранилища данных большинство данных поступает из различных источников, которые могут иметь различную структуру.
  • При тестировании базы данных мы обычно выполняем только операции CRUD (Create, read, update and delete), в то время как при тестировании хранилища данных мы используем только операции чтения (Select).
  • При тестировании БД используются нормализованные базы данных, а при тестировании хранилища данных – денормализованные.

Существует ряд универсальных проверок, которые должны быть выполнены для любого вида тестирования хранилища данных:

  • Убедитесь, что преобразование данных source to target работает так, как ожидается в требованиях.
  • Убедитесь, что данные загружены в целевую систему.
  • Проверьте, все ли поля конечной БД и данные полей источника загружены без какого-либо усечения.
  • Проверьте соответствие контрольной суммы данных и количество записей в обоих источниках (source and target).
  • Убедитесь, что для повреждённых или несоответствующих требованиям данных создаются журналы ошибок со всеми подробностями.
  • Проверьте поля со значением NULL.
  • Убедитесь, что дубликаты данных не загружаются.
  • Проверьте целостность данных.

Проблемы ETL-тестирования

ETL-тестирование значительно отличается от тестирования в традиционном понимании. При проведении такого тестирования может возникнуть множество нюансов. На проекте вы можете столкнуться со следующими сложностями:

  • Несовместимые и дублирующиеся данные
  • Потеря данных в ходе запуска ETL-процессов
  • У тестировщиков нет прав для самостоятельного запуска ETL-процессов
  • Огромный объем и сложность данных
  • Ошибки и недочеты в бизнес-процессах и процедурах
  • Проблемы с получением и построением тестовых данных
  • Нестабильная среда тестирования
  • Отсутствие информации об источниках данных

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

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

Перевод статьи Vishal Chhaperia «ETL Testing Data Warehouse Testing Tutorial (A Complete Guide)».

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

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