Давайте сегодня поговорим об одном из самых востребованных и набирающих актуальность навыков для QA – ETL-тестировании (Extract, Transform, and Load).
Клиентам предлагается богатый ассортимент продуктов и услуг на основе различного рода технологий, процессов и решений. ETL или хранилище данных (DWH) – одно из направлений, которое быстро и успешно развивается.
В ходе ETL-процессов данные извлекаются из исходных систем, преобразуются в соответствии с бизнес-правилами и, наконец, загружаются в целевую систему (хранилище данных). Хранилище данных (DWH – Data Warehouse) – это общекорпоративное хранилище, содержащее интегрированные данные, которые помогают в процессе принятия бизнес-решений. Оно является частью бизнес-аналитики.
Данное руководство даст вам полное представление об ETL-тестировании и о том, какие приемы используются для тестирования ETL-процессов.
Содержание:
- Зачем организациям нужны хранилища данных?
- ETL-процессы
- Техники ETL-тестирования
- Процесс тестирования ETL/хранилища данных
- Разница между тестированием баз данных и хранилищ данных
- Проблемы ETL-тестирования
Зачем организациям нужны хранилища данных?
Организации с чётко сформированной ИТ-практикой стремятся достичь оптимального уровня технологической трансформации. В настоящее время они пытаются добиться большей продуктивности, используя данные, с которыми легко работать.
Данные – самая важная часть любой организации, будь то данные реального времени или исторические данные. Данные являются основой любого отчета, а отчеты – базой, на основе которой принимаются все жизненно важные управленческие решения.
Большинство компаний для хранения и мониторинга данных, получаемых в режиме реального времени, а также исторических данных, выбирают хранилища данных. Создание эффективного хранилища данных – непростая задача. Многие организации имеют распределенные отделы с различными приложениями, работающими на распределенных технологиях.
Для успешной интеграции различных источников данных из разных отраслей используется ETL.
ETL работает как интегратор, извлекая данные из различных источников, преобразуя их в предпочтительный формат на основе правил бизнес-трансформации и загружая их в целостную базу данных, известную как DWH.
Хорошо спланированный, четко определенный и эффективный объем тестирования гарантирует плавный переход проекта в продакшен. Когда процессы ETL проверяются и валидируются независимой группой экспертов и таким образом подтверждается, что хранилище данных является надежным, бизнес становится динамичным.
Тестирование ETL или хранилища данных подразделяется на четыре этапа (независимо от используемой технологии или ETL-инструментов):
- Тестирование нового хранилища данных. Новое хранилище данных создается и проверяется с нуля. Данные берутся из требований заказчика и различных источников данных, а новое хранилище создается и проверяется с помощью ETL-инструментов.
- Миграционное тестирование. В этом случае у заказчика есть существующее DWН и ETL, выполняющие свою работу, но он хочет использовать новые инструменты для повышения эффективности.
- Запрос на изменение. В таком типе проекта в существующее DWН добавляются новые данные из различных источников. Также может возникнуть ситуация, когда заказчику необходимо изменить существующие бизнес-правила или интегрировать новые требования.
- Тестирование отчетов. Отчет – это конечный результат любого хранилища данных и основная цель, для которой строится DWН. Отчет должен быть протестирован путем проверки макета, отображаемых в отчете данных и правильности расчетов.
ETL-процессы
Техники ETL-тестирования
- Тестирование трансформации данных. Проверка правильности преобразования данных в соответствии с различными бизнес-требованиями и правилами.
- Подсчет записей Source to Target. Проверка равенства количества записей в загружаемом файле количеству записей в целевом DWH.
- Тестирование Source to Target. Проверка того, что все необходимые данные загружены в хранилище данных без каких-либо потерь.
- Тестирование корректности данных. Нужно убедиться, что приложение ETL должным образом отклоняет поврежденные данные, заменяет их значениями по умолчанию и сообщает о них.
- Тестирование производительности. Данные должны загружаться в DWH в установленные и ожидаемые сроки.
- Валидация данных. Проверка данных в DWH-системе и сравнение их с исходными данными.
- Интеграционное тестирование. Проверка того, что данные из различных источников были правильно загружены в целевую систему, а также проверка всех пороговых значений.
- Миграционное тестирование. Проверка корректности работы ETL при переносе на новую платформу.
- Проверка метаданных. Проверяются тип данных, длина, индекс, ограничения и т.д.
- Проверка на дубликаты. Проверяется наличие в в целевом DWH дубликатов данных. Дублирование данных может привести к ошибкам в аналитических отчетах.
Помимо вышеперечисленных методов тестирования ETL используются и другие, такие как тестирование интеграции, приемочное тестирование, инкрементное тестирование, регрессионное тестирование. Все они необходимы, чтобы убедиться, что все работает надежно.
Процесс тестирования ETL/хранилища данных
Подобно любому другому виду тестирования, ETL-тестирование также проходит через следующие фазы:
- Анализ требований
- Валидация
- Оценка трудозатрат (эстимация) процесса тестирования. Основывается на количестве таблиц, сложности бизнес-логики и структуры таблиц, объеме данных и производительности задания.
- Планирование тестирования. Основывается на данных эстимации тестирования и бизнес-требований. Здесь необходимо определить, что будет входить в список планируемых задач, а что выходит за их рамки. На этом этапе также необходимо обратить внимание на зависимости, риски и мероприятия по их снижению.
- Разработка тест-кейсов и тестовых сценариев на основе всех имеющихся данных. Здесь также необходимо разработать data mapping и SQL-скрипты.
- Как только все тест-кейсы будут готовы и утверждены, команда тестирования приступит к выполнению смоук-тестов и подготовке тестовых данных для тестирования.
- Тестирование выполняется до тех пор, пока не будут достигнуты критерии выхода. Таким образом, этап выполнения включает в себя запуск ETL-заданий (jobs), мониторинг выполнения заданий, выполнение SQL-скриптов, создание баг-репортов, повторное тестирование дефектов и регрессионное тестирование.
- После успешного окончания составляется отчет и завершается процесс тестирования. На этом этапе дается согласие на переход на следующий этап разработки.
Первые две фазы, т.е. анализ требований и валидация, можно рассматривать как предварительные этапы процесса 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)».