2013-04-20 2 views
7

Я новичок в работе с базой данных SQL, но столкнулся с тестированием моей базы данных. По соображениям безопасности любые запросы или обновления выполняются с помощью хранимых процедур.SQL Unit Тестирование хранимых процедур

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

+1

Альтернативный способ тестирования хранимых процедур базы данных - [DBUnit] (http://www.dbunit.org/) – flup

ответ

8

Я нашел отличное решение с помощью Visual Studio: Visual Studio Unit Testing

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

1

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

  1. Создайте пустую базу данных, конечно, ту же структуру, что и исходная.
  2. Подготовьте данные (импортируйте некоторые данные из исходной базы данных).
  3. Вызовите хранимую процедуру.
  4. Затем посмотрите данные, если они верны или нет.

Иногда пишут некоторые заявления утверждают, как в

IF EXISTS (SELECT * FROM XX INNER JOIN XXX ON XXXXXXXX WHERE XXX=XXX) 
    RAISEERROR XXXXXX 

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

Но это пустая трата времени.

Обычно я проверяю весь путь выполнения хранимой процедуры большую часть времени и просто проверяю основные ожидающие точки ошибки.

1

Я использовал TST в качестве основы тестирования SQL Server с очень положительными результатами. Он работает хорошо, и я мог бы интегрировать его как часть нашей CI-среды в Team City.

Ключ должен быть очень осторожным при настройке тестовых данных. Независимо от того, какую тестовую структуру вы выберете, обязательно примените шаблон Data Data Builder. Если вы этого не сделаете, вы можете очень быстро получить некоторые проблемы рефакторинга теста.

5

Помимо DbUnit и NUnit вы можете использовать tSQLt, если вам нравится написать tsql. tSQLt - это структура с открытым исходным кодом, написанная в tsql для написания единичных тестовых примеров для tsql.

1

DbUnit от dbunit.org - хорошая структура. Другими полезными инструментами являются TSqlUnit и tsqlt от tsqlt.org.

Смежные вопросы