хранимые процедуры и тестирование - все еще проблема даже сегодня. Зачем? - PullRequest
2 голосов
/ 11 мая 2011

Прямо сейчас это просто теория, так что, если я ухожу, не стесняйтесь комментировать и давать некоторые идеи (я исчерпываю их).Я полагаю, что это скорее обновление этого вопроса , и когда я смотрю на список "связанных вопросов" - там много ответов 0.Это говорит о том, что есть настоящий пробел.

У нас много проблем с нашими настройками sql в целом, большинство из которых проистекают из хранимых процедур, которые превратились в монстров из ада, и некоторых других пользовательских функций, разбросанных по БД,Больше всего меня беспокоит то, что они абсолютно не проверены - когда что-то идет не так, никто не может со 100% уверенностью сказать: «Да, я точно знаю, что это работает».Делает отладку повторяющегося кошмара.

Сегодня днем ​​у меня появилась эта сумасшедшая идея, что мы могли бы начать писать некоторые сборки (CLR-йо!) Для SQL и тестировать их.Я столкнулся с ограничениями (только статическими методами, безопасными / внешними / небезопасными и т. Д.) И в целом, что все прошло не очень хорошо.По крайней мере, не так хорошо, как я надеялся, и не помогло мне приблизиться к своей цели.

Я также пытался настроить данные в тесте вручную (они попробовали это здесь еще до того, как я появился).Даже используя ORM для заполнения данных - это также становится довольно сложным очень быстро и хлопотами по обслуживанию.Конечно, большая часть этой боли связана с настройкой данных, а не с самим тестом.

Итак, что будет в 2011 году, что поможет исправить / обуздать эту проблему или мы (как разработчики) отказались от идеи тестирования?хранимые процедуры из-за высокой стоимости?

Ответы [ 4 ]

1 голос
/ 12 мая 2011

Мы добились большого успеха с DbFit .

Да, установка тестовых данных обходится дорого (ИМХО этого не избежать), ноПлатформа Fitnesse (на которой основан DbFit) позволяет вам повторно использовать сценарии заполнения данных, включая их в несколько тестов.

1 голос
/ 11 мая 2011

На самом деле вы можете создавать тесты хранимых процедур в качестве проекта.Наши DBE на работе делают это - вот ссылка, которая вам может понравиться: Модульное тестирование базы данных в Visual Studio

0 голосов
/ 12 мая 2011

Корпоративная культура правит днем.Некоторые места тестируются экстенсивно.В другом месте, ну, не так много.

Я заключил краткосрочный контракт с Fortune 500 несколько лет назад.Проектирование, сборка и развертывание внутри.Моя база данных должна была взаимодействовать с двумя устаревшими системами.С самого начала было ясно, что мне придется потратить больше времени на тестирование, чем обычно.(В некоторые дни запрос исторических данных возвращал 35 строк. В другие дни идентичный запрос возвращал 20 000 строк.)

Я создал в Microsoft Access инструмент для хранения и выполнения операторов SQL.(Доступ был единственным инструментом, который мне позволили использовать.) Я мог создать текущую версию базы данных, заполнить ее тестовыми данными и выполнить все созданные мной тесты - несколько сотен из них - примерно за 20 минут.,

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

0 голосов
/ 11 мая 2011

Может ли DBUnit помочь вам?

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

РЕДАКТИРОВАТЬ: После просмотра этого больше может показаться, что вам нужно что-то вроде SQLunit , а не DBUnit. SQLUnit описывается как

SQLUnit - это регрессия и единица измерения. проводка для тестирования базы данных хранимые процедуры. Тест SQLUnit Набор будет написан в виде файла XML. SQLUnit жгут, который написан в Java использует модульное тестирование JUnit рамки для преобразования теста XML спецификации для вызовов JDBC и сравнить результаты, полученные из звонки с указанными результатами.

Есть недостатки; он основан на Java, что может быть не вашим предпочтением, и, что более важно, похоже, что с июня 2006 года в проекте не было большой активности :(

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