Почему я должен практиковать разработку на основе тестирования и с чего мне следует начать?
Вопрос
Многие люди говорят о написании тестов для своего кода до того, как они начнут писать свой код.Эта практика обычно известна как разработка, основанная на тестировании, или сокращенно TDD.Какие преимущества я получаю от написания программного обеспечения таким образом?Как мне приступить к этой практике?
Решение
Есть много преимуществ:
- Вы немедленно получаете обратную связь о том, работает ли ваш код, так что сможете быстрее находить ошибки
- Видя, как индикатор теста меняется с красного на зеленый, вы понимаете, что у вас есть и рабочий регрессионный тест, и рабочий код
- Вы получаете уверенность в проведении рефакторинга существующего кода, что означает, что вы можете очистить код, не беспокоясь о том, что он может сломаться
- В конце у вас есть набор регрессионных тестов, которые можно запускать во время автоматических сборок, чтобы дать вам больше уверенности в том, что ваша кодовая база надежна
Лучший способ начать - это просто начать.Есть отличный книга Кента Бека все о разработке, основанной на тестировании.Просто начните с нового кода, не беспокойтесь о старом коде...всякий раз, когда вы чувствуете, что вам нужно реорганизовать какой-то код, напишите тест для существующей функциональности, затем реорганизуйте его и убедитесь, что тесты остаются зелеными.Кроме того, прочтите эта замечательная статья.
Другие советы
Часть преимуществ имеет недавно был охвачен, что касается того, с чего начать .... в системе небольшого предприятия, где не слишком много неизвестных, поэтому риски невелики.Если вы еще не знакомы с платформой тестирования (например, NUnit), начните с изучения этого.В противном случае начните с написания вашего первого теста :)
Преимущества
- Вы выясняете, как разделить ваш код на части
- Вы точно определяете, что должен делать ваш код
- Вы знаете, как это должно действовать и, в дальнейшем, если рефакторинг что-нибудь сломает
- Вырабатывает у вас привычку следить за тем, чтобы ваш код всегда знал, что он должен делать
Приступая к работе
Просто сделай это.Напишите тестовый пример для того, что вы хотите сделать, а затем напишите код, который должен пройти тест.Если вы пройдете свой тест, отлично, вы можете перейти к написанию случаев, когда ваш код всегда будет терпеть неудачу (например, 2 + 2 не должно равняться 5).
Как только все ваши тесты пройдут, напишите свою реальную бизнес-логику, чтобы делать все, что вы хотите.
Если вы начинаете с нуля, убедитесь, что нашли хороший набор тестов, который прост в использовании.Мне нравится PHP, поэтому PHPUnit или SimpleTest работают хорошо.Почти на всех популярных языках есть некоторый набор для тестирования xUnit, который помогает создавать и автоматизировать тестирование.
На мой взгляд, самое замечательное в том, что это четко позволяет вам увидеть, делает ли ваш код то, что от него требуется.Это может показаться очевидным, но очень легко отклониться от своих первоначальных целей, как я выяснил в прошлом : p