Какой смысл автоматизированного интеграционного тестирования здесь? - PullRequest
0 голосов
/ 28 октября 2009

Да, я прочитал «Связанные вопросы» в поле выше после того, как набрал это =). Они все еще не помогли мне так сильно, как мне бы хотелось, поскольку я понимаю, в чем разница между ними - я просто не уверен, что мне это нужно в моем конкретном случае.

Итак, у меня есть полностью протестированное модульное (простое и маленькое) приложение. У меня есть некоторый класс 'Job' с единственным общедоступным методом Run () + ctors, который принимает электронную таблицу Excel в качестве параметра, извлекает данные, проверяет базу данных, чтобы выяснить, есть ли у нас эти данные, и если нет, делает запрос сторонний поставщик принимает этот ответ, помещает его в базу данных и затем завершает работу (снова обновляет базу данных)

У меня есть IConnection для общения с поставщиком, IParser для анализа файлов excel / vendor, IDataAccess для доступа ко всем базам данных. Мой класс Job является худым и подлым и не выполняет много логики, хотя на самом деле он выполняет всю логику, на самом деле он просто «цепляет данные» к составным объектам ...

Таким образом, все составные объекты сами проходят модульное тестирование, включая DAL, и даже мой метод Run () в классе Job полностью тестируется модулем, используя mocks для всех возможных путей кода.

Итак, нужно ли мне проводить какие-либо интеграционные тесты на данном этапе, кроме запуска приложения, чтобы посмотреть, работает ли оно? Считаются ли мои тесты метода Run () с mocks моими интеграционными тестами? Или мой интеграционный тест должен использовать реальные экземпляры вместо макетов, а затем в конце утверждать значения базы данных на основе известного ввода в таблицу Excel? Но это то, что все мои модульные тесты уже делают (только в отдельных местах, и проверенный тест Run гарантирует, что эти места «соединяются»)! Следуя методологии СУХОЙ, я просто не вижу необходимости проводить интеграционный тест здесь ...

Я что-то упускаю из виду, ребята? Еще раз большое спасибо ...

1 Ответ

1 голос
/ 28 октября 2009

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

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

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