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

StackOverflow https://stackoverflow.com/questions/4303

  •  08-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Приступая к работе

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top