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