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

Задание 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...