Динамически создание копии базы данных для тестирования - PullRequest
0 голосов
/ 22 июня 2010

Я собираюсь создать интеграционные тесты для моего приложения.Я хочу, чтобы мои интеграционные тесты были выполнены не в производственной БД.Я хочу, чтобы перед началом выполнения теста мой сервер непрерывной интеграции (город команды) создал копию моей базы данных, и на ней будут выполнены интеграционные тесты.Любые подходы или лучшие практики?

РЕДАКТИРОВАТЬ:

Я хотел бы автоматизировать этот процесс (любые ссылки на статьи или форумы).

Ответы [ 4 ]

2 голосов
/ 22 июня 2010

Вот шаги, которые я бы сделал

  1. Резервное копирование и восстановление производственной базы данных на сервер интеграции.
  2. Удаление / сброс личной информации (кредитные карты, ssn, пароли) избаза данных интеграции, чтобы тестеры не работали с фактическими производственными данными

Поскольку вы используете SQL Server, это довольно легко сделать с помощью SSIS.

Шаги:

  1. Создание пакета служб SSIS
  2. Добавление задачи для копирования базы данных или резервного копирования базы данных восстановления из производства в интеграцию
  3. Добавление задач запроса для каждой операции очистки таблицы
  4. Сохранениепакет на SQL Server
  5. Запуск задания из SQL Server или создание задания в планировщике SQL для периодического запуска

Чтобы узнать о службах SSIS, хорошей книгой является SQL Server Integration Services StepПо шагам от Microsoft Press.

Хорошие форумы для SQL Server

1 голос
/ 22 июня 2010

В настоящее время я работаю над тем же заданием. Я установил nant на свою машину, а затем создал следующие папки

./servername/databasename/release
./servername/databasename/restore
./servername/databasename/rollback
./servername/databasename/test

Затем планируется создать nant целей для каждой задачи (выпуск, восстановление, откат, тестирование).

./servername/databasename/restore/000001.set_database_offline.sql
./servername/databasename/restore/000002.restore_database.sql
./servername/databasename/restore/000003.fix_orphaned_logins.sql
./servername/databasename/restore/000004.do_some_operation_example_upgrade_table_x.sql

Затем я создаю все свои скрипты с числовыми префиксами, чтобы контролировать последовательность выполнения. Идея заключается в том, чтобы создавать задачи сборки, названные так, чтобы они соответствовали моим папкам, поэтому я могу просто выполнить команды, перечисленные ниже, которые быстро выполнят все сценарии в каталогах.

nant restore
nant release
nant rollback
nant test

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

Дайте мне знать, если вы решите пойти по тому же пути. Было бы здорово сотрудничать и делиться простым повторяемым процессом.

Причины для этого: 1. Автоматизация 2. Повторяемость 3. Согласованность 4. Добавьте весь код в Source Control

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

С уважением,

1 голос
/ 22 июня 2010

Вы, вероятно, не хотите, чтобы сервер сборки касался рабочей БД (я, конечно, не буду).

Я бы создал задание для загрузки вашей базы данных из файла .bak или из сценариев (вы, вероятно, можете сделать это, если она не станет слишком большой) и запустить задание до запуска ваших тестов.

0 голосов
/ 22 июня 2010

Я занимаюсь именно этим как минимум два года.Это не сложно.Я создаю свою тестовую базу данных из скрипта, заполняю тестовые данные также из скрипта, все вызываются из шага NUnit FixtureSetup.Никаких проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...