Net Testing Framework и повторение - PullRequest
0 голосов
/ 07 марта 2019

Каков надлежащий протокол тестирования при написании контрольных примеров для хранилищ данных?

Справочная информация:

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

Какова надлежащая структура модульного тестирования?У нас более 1000 таблиц. Нужно ли отдельно проверять эту процедуру на 1000 таблиц, проверяя количество и значения?и написать 1000 тестов Nunit / Xunit в VS Test Explorer?

Например;Копирование таблицы SQL (Клиенты, Платежи, Инвентарь).

Клиент A ---> Клиент B

Инвентарь ---> Инвентарь B

Платежи B --->Платежи B

Пример: запустить проверку контрольных примеров и скопировать результаты в таблицу проверки данных, используя цикл for / while

insert into dbo.TestResultTable(TestFlag)
utilize for loop   -- make sure counts are equal for every copy
set @TestFlag = (select count(*) from CustomerA = select count(*) from CustomerB)
set @TestFlag = (select count(*) from InventoryA = select count(*) from InventoryB)
set @TestFlag = (select count(*) from PaymentsA = select count(*) from PaymentsB)

1 Ответ

1 голос
/ 07 марта 2019

Вы описываете уровень тестирования, который шире, чем модульные тесты. Я вернусь к этому в конце.

Вы хотите убедиться, что операция выполнена для 1000 таблиц и что все правильно. Это тест очень высокого уровня ... Я бы назвал это интеграционным тестом. Это нормально, но, очевидно, это очень много времени.

Что бы я сделал, чтобы сократить время:

  1. Проведите краткий тест, чтобы каждая таблица, которая должна быть создана, была действительно создана.
  2. Произвольно выберите n таблицы для полного теста.
  3. Добавьте дополнительные тесты, основанные на ошибках, которые появятся в будущем.

В идеале, я бы параметризировал n и допускал полное тестирование при необходимости. Например, случайное тестирование не уловит проблему, которая возникает, когда в имени есть пробел, но это маловероятно.

Теперь давайте предположим, что вы действительно хотите модульные тесты для всего этого (я бы) ...

  1. Поместите слой данных за интерфейсом, который вы можете смоделировать.
  2. Создать метод, который обновляет 1 таблицу. Испытайте этот метод исчерпывающе, используя макет.
  3. Теперь смоделируйте объект, содержащий этот метод.
  4. Проверьте, что метод вызывается необходимое количество раз с правильными именами таблиц, когда вы делаете свою полную копию.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...