Upload
sqalab
View
796
Download
3
Embed Size (px)
DESCRIPTION
Презентация доклада Сергея Сташенко на конференции SQADays-14, Львов 8-9 ноября 2013
Citation preview
О себе
• в тестировании с 2009 года• тренер в УЦ Люксофт• Skype: stashenko_s• e-mail: [email protected]
ETL
• ETL (Extract, Transform, Load) – процесс, выполняющий три различных этапа при обработке данных:– Извлечение данных из одного или нескольких
различных источников
– Трансформация данных (например, очистка, переформатирование, агрегация, стандартизация, применение бизнес-правил)
– Загрузка результирующих данных в другие системы или файловые форматы
Извлечение данных
Источники данных:– Файлы (TXT, DSV(CSV), XLS, XML,EDIFACT)– Другие системы / БД– Веб-сервисы– JMS
Типы трансформаций данных
• Вычисление и создание новых значений
Операция 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)
Типы трансформаций данных
• Конкатенация – операция «склейки» объектов линейной структуры
Что будет в случае отсутствия операндов?
Типы трансформаций данных
• Разделение/парсинг данных
Всё что угодно, имеющее «синтаксис»,
поддается парсингу
Методы matching’а
• Стандартизация и нормализация данных
• Детерминированная связка
• Вероятностная связка
Точечное тестирование
• Точечное тестирование – проверка функциональности с использованием минимального количества данных
(например, одна входящая строка из файла)
• Позволяет быстро найти ошибки, которые с большой степенью вероятности будут присутствовать и для любых других данных
• Применяется как при позитивном, так и при негативном тестировании
Полно-объемное тестирование
• Полно-объемное тестирование – тестирование, при котором проверяется максимально возможный набор данных
• Позволяет заметить особые, а иногда и единичные случаи аномалий, которые маловероятно заметить при точечном тестировании
• Рекомендуется при позитивном тестировании
Использование “индикаторов”
• Для определения покрытия существующих данных новыми данными
• Для обнаружения событий
Подготовка тестовых данных
• Создание тестовых данных «с нуля»
• Поиск подходящих данных
• Модификация существующих данных
Регрессионное тестирование
• Вместо выполнения регрессионных тестов можно использовать метод сравнения данных до и после некоего изменения
• Количественное сравнение – сравнение количества записей/сущностей до и после изменения
• Качественное сравнение – сравнение значений записей после изменения с эталоном
• Качественное сравнение должно быть двухсторонним:
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
• [email protected]• http://www.linkedin.com/in/sergiystashenko