Каковы лучшие ресурсы для изучения TDD? [закрыто]

27

Я хочу научиться (и освоить) TDD. Каковы лучшие:

  • книги
  • сайты
  • видео
  • список упражнений
  • личные слова мудрости

для изучения, оценки и использования TDD?

Эрик
источник
1
Вас может заинтересовать моя страница ресурсов для изучения TDD .
xpmatteo
9
Мне нравится этот вопрос. Если вам не следует спрашивать об этом здесь, где вы можете задать вопросы о рекомендациях книг по программированию?
Геттли

Ответы:

18

Лично я обнаружил, что чтения эссе или двух JUnit, подчеркивающих, что «ты пишешь тест перед кодом» было достаточно, чтобы начать меня.

Наиболее важной частью в изучении этой технологии является написание МНОГО кода , основанного на тестах , потому что вам нужно изменить некоторые из самых основных способов написания кода. Вещи как:

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

Лучшее место, чтобы начать с малого, это с вашей утилитой. В следующий раз, когда вам понадобится один, просто спроектируйте его сначала с помощью тестов, напишите множество тестов, охватывающих все ваши официальные сценарии использования (включая то, что должно происходить с переданными нулевыми значениями и т. Д.), И когда все варианты использования будут реализованы, вы сможете использовать это прямо в вашем коде, и будьте уверены, что он работает как положено.

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

Для Java версия jUnit 4 действительно хороша.


источник
8

На мой взгляд, TDD больше ориентирован на тестирование кода, чем на написание тестов.

Конечно, вы можете написать тест до написания кода, но вся причина написания теста заключается в том, что вы можете писать код, что не помешает вам писать код, который сложно протестировать.

Взгляните на это, чтобы лучше понять, что я имею в виду: Моя единая теория ошибок

Если вы интересуетесь этой концепцией и хотите узнать больше, просто прокомментируйте - и я укажу вам направление записанной презентации на эту тему от Google.

ОБНОВИТЬ:

Как написать чистый тестируемый код

Miško Hevery Представление (К GoogleTechTalks ) В Google в Нью - Йорке и при поддержке компании Google Engineering Productivity группы

просчеты
источник
Идите вперед и добавьте ссылку на презентацию Google. Я думаю, что представитель Эрика пока не позволяет комментировать.
ocodo
+1 @Slomojo: Верно, так что проголосуйте за вопрос ... чтобы подтолкнуть его на 15 повторений, если я правильно помню. Я посмотрю вокруг для видео.
промахи
1
@ Блаундерс ... Я получил его до 11!
ocodo
+1 @Slomojo: Для предварительного голосования нашел и добавил ссылку на Google Tech Talk в моем ответе. Ура!
промахи
8

Помимо некоторых уже упомянутых книг, я могу порекомендовать « Растущее объектно-ориентированное программное обеспечение под руководством тестов» . Я еще не закончил читать, но это достойное прочтение, включая историю целого, реалистичного проекта TDD, а не только упрощенных примеров кода.

Петер Тёрёк
источник
Я думаю, что это моя любимая книга, которая больше всего повлияла на то, как я работаю, не только о TDD, но и о Software Dev в целом. Я также должен признать, что я не читал много книг TDD, так что, возможно, не доверяйте мне так сильно.
antonio.fornie
4

Я прочитал две книги:

Разработка через тестирование: на примере Кента Бека и

Фреймворки модульного тестирования от Paul Hamil

Книга Бека хорошо ценится, но я не начинал с модульного тестирования, пока не прочитал «Основы модульного тестирования». Я делаю некоторые TDD, но я также добавляю тесты в старый код, который я должен поддерживать (когда могу).

Изменить: Кроме того, как только вы получите ручку, я рекомендую использовать его в текущем проекте прямо сейчас. Для меня именно тогда произошло настоящее обучение, и я думаю, что книга «Unit Test Framework» была лучшим справочным пособием для этой цели. (Я использовал nunit с C #).

vjones
источник
4

«Искусство юнит-тестирования» - это книга, которую я бы порекомендовал не только о TDD (хотя она затрагивает его и разрабатывает для тестируемости), поскольку он учит вас, как писать хорошие тесты.

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

Matt
источник