Инфраструктура требуется для TDD? - PullRequest
7 голосов
/ 14 декабря 2009

Я «относительно новичок» в модульном тестировании и TDD. Только недавно я закончил свое первое производственное приложение, которое имеет (по крайней мере, теоретически) покрытие кода 100%. Некоторое время я также проводил модульное тестирование в предыдущих проектах, но не в стиле TDD и с хорошим охватом кода. Это всегда было запоздалой мыслью. Я чувствую, что теперь у меня это хорошо получается.

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

В одном из ответов (на самом деле проголосовало большинство) предложено сначала настроить инфраструктуру, прежде чем я приступлю к обучению. К сожалению, я не имею никакого отношения к этому, и поиск по темам затруднен, потому что страницы CruiseControl.NET / nAnt / etc на самом деле не объясняют, «почему» мы должны это настроить и «как» все соединяется вместе.

Мы - небольшой магазин (около 10 разработчиков), мы используем почти исключительно технологии Microsoft и занимаемся разработкой в ​​VB.NET. Мы надеемся в конечном итоге начать использовать C #, но это в другой раз. Я использовал проект MSTest, поставляемый с VS2008, для своих модульных тестов, и я создавал свои приложения с помощью Visual Studio и развертывал с помощью проектов установки MSI ... Мы также (к сожалению) также используем VSS для управления ресурсами - но это также на рубке, и я бы очень хотел избавиться от нее и использовать Subversion.

Я знаю, что мне нужно использовать CruiseControl.NET для CI, а также nAnt или MSBuild для сборки приложений. И мне, вероятно, нужен сервер сборки для запуска всех этих сборок. Но я просто не могу найти ничего, что «связывает» точки и объясняет, как они взаимодействуют друг с другом, что должно быть на вашем сервере сборки, когда вы должны строить с сервером сборки (это только для развертываний или даже когда вы просто хотите скомпилировать разрабатываемое приложение после внесения небольших изменений в вашу локальную среду?). Я также планирую развернуть MSTest, так как обнаружил, что он глючит, и вместо этого буду использовать nUnit.

Может ли кто-нибудь осветить этот пробел, который я имею от «знания как сделать TDD» до «настройки надлежащей инфраструктуры, чтобы вся команда могла сделать это и работать вместе»? Я понимаю, что такое непрерывная интеграция, но, опять же, я не уверен, как настроить сервер сборки и как он соединяется со всем, и зачем он нам нужен (например, шаг к управлению).

Большое спасибо за ваше время.

Какая часть финального билдера мне нужна? Кажется, есть некоторое совпадение с финальным билдером и командным составом. Сервер Finalbuilder выглядит как CI-сервер, так что, полагаю, он мне не нужен. FinalBuilder, похоже, является сервером сборки, но я думал, что TeamCity также является сервером сборки ... А Automise, похоже, инструмент визуальной автоматизации окон, как какая-то платформа для разработки приложений winforms ...

_Я также не вижу поддержки окончательного компоновщика в Диаграмма поддерживаемых приложений Team City : _

1 Ответ

5 голосов
/ 14 декабря 2009

Посмотрите на вебинар, который я провел несколько недель назад - Как успешно начать модульное тестирование . На этом вебинаре я рассказал об инструментах и ​​передовых методах модульного тестирования, и он был нацелен на разработчиков, таких как вы, которые хотят внедрить модульное тестирование в своей организации.

Первый бизнес, в котором вы хотите внедрить процесс CI (Continuous Integration), и для этого вам понадобятся три инструмента:

  1. Контроль источника
  2. Сервер сборки
  3. Сборка клиента / скрипта

Надеюсь, у вас уже есть какая-то форма контроля источников, поэтому давайте поговорим о двух других.

Сервер сборки - проверяет управление исходным кодом и при его изменении (или выполнении другого условия) запускает скрипт сборки на некотором клиенте (или той же машине), где доступно несколько серверов сборки, я рекомендую JetBrain's TeamCity он прост в установке и использовании (отличный веб-интерфейс) и бесплатен для 20 разработчиков (это вы).

Сценарий сборки - на вашем клиенте сборки вы хотите запустить скрипт сборки, который бы собрал ваше решение и запустил ваши модульные тесты. TeamCity имеет некоторые базовые возможности по сборке и тестированию, но для более сложных опций (установщик сборки, документация и т. Д.) Вам понадобится какой-нибудь бегун скриптов на работе, мы используем FinalBuilder - он не бесплатный, но имеет очень хороший редактор. Если вы ищете бесплатную альтернативу, взгляните на ANT или NANT - но будьте готовы редактировать много XML.

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

...