2009-07-17 1 views
0

Я поставил некоторые тесты с использованием VisualStudio интегрированного тестом окружающей средой, они simultate, что мой веб-приложение будет делать путем вызова методов BLL (они только одни слой UI должен знать и взаимодействовать с ними) ...Зачем мне делать UnitTest для моего SQL, DAL и BLL, если мое приложение будет вызывать только BLL-методы?

Так если их поведение верное - я получаю свои тесты, - почему следует Я пишу тесты для более низких уровней, таких как DAL/Хранимые процедуры, как многие из литературы предлагают мне сделать?

Спасибо всем, Питер.

+0

См. Различие, сделанное AutomatedTester ниже, но не похоже, что вы пишете блок-тесты, где каждый «блок» изолирован, а скорее интеграционные тесты? –

ответ

2

Успешное сквозное тестирование и гарантирует, что ваше приложение работает для определенных сценариев.

Misko Hevery положил хорошее сообщение в блоге test categorization, где он разбивает модульный тест, интеграционный тест и сквозное тестирование.

Unit-Testing Тестирование модулей проверяет, что логика в методе функции выполняет правильную вещь и что обработка ошибок выполняется правильно. Эти тесты должны идеально работать в миллисекундах, а не в секундах. Если функция должна взаимодействовать с чем-то, например DAL, вы должны издеваться над этим интерфейсом DAL, поскольку для правильного взаимодействия потребуется много времени. Они предлагают лучший возврат инвестиций

Интеграция Тестирование Этого уровня тестирования проверяет, что взаимодействие между бизнес-логикой слоями делать именно то, что они должны делать. Здесь ваш блок-тест будет взаимодействовать с интерфейсом, например DAL, и проверить правильность «проводки». Там должно быть несколько из них, но не слишком много, поскольку это будет влиять на время сборки

впритык тестирования Они хороши, как они проверяют, что все висит вместе с UI весь путь вниз к DAL. Они проверяют гораздо больше «проводки» и проверяют, что то, что может сделать ваш пользователь, не будет убивать ваше приложение. Они также могут включать в себя ваши FitNesse и веб-тесты, например Selenium.

Unit Testing предлагает наилучшую отдачу от инвестиций и будет ловить гораздо более дорогостоящие ошибки, чем другие области, но хорошо иметь хорошее сочетание партии.

0

Говоря от фона NUnit

Тестирование доступа/данных СФС не так легко сделать. Вы должны обеспечить, чтобы у вас была «чистая» база данных каждый раз, когда выполнялись ваши тесты, и ожидаемые данные там были в начале, чтобы гарантировать, что вы получите намеченные результаты. Таким образом, вам нужно либо каждый раз восстанавливать db из чистой резервной копии, либо обеспечивать, чтобы ваши тесты настраивали базу данных с данными, которые ей нужны до начала тестов.

Единичные тесты должны идеально работать как можно быстрее, и это одна из причин, по которым DAL часто высмеивается при модульном тестировании - для устранения дорогостоящего процесса взаимодействия с базой данных. Вы должны быть осторожны, если вы пишете «модульные тесты» для SPs/DAL, тогда влияние на время выполнения теста может стать ракетой, которая по моему опыту может привести к тому, что люди не будут проходить тесты по мере того, как они занимают слишком много времени. Эспеивно в среде среды/сборки с непрерывной интеграцией, чем дольше будут выполняться тесты, тем дольше она будет работать, чтобы подготовить сборку.

Мое личное мнение заключается в том, что мне нравится использовать сочетание издевательского и фактического доступа к данным в моих модульных тестах, так как мне нравится знать, что мой код будет работать так, как ожидалось, весь путь до и из db, чтобы поймать глупые ошибки, такие как пропуски SP/ошибки (граничащие между тестированием модулей/интеграции/функциональности). Но там, где это не так важно, я использую насмешки.

Смежные вопросы