Если у вас нет тестов, как вы узнаете, как работает ваш код?
Редактировать: утверждение, что тесты не могут доказать, что код работает, не может определить один важный термин, а именно работает . Что значит для программы работать? Если вы оставите этот термин расплывчатым, то нет никакого способа доказать или убедиться, что любая программа работает. Когда-либо.
С другой стороны, вы можете определить работы как «ведет себя в соответствии со спецификацией». Теперь вы можете не только использовать тесты, чтобы показать, что код работает, но сами тесты могут служить исполняемой спецификацией поведения вашего кода. Другими словами, хорошо написанный набор тестов определяет, что значит работать .
Этот способ мышления также заставляет вас пересмотреть значение ошибки . Если ваш код проходит все тесты, то в коде нет ошибок. Если, несмотря на это, система ведет себя не так, как должна, ее поведение указывается неправильно. И. е. ошибка в спецификации, определенной тестами.
Этот подход к разработке программного обеспечения отделяет функциональную спецификацию системы от ее реализации, что, по мнению каждой книги по разработке программного обеспечения в мире, является очень хорошей вещью. В то же время этот подход гарантирует, что ваша реализация всегда соответствует функциональной спецификации.