Чек-лист для .NET программиста: Модульное тестирование

Модульное или юнит-тестирование (Unit testing) относится к такому виду тестирования, которым занимается непосредственно программист, с целью проверки работоспособности отдельного модуля приложения в изоляции от других. В среде .NET модульные тесты разрабатываются при помощи таких основных инструментов, как NUnit, xUnit и MSTest. Для создания заглушек (Stubs, Mocks) обычно используются фреймворки Moq, Rhino Mocks и Microsoft Moles. Определить уровень покрытия кода модульными тестами (Code Coverage) помогает инструмент NCover.

Без юнит-тестов невозможно использовать методологию разработки через тестирование (Test-driven Development, TDD) — техника, при которой юнит-тесты пишутся до написания кода приложения. TDD помогает лучше понять предназначение будущих программных модулей, а также проанализировать их зависимости между собой, что способствует более качественному дизайну системы.

Юнит-тесты являются индикатором качества дизайна отдельной части или целого приложения. При низком качестве дизайна покрыть приложение юнит-тестами становится практически невозможно, а если это и удается, то они получаются довольно громоздкими, запутанными и в добавок могут нарушать принципы F.I.R.S.T.

Юнит-тесты являются важным инструментом при проведении рефакторинга, ведь их регулярный запуск позволит выявить допущенные в процессе рефакторинга ошибки.

Юнит-тесты представляют собой отличный инстумент для программиста, которому необходимо разобраться в определенном участке кода. Если после просмотра сложного метода остаются сомнения в его предназначении, то одним из способов их развеять является покрытие такого метода юнит-тестами.

Вопросы

  1. Что в модульном тестировании подразумевается под понятием «модуль»?
  2. Как модульное тестирование помогает проведению рефакторинга?
  3. Какая разница между тестированием по принципу «Черного ящика» и «Белого ящика»?
  4. Как расшифровать принципы модульных тестов F.I.R.S.T.?
  5. В чем предназначение заглушек в модульных тестах?
  6. Какое отличие между стабами и моками?
  7. Можно ли создать заглушку на статический метод?
  8. Какой смысл метрики покрытия кода тестами (Code Coverage)?
  9. В чем смысл разработки через тестирование (TDD)?
  10. Каким образом TDD способствует более качественному дизайну системы?

Книги

Статьи

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s