Разработка, тестирование и развертывание баз данных в VisualStudio Team System 2010<br />Дмитрий Андреев<br />dmitryan@mic...
Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Упр...
Очень важные вопросы<br />Где находится «истинная» схема?<br />Эксплуатационная база?<br />Что насчет исправлений?<br />Чт...
Visual Studio 2010<br />Проблема<br />Где «истинная» схема?<br />Как вести версии?<br />Как проводить тестирование?<br />К...
Правда о «истинной схеме»<br />Эксплуатационная база – единственная верная схема соответствующая версии вашей эксплуатацио...
Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Упр...
Проектная модель<br />Проект базы данных (Visual Studio Project) отражает эволюционирующую схему<br />Проект содержит DDL ...
Жизненный цикл<br />SQL Server Database<br />Импорт схемы<br />Database<br />Project<br />Database<br />Project <br />Temp...
Жизненный цикл: классика ALM<br />Edit<br />Refactor<br />Compare<br />Deploy<br />Build<br />Database<br />Project<br />D...
Проблема с контролем версий<br />Database<br />class AuctionApplication<br />( <br /> int id;<br /> void MethodA();<br />)...
Ручное ведение версий<br />-- version 1 Add table dbo.Auction<br />IF OBJECT_ID (N'dbo.Auction', N'U') IS NULL<br />BEGIN<...
Верный подход к ведению версий<br />class AuctionApplication<br />( <br /> int id;<br /> void MethodA();<br />)<br />class...
Инкрементальное Развертывание<br />Эксплуатируемая система<br />Новая система<br />CREATE TABLE dbo.Auction<br />( <br /> ...
Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Упр...
Тестовые данные и Q&A<br />Почему бы не использовать эксплуатационные данные?<br />Они  могут быть не верны!<br />Не позво...
Тестовые данные и Q&A<br />Какие отличия необходимы для тестовых данных<br />Функциональные<br />Нагрузочные<br />Версиони...
Генерация тестовых данных<br />Основные инструменты<br />Генерация данных для таблиц<br />Количество записей<br />Генерато...
Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Упр...
Юнит тестирование<br />Автоматическая генерация юнит-тестов для <br />Хранимых процедур, Функций, Триггеров<br />Валидация...
Юнит тестирование<br />Автоматизированное развертывание<br />Перед запуском тестов будет сформирована БД<br />По соответст...
Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Упр...
Управление изменениями<br />Рефакторинг<br />Сравнение схем<br />Сравнение данных<br />
Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Упр...
Развертывание<br />Стандартный подход<br />Генерация скриптов изменений<br />Через сравнение схемы<br />Взаимодействие с а...
Database Project vs. Data Tier Project<br />Data-tier Application Project V1<br />Стандартный проект БД<br />Visual Studio...
Database Project vs. Data Tier Project<br />
Разработка<br />Развертывание<br />MANAGE<br />SQL Server Management Studio<br />FinApp<br />Dev DB<br />1<br />Deploy /<b...
Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Упр...
Заключение<br />Разработка БД может быть полностью интегрирована в стандартный процесс ALM<br />Инструментальные средства ...
Разработка, тестирование и развертывание баз данных в Visual Studio Team System 2010
Upcoming SlideShare
Loading in …5
×

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

2,427 views

Published on

Майкрософт, по совету наших пользователей, пересмотрел линейку продуктов VSTS и объединил издание для разработчиков с изданием для баз данных. VSTS 2010 предоставляет разработчикам ряд возможностей для улучшения процесса разработки БД, упрощения работы со структурами баз данных, генерации тестовых данных и организации развертывания и тестирования с помощью инструментария по управлению сборками. Интерпретация схемы объектов и взаимозависимостей между объектами БД позволяет разработчикам находить и устранять ошибки на более ранних стадиях проектирования. Интеграция исходников БД и кода приложения значительно упростит процесс разработки без дополнительных материальных затрат.

В докладе будет рассказано о том, как организовать процесс разработки базы данных в Visual Studio Team System 2010 в контексте новых возможностей.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,427
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Разработка, тестирование и развертывание баз данных в VisualStudio Team System 2010<br />Дмитрий Андреев<br />dmitryan@microsoft.com<br />
  2. 2. Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Управление изменениями<br />Развертывание<br />Заключение<br />
  3. 3. Очень важные вопросы<br />Где находится «истинная» схема?<br />Эксплуатационная база?<br />Что насчет исправлений?<br />Что будем делать с следующей версией?<br />Как вести версии базы данных?<br />Что делать с тестовыми данными?<br />Как проверить логику базы данных?<br />Какие средства использовать для сравнения схем?<br />Как развертывать БД и как делать апгрейд?<br />
  4. 4. Visual Studio 2010<br />Проблема<br />Где «истинная» схема?<br />Как вести версии?<br />Как проводить тестирование?<br />Как управлять изменениями?<br />Решение<br />Где угодно. Схема это исходный проект.<br />Так же как и в привычных программных проектах.<br />Генерация тестовых данных. Юнит тестирование баз данных.<br />Рефакторинг, сравнение схем.<br />
  5. 5. Правда о «истинной схеме»<br />Эксплуатационная база – единственная верная схема соответствующая версии вашей эксплуатационной системы<br />Возможны исправления для этой базы.<br />Разработка будущей версии ведется безотносительно к эксплуатационной версии<br />Патч для эксплуатационной версии это возникновение:<br />Новой эксплуатационной версии базы<br />Новой версии эксплуатационной системы<br />Патч+«Старая версия БД»=релиз билд<br />
  6. 6. Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Управление изменениями<br />Развертывание<br />Заключение<br />
  7. 7. Проектная модель<br />Проект базы данных (Visual Studio Project) отражает эволюционирующую схему<br />Проект содержит DDL скрипты (*.SQL файлы)<br />Контроль версий ведется на уровне исходных текстов этих скриптов<br />Ключ к успеху:<br />Автоматическая генерация тестовых данных<br />Юнит тестирование<br />
  8. 8. Жизненный цикл<br />SQL Server Database<br />Импорт схемы<br />Database<br />Project<br />Database<br />Project <br />Template<br />Создание нового проекта<br />Реверс существующего<br />скрипта<br />SQL Script<br />
  9. 9. Жизненный цикл: классика ALM<br />Edit<br />Refactor<br />Compare<br />Deploy<br />Build<br />Database<br />Project<br />Data Gen<br />Test<br />Compare<br />
  10. 10. Проблема с контролем версий<br />Database<br />class AuctionApplication<br />( <br /> int id;<br /> void MethodA();<br />)<br />class AuctionApplication<br />( <br /> int id;<br /> void MethodA();<br />void MethodB();<br />)<br />class AuctionApplication<br />( <br /> int id;<br />string cacheTitle; <br /> void MethodA();<br />void MethodB();<br />)<br />V 2<br />V 3<br />Revision History<br />V 1<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL,<br /> name VARCHAR(25) NOT NULL,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />ALTER TABLE dbo.Auction<br />WITH CHECK ADD CONSTRAINT<br />Au_PK PRIMARY KEY (id)<br />ALTER TABLE dbo.Auction<br /> WITH CHECK ADD CONSTRAINT<br />Au_SK UNIQUE (name)<br />App<br />
  11. 11. Ручное ведение версий<br />-- version 1 Add table dbo.Auction<br />IF OBJECT_ID (N'dbo.Auction', N'U') IS NULL<br />BEGIN<br />CREATE TABLE dbo.Auction<br />(<br /> id INT NOT NULL,<br /> name VARCHAR(25) NOT NULL,<br /> start DATETIME NULL,<br />len INT NULL<br />)<br />END<br />-- version 2 Add PK Au_PK<br />IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_PK' AND type = 'PK')<br />BEGIN<br /> ALTER TABLE Auction <br /> WITH CHECK ADD CONSTRAINT Au_PK PRIMARY KEY (id)<br />END<br />-- version 3 Add UC Au_SK<br />IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_SK' AND type = ‘UQ')<br />BEGIN<br /> ALTER TABLE Auction <br /> WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name)<br />END<br />
  12. 12. Верный подход к ведению версий<br />class AuctionApplication<br />( <br /> int id;<br /> void MethodA();<br />)<br />class AuctionApplication<br />( <br /> int id;<br /> void MethodA();<br />void MethodB();<br />)<br />class AuctionApplication<br />( <br /> int id;<br />string cacheTitle;<br /> void MethodA();<br />void MethodB();<br />)<br />LogicalDatabase<br />V 2<br />V 3<br />Revision History<br />V 1<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL,<br /> name VARCHAR(25) NOT NULL,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL PRIMARY KEY,<br /> name VARCHAR(25) NOT NULL,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL PRIMARY KEY,<br /> name VARCHAR(25) NOT NULL UNIQUE,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />App<br />
  13. 13. Инкрементальное Развертывание<br />Эксплуатируемая система<br />Новая система<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL,<br /> name VARCHAR(25) NOT NULL,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL PRIMARY KEY,<br /> name VARCHAR(25) NOT NULL,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL PRIMARY KEY,<br /> name VARCHAR(25) NOT NULL UNIQUE,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />Логическая база<br />V 2<br />V 3<br />Revision History<br />V 1<br />CREATE TABLE dbo.Auction<br />( <br /> id INT NOT NULL PRIMARY KEY,<br /> name VARCHAR(25) NOT NULL UNIQUE,<br /> start DATETIME NULL,<br /> len INT NULL<br />)<br />ALTER TABLE dbo.Auction<br /> WITH CHECK ADD CONSTRAINT<br /> Au_SK UNIQUE (name)<br />
  14. 14.
  15. 15. Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Управление изменениями<br />Развертывание<br />Заключение<br />
  16. 16. Тестовые данные и Q&A<br />Почему бы не использовать эксплуатационные данные?<br />Они могут быть не верны!<br />Не позволят протестировать «острые углы».<br />Не позволят проверить изменения в схемах данных!<br />Какие тестовые данные необходимы?<br />Случайные!<br />Детерминируемые.<br />Распределенные соответствующим образом<br />Количественно (сто первичных ключей -> десять тысяч дочерних записей)<br />Качественно (длина строк, границы числовых значений и дат,…)<br />
  17. 17. Тестовые данные и Q&A<br />Какие отличия необходимы для тестовых данных<br />Функциональные<br />Нагрузочные<br />Версионирование<br />Необходимы разные тестовые данные и тесты для разных схем<br />Необходимы даже разные тестовые планы для одной и той же схемы<br />
  18. 18. Генерация тестовых данных<br />Основные инструменты<br />Генерация данных для таблиц<br />Количество записей<br />Генераторы для различных типов полей<br />String, RegEx, data bound<br />Можно написать свой собственный генератор<br />Тонкие настройки генераторов<br />
  19. 19.
  20. 20. Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Управление изменениями<br />Развертывание<br />Заключение<br />
  21. 21. Юнит тестирование<br />Автоматическая генерация юнит-тестов для <br />Хранимых процедур, Функций, Триггеров<br />Валидация результатов тестов (asserts)<br />T-SQL Server based<br />RAISEERROR<br />Ожидаемые значения <br />Не пустые результаты<br />Количество записей<br />Время выполнения<br />Предварительные и пост скрипты<br />
  22. 22. Юнит тестирование<br />Автоматизированное развертывание<br />Перед запуском тестов будет сформирована БД<br />По соответствующему плану генерации тестовых данных будет создана основа для проверки<br />
  23. 23.
  24. 24. Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Управление изменениями<br />Развертывание<br />Заключение<br />
  25. 25. Управление изменениями<br />Рефакторинг<br />Сравнение схем<br />Сравнение данных<br />
  26. 26.
  27. 27. Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Управление изменениями<br />Развертывание<br />Заключение<br />
  28. 28. Развертывание<br />Стандартный подход<br />Генерация скриптов изменений<br />Через сравнение схемы<br />Взаимодействие с администратором БД<br />Новый подход<br />Представляем: Data Tier Application Project System<br />
  29. 29. Database Project vs. Data Tier Project<br />Data-tier Application Project V1<br />Стандартный проект БД<br />Visual Studio<br />Visual Studio<br />Build<br />Build<br />.sql<br />Генерация скриптов<br />.dacpac<br />.dbschema<br />SQL Server 2008 R2<br />SQL Server 2005, 2008, 2008 R2<br />Deploy<br />Deploy<br />
  30. 30. Database Project vs. Data Tier Project<br />
  31. 31. Разработка<br />Развертывание<br />MANAGE<br />SQL Server Management Studio<br />FinApp<br />Dev DB<br />1<br />Deploy /<br />Upgrade DAC<br />Reverse Engineer DAC<br />2<br />SQL Server Management Studio<br />9<br />4<br />8<br />Visual Studio 2010<br />Manage, Register, Uninstall, Extract, Upgrade DAC<br />Control<br />Point<br />Create policies<br />DBA<br />DBA<br />7<br />3<br />Deploy /<br />Upgrade DAC<br />HR<br />.dacpac<br />Hand-off to DBA<br />Compile<br />+ Build<br />FinApp<br />Prod DB<br />6<br />Разработчик<br />SALES<br />5<br />Managed Instances<br />
  32. 32.
  33. 33. Содержание<br />Введение<br />Проект БД и жизненный цикл БД<br />Генерация тестовых данных<br />Юнит-тестирование<br />Управление изменениями<br />Развертывание<br />Заключение<br />
  34. 34. Заключение<br />Разработка БД может быть полностью интегрирована в стандартный процесс ALM<br />Инструментальные средства позволяют легко создавать объекты БД благодаря IntelliSense, встроенному отладчику<br />Гибкие варианты развертывания могут снизить затраты на управление эксплуатационными БД<br />

×