Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Задание 2. Модульное тестирование Хранилищ Данных

Задания для отборочного тура

За каждое задание, выполненное даже частично начисляются баллы. Необязательно решить все приведенные задания. Отбор будет осуществляться по набранным баллам. Задание «Подготовка к Хакатону» обязательно для выполнения, чтобы участвовать в Хакатоне.

Формат решения:

По каждому пункту

1. Работающая программа/скрипт

2. Исходный код и все линкующиеся библиотеки,

a. Инструкции по сборке; сборка должна осуществляться успешно.

3. Эксплуатационная документация

a. С описанием допущений и ограничений

4. Тестовые данные и/или скрипты создающие тестовые данные (таблицы, данные, …)

Задание 0. Разминка по Базам Данных

 

Задание 0.1 Дубли 2 балла.

В таблице две колонки с натуральными числами – на SQL найти дубли.

Задание 0.2 Выборка клиентов без счетов 3-6 баллов.

Есть таблица с клиентами с id_client и таблица со счетами, связанная с таблицей клиентов по id_client.

1. Предложить три варианта запроса на SQL для поиска и удаления счетов, у которых нет клиентов. 3 балла

2. В таблице клиентов 100 млн. записей, в таблице счетов 1 млрд.

a. Выбрать и оптимизировать самый производительный запрос. 3 балла

Задание 0.3 3. Колодцы на планете до 10 баллов.

1. Спроектировать БД для хранения карты планеты, разбитой на сектора (заданного размера, например, 1км*1км) 1 балл

2. Сектор с колодцем помечается признаком – подготовить тестовые данные 2 балла

3. Разработать несколько вариантов поиска ближайшего колодца (расстояние по прямой) (на вход: сектор текущего местоположения) 2 балла

a. Выбрать самый оптимальный из вариантов – обосновать 1 балл

b. Оптимизировать выбранный алгоритм 2 балла

c. Оптимизировать структуру хранения 2 балла

Задание 1. Разработка Хранилищ Данных

 

Задание 1.1 Версионный контроль вообще 10 баллов.

Написать программу, которая для определенной ветки Git (любой системы контроля версий):

определяет и выдает, в виде отчета, список всех удаленных, измененных и добавленных файлов.

(если файл был сначала добавлен, потом удален – его выдавать не надо).

Придумать: как отображать переименованные файлы.

Можно сделать два варианта – либо за всю историю ветки, либо за какой-то интервал дат.

 

Задание 1.2 Версионный контроль Баз Данных 20 баллов.

Есть таблица TAB в схеме PROM, содержит миллион записей. Есть таблица TAB в схеме DEV, с более новой структурой, с данными, которые переносить на PROM не следует.

 

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

 

В скрипте должны быть команды:

- ALETER TABLE TAB CHANGE COLUMN…

- ALETER TABLE TAB ADD COLUMN…

- команды (пере)создания индексов и ключей;

- команды переноса данных;

- ALETER TABLE TAB DROP COLUMN

- …

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

 

Обязательно учесть следующий случай:

Расщепляется поле FULL_PHONE на PHONE_PREFIX и PHONE_NUMBER:

ALTER TABLE TAB ADD COLUMN PHONE_PREFIX VARCHAR(10);

ALTER TABLE TAB ADD COLUMN PHONE_NUMBER VARCHAR(20);

UPDATE TAB SET PHONE_PREFIX = SUBSTR(FULL_PHONE, 1, 10), PHONE_NUMBER = SUBSTR(FULL_PHONE, 11) WHERE FULL_PHONE is not null;

ALTER TABLE TAB DROP COLUMN FULL_PHONE;

 

Дополнительные баллы (10): написать скрипт переноса данных с PROM на DEV. На DEV потенциально изменённая структура БД. Учесть изменение типа поля и расщепление полей (в ту и обратную сторону).

Дополнительные баллы (5): написать скрипт проверки переноса данных.

 

 

Задание 1.3 Версионный контроль Баз Данных – сложная от 63 баллов

Есть несколько команд, разрабатывающих одновременно, как DDL, так и DML, хранимые процедуры, …

Предложить процесс организации стендов разработки и версионного контроля кода.

И реализовать скрипты (за каждый скрипт и его функциональность – дополнительные баллы):

- merge DDL и прочего кода (10);

- поиска конфликтов (3);

- автоматического решения конфликтов (20);

- генерации alter скриптов с безопасной миграцией данных на новую версию БД (20);

- контроль корректности перехода и переноса данных на новую версию БД (10);

- какие еще скрипты для автоматизации рутинных задач, ускорения разработки и повышения качества можете предложить (решает жюри).

Описать допущения и требования к организации процесса и функционирования скриптов.

 

Задание 1.4 Версионный контроль Хранилищ Данных макс 115

В дополнение к контролю версий Базы данных, разработать подход и необходимые скрипты для проверок, переноса, merge, … кода для компонент:

· ETL типа Informatica Power Center, формат файлов: xml; (10)

o ETL/ELT на хранимых процедурах; (5)

· скрипты на Python; (5)

· jar, разработанные на Java; (5)

· отчеты на SAP Business Object (можно использовать его API); (15)

o предложить реализацию сравнения/выявления изменений между biar и между universe разных версий (15)

· отчеты на Qlik View и Sense. (15)

Скрипты для создания инкрементальных патчей (дистрибутивов). (20)

Скрипты для создания кумулятивных патчей (дистрибутивов). (25)

Описать допущения и требования к организации процесса и функционирования скриптов.

 

Задание 2. Модульное тестирование Хранилищ Данных

Задание 2.1 Организация модульного тестирования Хранилищ Данных (100)

· Предложить подходы к тестированию хранилища данных, а именно:

· Какие виды тестов можно реализовать для основных сущностей хранилища: таблиц, представлений, процедур?

· Какие виды тестов для загрузки данных (ETL), расчёта витрин и построения отчетов?

· По какому принципу разделять хранилище данных на модули?

· Осуществить разделение на модули:
перечислить модули и основную функцию, а также какие есть связи с каким модулями.

o Над какими модулями, их интерфейсами, и на каком этапе, проводить модульное тестирование?

o Упорядочить по убыванию приоритета необходимости тестирования.

· Организация стендов и контроля версий для разработки хранилища данных несколькими командами; для модульного тестирования, интеграционного тестирования, …

· С чем (какими данными, эталонами, прототипами и т.д.) проводить сравнение полученных результатов при проведении модульных тестов?

o Будут ли различия при тестировании нового функционала или изменении старого?

· Как можно протестировать датафикс (только изменение данных) в хранилище данных?

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...