Я занимаюсь разработкой процесса ETL, который извлекает бизнес-данные из одной базы данных в хранилище данных. Приложение НЕ использует NHibinate, Linq to Sql или Entity Framework. Приложение имеет собственные сгенерированные классы доступа к данным, которые генерируют необходимые операторы SQL для выполнения CUID.
Как можно себе представить, разработчики, которые пишут код, генерирующий пользовательский SQL, могут легко ошибаться.
Я хотел бы написать программу, которая генерирует данные тестирования (Arrange), затем выполняет процесс ETL (Act) и проверяет хранилище данных (Assert).
Я не думаю, что сложно написать такую программу. Однако меня беспокоит то, что в прошлом моя компания пыталась сделать что-то похожее, и в итоге у нее было множество не поддерживаемых модульных тестов, которые постоянно терпят неудачу из-за множества новых изменений в схеме базы данных по мере добавления новых функций. 1007 *
Я планирую написать интеграционный тест, который выполняется на сборочной машине, а не какие-либо модульные тесты, чтобы убедиться, что процесс ETL работает. Данные тестирования не могут генерироваться случайным образом из-за бизнес-логики, определяющей, как данные загружаются в хранилище данных. У нас есть специальный инструмент разработки, который генерирует новые классы доступа к данным при изменении определения базы данных.
Мне бы очень хотелось получить от сообщества отзывы о том, как написать такой интеграционный тест, который легко поддерживать. У меня есть несколько идей:
Сохраните резервную копию тестовой базы данных в системе управления версиями (TFS), разработчикам потребуется изменить резервную копию базы данных при изменении данных в источнике или хранилище данных.
Разработчики должны поддерживать данные тестирования через программу тестирования (в данном случае C #) вручную. Эта программа будет иметь базовую основу для разработчиков для создания своих данных тестирования.
Когда инициализируется тестовая база данных, она генерирует случайные данные. Разработчикам потребуется написать код для переопределения определенных случайно сгенерированных данных, чтобы обеспечить успешное прохождение теста.
Я приветствую любые предложения
Спасибо