Представьте себе: вы только что написали код для новой функции. Вы завершаете написание некоторых модульных тестов. Когда вы пишете свои тесты, вы начинаете испытывать экзистенциальный кризис. “Почему я пишу эти тесты? “Вы спрашиваете себя. «Я уже вручную проверил, что мой код работает, и у меня даже был другой разработчик. В чем смысл?”
Ответ заключается в одной решающей реализации: Ваши тесты на будущее.
Конечно, они сейчас тоже для того, чтобы помочь вам поймать некоторые кромки, о которых вы, возможно, забыли при разработке вашей новой функции. Но тесты в основном для тех, кто будет работать над вашим кодом в ближайшие месяцы и годы.
Давайте рассмотрим, как это правда.
Документация
Тесты служат документацией для того, как должна вести определенную функцию.
Тесты – это по сути требования к продукту, написанные как код. Разработчики, которые работают с этой функцией позже, могут иметь вопросы о намерениях кода или о том, как следует обрабатывать определенные сценарии.
Вместо того, чтобы копаться в старых билетах JIRA или потенциально устаревшей документации, размещенной в другом месте, разработчики могут прыгнуть в тестовый набор прямо в своей IDE. Глядя на тестовые случаи, они могут получить довольно хорошее представление о том, как работает эта функция.
Избегая регрессий
Тесты помогают вам избежать регрессий в вашей кодовой базе, поскольку вы разрабатываете новые функции.
Хотя эти новые функции могут показаться не связанными с некоторым кусочком существующего кода, всегда есть вероятность того, что эти два подключены каким -то образом, который вы пропустили. Сплошная тестовая набор пойдет на участки, где вы случайно повлияли на существующий код негативным образом.
Без тестов вы никогда не можете быть уверены, что новый код, который вы пишете, хорошо играет со старым кодом, не выполняя какое -то обширное (и утомительное) ручное тестирование.
Рефакторинг
Самая убедительная причина написания тестов и почему они на будущее, заключается в том, что они позволяют вам с уверенностью рефактор.
Я уверен, что вы где -то работали, у которого есть большое устаревшее приложение, которое поддерживает команда. В этом устаревшем заявлении есть что -то абсолютно важное. Может быть, это ваша бизнес -логика обработки платежей. Может быть, это ваш код аутентификации.
Что бы это ни было, это важно для основной функциональности вашего приложения, и каждый боится прикоснуться к нему. Он старый и, кажется, работает должным образом, но он превращается в огромный беспорядок кода спагетти, который никто больше не понимает.
И почему все боятся работать над этим? Потому что у него нет тестов! А это означает, что любая строка кода, которую вы измените, открывает возможность разрушения чего -либо без ваших знаний. Это означает, что каждое небольшое изменение, которое вы вносите в эту функциональность, должны быть тщательно протестированы вручную. Это означает, что вы очень нервничаете и скрещиваете пальцы, когда вы нажимаете кнопку «Отправить», чтобы объединить свой код.
Теперь, в альтернативной реальности, представьте себе ту же кусок основной функции, но с хорошим набором тестов, который адекватно охватывает код. Когда придет время рефакторировать код, вы можете сделать это с уверенностью. Почему? Потому что вы узнаете, что что -то сломаете. Если сейчас все проходят тесты, вы вносите некоторые изменения, и теперь у вас есть несколько сбоев, ясно, что что -то еще не совсем правильно.
Но это не беспокоит, потому что вы поймали ошибки, прежде чем выпустите эти новые изменения в производство, и вы сможете найти основную причину и убедиться, что ваш рефактор работает должным образом.
Вывод
Тесты на будущее. Они предоставляют документацию, помогают вам избежать регрессий и позволяют рефакторировать с уверенностью.
П.с. Если вы хотите узнать больше, проверьте Моя статья о разработке на основе тестирования Анкет
Оригинал: “https://dev.to/thawkin3/tests-are-for-the-future-3a4d”