Почему я должен практиковать разработку на основе тестов и как я должен начать?


многие люди говорят о написании тестов для своего кода, прежде чем они начнут писать свой код. Эта практика обычно известна как разработка на основе тестов или TDD для краткости. Какие преимущества я получаю от написания программного обеспечения таким образом? Как мне начать эту практику?

6 51

6 ответов:

есть много преимуществ:

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

самый лучший способ начать-это начать. Есть отличный книга Кента Бека все о разработке на основе тестов. Просто начните с нового кода, не беспокойтесь о старом коде... всякий раз, когда вы чувствуете, что вам нужно отрефакторить код, писать тесты для существующей функциональности, а затем переработать его и убедитесь, что анализы остаются зелеными. Кроме того, читайте это отличная статья.

преимущества часть под, а с чего начать....в системе малого предприятия, где не слишком много неизвестных, поэтому риски низки. Если вы еще не знаете структуру тестирования (например, NUnit), начните с изучения этого. В противном случае начните с написания своего первого теста :)

преимущества

  1. вы выясните, как разделить ваш код
  2. вы точно выяснить, что вы хотите, чтобы ваш код
  3. вы знаете, как он должен действовать и, по дороге, если рефакторинг ломает что-нибудь
  4. вы привыкнете к тому, что ваш код всегда знает, что он должен делать

Начало Работы

Просто сделай это. Напишите тестовый случай для чего вы хочу сделать, а потом написать код, который должен пройти испытание. Если вы пройдете тест, отлично, вы можете перейти к написанию случаев, когда ваш код всегда будет терпеть неудачу (2+2 не должно равняться 5, например).

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

Если вы начинаете с нуля, убедитесь, что вы нашли хороший набор тестов, который прост в использовании. Мне нравится PHP, поэтому PHPUnit или SimpleTest работают хорошо. Почти все популярные языки есть некоторые xUnit testing suite доступны, чтобы помочь построить и автоматизировать тестирование.

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

хороший стартовый: начало работы с Tdd на Java с помощью Eclipse от Brett L. Schuchert

- Это набор скринкастов о TDD в Java и на C#. Он начинается с нуля и обучения основам TDD.

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

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

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