43
Особенности тестирования ETL-процессов Сергей Сташенко, Luxoft.

Особенности тестирования ETL-процессов

  • Upload
    sqalab

  • View
    796

  • Download
    3

Embed Size (px)

DESCRIPTION

Презентация доклада Сергея Сташенко на конференции SQADays-14, Львов 8-9 ноября 2013

Citation preview

Особенности тестированияETL-процессов

Сергей Сташенко, Luxoft.

О себе

• в тестировании с 2009 года• тренер в УЦ Люксофт• Skype: stashenko_s• e-mail: [email protected]

О проекте

О проекте

• ≈ 350 бизнес-аттрибутов• ≈ 50 служебных аттрибутов

О проекте

Что такое ETL?

ETL

• ETL (Extract, Transform, Load) – процесс, выполняющий три различных этапа при обработке данных:– Извлечение данных из одного или нескольких

различных источников

– Трансформация данных (например, очистка, переформатирование, агрегация, стандартизация, применение бизнес-правил)

– Загрузка результирующих данных в другие системы или файловые форматы

ETL

ERP

CRM Staging Data Warehouse

ETL

ETL

ETL

ETL ETL

ETL

ETL

Как работает?

Извлечение данных

Источники данных:– Файлы (TXT, DSV(CSV), XLS, XML,EDIFACT)– Другие системы / БД– Веб-сервисы– JMS

Типы трансформаций данных

• Копирование (перенос данных)

Типы трансформаций данных

• Конвертация типов

1.2(U+002E) 1,2(U+002C)

1٫2(U+066B)

:) :) Oo

Типы трансформаций данных

• Декодирование данных

Типы трансформаций данных

• Вычисление и создание новых значений

Операция Precision Scale

e1 ± e2 max(s1, s2) + max(p1-s1, p2-s2) + 1 max(s1, s2)

e1 * e2 p1 + p2 + 1 s1 + s2

e1 / e2 P S

e1 { UNION | MINUS | INTERSECT } e2

max(s1, s2) + max(p1-s1, p2-s2) max(s1, s2)

MOD (e1,e2) min(p1-s1, p2 -s2) + max( s1,s2 ) max(s1, s2)

Типы трансформаций данных

• Конкатенация – операция «склейки» объектов линейной структуры

Что будет в случае отсутствия операндов?

Типы трансформаций данных

• Разделение/парсинг данных

Всё что угодно, имеющее «синтаксис»,

поддается парсингу

Типы трансформаций данных

• Фильтры

Минимальное покрытие: Decision/Condition coverage

Типы трансформаций данных

• Роутеры – набор независимых фильтров

Типы трансформаций данных

• Конвертация структур данных

Требования

Mapping rules

• Что?

• Откуда?

• Куда?

• Как?

Matching rules

Как найти одни и те же данные

в разных источниках?

Методы matching’а

• Стандартизация и нормализация данных

• Детерминированная связка

• Вероятностная связка

Merging rules

• Как именно объединить новые и существующие данные?

Что и как тестировать?

Аномалии в ETL-процессах

• NULL

Аномалии в ETL-процессах

• Аномальная длина значений в полях

Аномалии в ETL-процессах

• Цикличная смена данных

Аномалии в ETL-процессах

• Аномальные объемы данных

Аномалии в ETL-процессах

• Присутствие случайных событий

Точечное тестирование

• Точечное тестирование – проверка функциональности с использованием минимального количества данных

(например, одна входящая строка из файла)

• Позволяет быстро найти ошибки, которые с большой степенью вероятности будут присутствовать и для любых других данных

• Применяется как при позитивном, так и при негативном тестировании

Полно-объемное тестирование

• Полно-объемное тестирование – тестирование, при котором проверяется максимально возможный набор данных

• Позволяет заметить особые, а иногда и единичные случаи аномалий, которые маловероятно заметить при точечном тестировании

• Рекомендуется при позитивном тестировании

Использование “индикаторов”

• Для определения покрытия существующих данных новыми данными

• Для обнаружения событий

Окружение

• Тестирование в статическом окружении

• Тестирование

в динамическом окружении

Подготовка данныхvs

Выполнение тестов

20 тест-кейсов за один раз?

Легко!

Подготовка тестовых данных

• Создание тестовых данных «с нуля»

• Поиск подходящих данных

• Модификация существующих данных

Регрессионное тестирование

• Вместо выполнения регрессионных тестов можно использовать метод сравнения данных до и после некоего изменения

• Количественное сравнение – сравнение количества записей/сущностей до и после изменения

• Качественное сравнение – сравнение значений записей после изменения с эталоном

• Качественное сравнение должно быть двухсторонним:

SELECT COLUMN1, COLUMN2, COLUMN3,… FROM DATA_SET_OLDMINUS (EXCEPT)SELECT COLUMN1, COLUMN2, COLUMN3,… FROM DATA_SET_NEW

SELECT COLUMN1, COLUMN2, COLUMN3,… FROM DATA_SET_NEWMINUS (EXCEPT)SELECT COLUMN1, COLUMN2, COLUMN3,… FROM DATA_SET_OLD

Регрессионное тестирование

• Некоторые столбцы, возможно, следует исключить

• Подход эффективен, если эталон создан после «настоящего» регрессионного тестирования

• Разница между эталоном и новым набором данных может быть вызвана новой функциональностью

Регрессионное тестирование

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

• Отличия от приложений:– Нет клиентской части– Нет пользователей ETL процесса

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

• Метрики:– Нагрузка на сервер БД– Нагрузка на сервер ETL-процессов– Время выполнения отдельных элементов (сессий)– Скорость обработки записей/файлов (для всего

процесса/для отдельных элементов)

• Типичное бизнес-требование:– Готовность данных к определенному времени

Сложности

• Unit-тесты (размытое понятие unit’а)

• Одновременное тестирование несколькими тестировщиками (иногда, мешаем друг другу)

• Сложность автоматизации (фактически, нужно реализовать тот же ETL)

• Тестирование без GUI