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

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

Ответов (4)

Решение

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

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

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

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

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

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

Начиная

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

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

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

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