2009-05-08 7 views
2

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

ответ

1

Для вставки, обновления, удаления я проверить состояние таблицы до и после того, как процедура является г un для записей, которые соответствуют условиям обновления или удаления вставки. Поэтому, если я добавляю 7 записей, они не должны быть в таблице заранее и должны быть там после.

Выбирается с тысячами записей может быть сложнее. Нет никакой замены для фактического знания ваших данных и того, что вы ожидаете получить. Например, я знаю, что у определенного клиента около 2000 продавцов. Если я запустил запрос, в котором должны быть все повторы, и их будет всего около 1000, я знаю, что что-то не так. Иногда я помещаю результаты запроса в временную таблицу, поэтому я могу запускать статистику по ней. Если я делаю отчет участника, я могу увидеть, что в отчетном периоде в отчете есть 200 различных встреч в соответствии с моим запросом. Если я посмотрю только на эту таблицу и вижу, что за один и тот же период происходит 350 встреч, я смотрю, чтобы посмотреть, что исключает собрания, и обычно просматривайте детали одного или нескольких исключенных встреч и связанных таблиц, чтобы понять, почему это не появляется. Обычно вы найдете статус, который необходимо учитывать, или плохие данные.

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

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

Другой метод заключается в том, чтобы преднамеренно ограничить предложение where для тестирования меньшим подмножеством данных, которое вы можете вручную проверить, чтобы узнать, что вы ожидаете от того, что вы получили. Это особенно полезно, если у вас много расчетов или сложных вычислений. В любое время, когда я делаю сложный расчет, я просматриваю необработанные данные для одного типичного случая и вручную вычисляю формулу из необработанных данных, тогда я могу проверить, правильно ли это в моем запросе.

Триггеры, которые я тестирую, сначала записывая их как обычные запросы (после первого создания и заполнения таблиц temp для #incerted и #deleted). Я обязательно добавлю несколько записей в свои временные таблицы, потому что каждый триггер должен иметь возможность правильно обрабатывать несколько вложений/обновлений или удалений записи. Затем я пишу код для отображения состояния before и состояния after и помещаю его в транзакцию, чтобы я мог откатить его во время тестирования.

3

Попробуйте устранить дополнительные переменные.

способов сделать это:

  • Каждый тест должен проверить только одна функция (вид, хранимая процедура и т.д.)
  • Используйте известные данные тестирования (она должна быть от реальной среды (но на самом деле не настоящая среда)
  • Используйте наименьшее количество тестовых данных, адекватно тестирует функцию.
Смежные вопросы