Я хочу научиться (и освоить) TDD. Каковы лучшие:
- книги
- сайты
- видео
- список упражнений
- личные слова мудрости
для изучения, оценки и использования TDD?
Я хочу научиться (и освоить) TDD. Каковы лучшие:
для изучения, оценки и использования TDD?
Ответы:
Лично я обнаружил, что чтения эссе или двух JUnit, подчеркивающих, что «ты пишешь тест перед кодом» было достаточно, чтобы начать меня.
Наиболее важной частью в изучении этой технологии является написание МНОГО кода , основанного на тестах , потому что вам нужно изменить некоторые из самых основных способов написания кода. Вещи как:
Лучшее место, чтобы начать с малого, это с вашей утилитой. В следующий раз, когда вам понадобится один, просто спроектируйте его сначала с помощью тестов, напишите множество тестов, охватывающих все ваши официальные сценарии использования (включая то, что должно происходить с переданными нулевыми значениями и т. Д.), И когда все варианты использования будут реализованы, вы сможете использовать это прямо в вашем коде, и будьте уверены, что он работает как положено.
По моему опыту, хорошие тесты могут выполнять дополнительную работу в качестве документации, потому что у вас есть много очень лаконичного кода, точно говорящего о том, как код ведет себя в различных ситуациях, что может быть легко доказано как корректное (зеленая полоса). С осторожными комментариями вы не получите это намного лучше чем это.
Для Java версия jUnit 4 действительно хороша.
На мой взгляд, TDD больше ориентирован на тестирование кода, чем на написание тестов.
Конечно, вы можете написать тест до написания кода, но вся причина написания теста заключается в том, что вы можете писать код, что не помешает вам писать код, который сложно протестировать.
Взгляните на это, чтобы лучше понять, что я имею в виду: Моя единая теория ошибок
Если вы интересуетесь этой концепцией и хотите узнать больше, просто прокомментируйте - и я укажу вам направление записанной презентации на эту тему от Google.
ОБНОВИТЬ:
Как написать чистый тестируемый код
Miško Hevery Представление (К GoogleTechTalks ) В Google в Нью - Йорке и при поддержке компании Google Engineering Productivity группы
Помимо некоторых уже упомянутых книг, я могу порекомендовать « Растущее объектно-ориентированное программное обеспечение под руководством тестов» . Я еще не закончил читать, но это достойное прочтение, включая историю целого, реалистичного проекта TDD, а не только упрощенных примеров кода.
Я прочитал две книги:
Разработка через тестирование: на примере Кента Бека и
Фреймворки модульного тестирования от Paul Hamil
Книга Бека хорошо ценится, но я не начинал с модульного тестирования, пока не прочитал «Основы модульного тестирования». Я делаю некоторые TDD, но я также добавляю тесты в старый код, который я должен поддерживать (когда могу).
Изменить: Кроме того, как только вы получите ручку, я рекомендую использовать его в текущем проекте прямо сейчас. Для меня именно тогда произошло настоящее обучение, и я думаю, что книга «Unit Test Framework» была лучшим справочным пособием для этой цели. (Я использовал nunit с C #).
«Искусство юнит-тестирования» - это книга, которую я бы порекомендовал не только о TDD (хотя она затрагивает его и разрабатывает для тестируемости), поскольку он учит вас, как писать хорошие тесты.
В частности, он учит, как создавать надежные, поддерживаемые и читаемые тесты. Я думаю, что это самый важный раздел книги, за исключением, возможно, основ о модульном тестировании и средах изоляции. Очевидно, что если модульные тесты станут болевым пунктом или добавят трения к работе разработчика, то любой успех или польза от них будет ограничена. Если кто-то инвестирует время и усилия в создание тестов, то он должен получить максимальную отдачу от этих инвестиций.