25.03.2012
Причина:
хранилище данных - это сущность с постоянно изменяющимися структурой (форма, количество, расположение объектов) и данными (в любой момент может прийти исключение).
На вопрос "как вы тестировали DWH?", в целом, получаемый ответ "никак", за исключением корректных ответов, суть которых сводится к "почти никак".
И это логично, писать тесты занимает много времени, потому что нужно придумать, как по другому проверить трансформацию, а не так как она реализована в ETL. Однажды измененная, логика или исключения в данных автоматически делают тесты устаревшими. Нет того, кто сидит и следит за всеми изменениями, люди приходят и уходят и, как правило, уходят сразу после ETL.
Если все так плохо, то что вообще тестировать и нужно ли после того, как ETL сдан и вроде как работает. Как придумать механизм, который будет фиксировать изменения, решать - аномалии это или нет и сообщать о них до того, как эти аномалии попадают в финансовый отчет? Кому вообще сообщать и кому это надо? И что сообщать, чтобы не отправляли в корзину?
Год назад я задался этими вопросами и пробую их решить на примере одного долгосрочного проекта.
Входные данные:
- хранилище данных с 4х слойной архитектурой (Stage, Cleansing, DWH, Data Marts)
- объем данных порядка 45 TB во всех слоях, ежедневное движение данных порядка 500 GB
- количество таблиц в слое DWH более 200, средний рост более 10 таблиц в квартал
- база данных Oracle 11g
- железяка Exadata
- организация ETL смешанная: пакеты PL/SQL и средство Business Objects Data Integrator
14.04.2012
Предмет:

Тестировать нужно все, но пока ограничимся тем, что в облаках, так как здесь происходят все транcформации.
Предметом являются все артефакты данной области:
- Техническая документация.
- Объекты базы данных, модель.
- Реализованные трансформации (ETL).
- Процесс выполнения кода механизмами загрузки данных, обработка параметров, инициальная и дельта загрузка данных.
- Отчеты.
- Мониторинг и поддержание качества.
Стратегии:
За основу можно взять стратегии, которые предложил Jeff Theobal.
- Полнота данных - все ожидаемые данные загружаются
- Преобразование данных - все данные преобразуются правильно, в соответствии с бизнес-правилами и / или проектными спецификациями.
- Качество данных - ETL правильно осуществляет обработку значений по-умолчанию, исправляет или игнорирует неверные данные.
- Производительность и масштабируемость - загрузка дынных осуществляется в пределах ожидаемого времени, техническая архитектура является масштабируемой.
- Интеграция - реализованный ETL работает с другими, уже реализованными, процессами загрузки данных.
- Приемо-сдаточные испытания - реализованное решение соответствует ожиданиям пользователей.
- Регрессия и мониторинг - обеспечение работоспособности функциональности при каждом изменении кода.