'

Разработка, тестирование и развертывание баз данных в Visual Studio Team System 2010

Понравилась презентация – покажи это...





Слайд 0

Разработка, тестирование и развертывание баз данных в Visual Studio Team System 2010 Дмитрий Андреев dmitryan@microsoft.com


Слайд 1

Содержание Введение Проект БД и жизненный цикл БД Генерация тестовых данных Юнит-тестирование Управление изменениями Развертывание Заключение


Слайд 2

Очень важные вопросы Где находится «истинная» схема? Эксплуатационная база? Что насчет исправлений? Что будем делать с следующей версией? Как вести версии базы данных? Что делать с тестовыми данными? Как проверить логику базы данных? Какие средства использовать для сравнения схем? Как развертывать БД и как делать апгрейд?


Слайд 3

Visual Studio 2010 Проблема Где «истинная» схема? Как вести версии? Как проводить тестирование? Как управлять изменениями? Решение Где угодно. Схема это исходный проект. Так же как и в привычных программных проектах. Генерация тестовых данных. Юнит тестирование баз данных. Рефакторинг, сравнение схем.


Слайд 4

Правда о «истинной схеме» Эксплуатационная база – единственная верная схема соответствующая версии вашей эксплуатационной системы Возможны исправления для этой базы. Разработка будущей версии ведется безотносительно к эксплуатационной версии Патч для эксплуатационной версии это возникновение: Новой эксплуатационной версии базы Новой версии эксплуатационной системы Патч+«Старая версия БД»=релиз билд


Слайд 5

Содержание Введение Проект БД и жизненный цикл БД Генерация тестовых данных Юнит-тестирование Управление изменениями Развертывание Заключение


Слайд 6

Проектная модель Проект базы данных (Visual Studio Project) отражает эволюционирующую схему Проект содержит DDL скрипты (*.SQL файлы) Контроль версий ведется на уровне исходных текстов этих скриптов Ключ к успеху: Автоматическая генерация тестовых данных Юнит тестирование


Слайд 7

Жизненный цикл SQL Server Database Database Project Template SQL Script Database Project Импорт схемы Создание нового проекта Реверс существующего скрипта


Слайд 8

Жизненный цикл: классика ALM Database Project Edit Refactor Compare Data Gen Test Compare Build Deploy


Слайд 9

Проблема с контролем версий CREATE TABLE dbo.Auction ( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL ) class AuctionApplication ( int id; void MethodA(); ) class AuctionApplication ( int id; void MethodA(); void MethodB(); ) class AuctionApplication ( int id; string cacheTitle; void MethodA(); void MethodB(); ) Revision History V 1 V 2 V 3 ALTER TABLE dbo.Auction WITH CHECK ADD CONSTRAINT Au_PK PRIMARY KEY (id) ALTER TABLE dbo.Auction WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name)


Слайд 10

Ручное ведение версий -- version 1 Add table dbo.Auction IF OBJECT_ID (N'dbo.Auction', N'U') IS NULL BEGIN CREATE TABLE dbo.Auction ( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL ) END -- version 2 Add PK Au_PK IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_PK' AND type = 'PK') BEGIN ALTER TABLE Auction WITH CHECK ADD CONSTRAINT Au_PK PRIMARY KEY (id) END -- version 3 Add UC Au_SK IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_SK' AND type = ‘UQ') BEGIN ALTER TABLE Auction WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name) END


Слайд 11

Верный подход к ведению версий CREATE TABLE dbo.Auction ( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL ) class AuctionApplication ( int id; void MethodA(); ) class AuctionApplication ( int id; void MethodA(); void MethodB(); ) class AuctionApplication ( int id; string cacheTitle; void MethodA(); void MethodB(); ) Revision History V 1 V 2 V 3 CREATE TABLE dbo.Auction ( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL ) CREATE TABLE dbo.Auction ( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL UNIQUE, start DATETIME NULL, len INT NULL )


Слайд 12

Инкрементальное Развертывание CREATE TABLE dbo.Auction ( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL UNIQUE, start DATETIME NULL, len INT NULL ) CREATE TABLE dbo.Auction ( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL ) CREATE TABLE dbo.Auction ( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL ) Revision History V 1 V 2 V 3 CREATE TABLE dbo.Auction ( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL UNIQUE, start DATETIME NULL, len INT NULL ) ALTER TABLE dbo.Auction WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name)


Слайд 13


Слайд 14

Содержание Введение Проект БД и жизненный цикл БД Генерация тестовых данных Юнит-тестирование Управление изменениями Развертывание Заключение


Слайд 15

Тестовые данные и Q&A Почему бы не использовать эксплуатационные данные? Они могут быть не верны! Не позволят протестировать «острые углы». Не позволят проверить изменения в схемах данных! Какие тестовые данные необходимы? Случайные! Детерминируемые. Распределенные соответствующим образом Количественно (сто первичных ключей -> десять тысяч дочерних записей) Качественно (длина строк, границы числовых значений и дат,…)


Слайд 16

Тестовые данные и Q&A Какие отличия необходимы для тестовых данных Функциональные Нагрузочные Версионирование Необходимы разные тестовые данные и тесты для разных схем Необходимы даже разные тестовые планы для одной и той же схемы


Слайд 17

Генерация тестовых данных Основные инструменты Генерация данных для таблиц Количество записей Генераторы для различных типов полей String, RegEx, data bound Можно написать свой собственный генератор Тонкие настройки генераторов


Слайд 18


Слайд 19

Содержание Введение Проект БД и жизненный цикл БД Генерация тестовых данных Юнит-тестирование Управление изменениями Развертывание Заключение


Слайд 20

Юнит тестирование Автоматическая генерация юнит-тестов для Хранимых процедур, Функций, Триггеров Валидация результатов тестов (asserts) T-SQL Server based RAISEERROR Ожидаемые значения Не пустые результаты Количество записей Время выполнения Предварительные и пост скрипты


Слайд 21

Юнит тестирование Автоматизированное развертывание Перед запуском тестов будет сформирована БД По соответствующему плану генерации тестовых данных будет создана основа для проверки


Слайд 22


Слайд 23

Содержание Введение Проект БД и жизненный цикл БД Генерация тестовых данных Юнит-тестирование Управление изменениями Развертывание Заключение


Слайд 24

Управление изменениями Рефакторинг Сравнение схем Сравнение данных


Слайд 25


Слайд 26

Содержание Введение Проект БД и жизненный цикл БД Генерация тестовых данных Юнит-тестирование Управление изменениями Развертывание Заключение


Слайд 27

Развертывание Стандартный подход Генерация скриптов изменений Через сравнение схемы Взаимодействие с администратором БД Новый подход Представляем: Data Tier Application Project System


Слайд 28

Database Project vs. Data Tier Project Data-tier Application Project V1 Стандартный проект БД .sql


Слайд 29

Database Project vs. Data Tier Project


Слайд 30

Разработка Развертывание MANAGE


Слайд 31


Слайд 32

Содержание Введение Проект БД и жизненный цикл БД Генерация тестовых данных Юнит-тестирование Управление изменениями Развертывание Заключение


Слайд 33

Заключение Разработка БД может быть полностью интегрирована в стандартный процесс ALM Инструментальные средства позволяют легко создавать объекты БД благодаря IntelliSense, встроенному отладчику Гибкие варианты развертывания могут снизить затраты на управление эксплуатационными БД


Слайд 34


×

HTML:





Ссылка: