Управление тестовыми данными для больших приложений
У меня есть относительно большое приложение веб-API, то есть в настоящее время оно имеет ~300 таблиц.
Приложение написано таким образом, что оно не использует хранимые процедуры и практически не имеет представлений, то есть бизнес-логика - все в коде приложения. Он использует шаблон репозитория, поэтому относительно легко создавать фиктивные данные для наших модульных тестов.
Однако управлять фиктивными данными довольно сложно, и каждому человеку очень сложно понять, какие данные уже есть. Мы попытались переместить тестовые данные в фиктивную фабрику, чтобы они сохранялись в одном файле, который затем загружаются различными тестами по мере необходимости (т.е. для данного теста потребуется только определенное подмножество данных, поэтому он будет только попросить это подмножество).
Тем не менее, управление данными является довольно сложным, утверждение о данных, возвращаемых из приложения, также является хрупким. Например, скажем, что в наших фиктивных данных определено 10 клиентов, из которых 2 помечены как неактивные. У нас может быть контрольный пример, который проверяет, что метод, который должен вернуть всех активных клиентов, должен вернуть 8 экземпляров. Однако, если разработчик должен добавить новый экземпляр к нашим тестовым данным, это нарушит существующие тесты / утверждения.
У кого-нибудь есть опыт управления этим, или что-нибудь было написано по этому поводу?
1 ответ
Похоже, вы создаете тестовые данные, которые используются для нескольких тестов. Это не лучшее решение. Вы должны создавать необходимые данные для каждого теста. Шаблон построителя тестовых данных должен вам здесь помочь. Эта ссылка описывает, как вы будете использовать построитель тестовых данных. Кроме того, Марк Симанн написал библиотеку, которая поможет создавать такого рода фиктивные данные, которые называются автофиксами.
У него есть отличное видео о PluralSight о продвинутом модульном тестировании. Если у вас есть доступ к PluralSight, я бы порекомендовал посмотреть видео.