Мне нравится этот вопрос. Если вам не следует спрашивать об этом здесь, где вы можете задать вопросы о рекомендациях книг по программированию?
Геттли
Ответы:
18
Лично я обнаружил, что чтения эссе или двух JUnit, подчеркивающих, что «ты пишешь тест перед кодом» было достаточно, чтобы начать меня.
Наиболее важной частью в изучении этой технологии является написание МНОГО кода , основанного на тестах , потому что вам нужно изменить некоторые из самых основных способов написания кода. Вещи как:
Написание теста перед кодом заставляет вас задуматься о том, как вы будете вызывать свой код и получать результат обратно. Это означает, что вы сначала разрабатываете API, основываясь на том, как вы будете его использовать. Это часто приводит к лучшему API.
Ваш стиль кодирования изменится, потому что вам НУЖНО думать более модульно, чтобы иметь возможность тестировать части кода вместо всего этого.
Вы также достигнете точки, в которой вы сможете с уверенностью вытащить основной блок и вставить новый блок вместо того, чтобы вести себя так же, потому что ваш тест пройден. Я сделал это недавно с библиотекой разбора даты, поскольку оригинал был слишком снисходительным.
Лучшее место, чтобы начать с малого, это с вашей утилитой. В следующий раз, когда вам понадобится один, просто спроектируйте его сначала с помощью тестов, напишите множество тестов, охватывающих все ваши официальные сценарии использования (включая то, что должно происходить с переданными нулевыми значениями и т. Д.), И когда все варианты использования будут реализованы, вы сможете использовать это прямо в вашем коде, и будьте уверены, что он работает как положено.
По моему опыту, хорошие тесты могут выполнять дополнительную работу в качестве документации, потому что у вас есть много очень лаконичного кода, точно говорящего о том, как код ведет себя в различных ситуациях, что может быть легко доказано как корректное (зеленая полоса). С осторожными комментариями вы не получите это намного лучше чем это.
На мой взгляд, TDD больше ориентирован на тестирование кода, чем на написание тестов.
Конечно, вы можете написать тест до написания кода, но вся причина написания теста заключается в том, что вы можете писать код, что не помешает вам писать код, который сложно протестировать.
Если вы интересуетесь этой концепцией и хотите узнать больше, просто прокомментируйте - и я укажу вам направление записанной презентации на эту тему от Google.
Я думаю, что это моя любимая книга, которая больше всего повлияла на то, как я работаю, не только о TDD, но и о Software Dev в целом. Я также должен признать, что я не читал много книг TDD, так что, возможно, не доверяйте мне так сильно.
Книга Бека хорошо ценится, но я не начинал с модульного тестирования, пока не прочитал «Основы модульного тестирования». Я делаю некоторые TDD, но я также добавляю тесты в старый код, который я должен поддерживать (когда могу).
Изменить: Кроме того, как только вы получите ручку, я рекомендую использовать его в текущем проекте прямо сейчас. Для меня именно тогда произошло настоящее обучение, и я думаю, что книга «Unit Test Framework» была лучшим справочным пособием для этой цели. (Я использовал nunit с C #).
«Искусство юнит-тестирования» - это книга, которую я бы порекомендовал не только о 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 (хотя она затрагивает его и разрабатывает для тестируемости), поскольку он учит вас, как писать хорошие тесты.
В частности, он учит, как создавать надежные, поддерживаемые и читаемые тесты. Я думаю, что это самый важный раздел книги, за исключением, возможно, основ о модульном тестировании и средах изоляции. Очевидно, что если модульные тесты станут болевым пунктом или добавят трения к работе разработчика, то любой успех или польза от них будет ограничена. Если кто-то инвестирует время и усилия в создание тестов, то он должен получить максимальную отдачу от этих инвестиций.
источник