TGTGInsightаналитика telegramLIVE / telegram public index
← Программирование для гуманитариев
Программирование для гуманитариев avatar

TGINSIGHT POST

Post #231

@it_human

Программирование для гуманитариев

Просмотры3,690Количество просмотров
Опубликован26 сент.26.09.2020, 08:30
Содержимое поста

Содержимое

Тесты 99 little bugs in the code, 99 little bugs in the code. Take one down, patch it around 117 little bugs in the code Если вы уже писали какой-то код в своей жизни, то наверняка сталкивались с тем, как мучительно бывает его отлаживать, когда он не работает: на вид всё правильно написано, а работать не хочет. Где закралась ошибка (а то и несколько) - в упор не видишь. Запускаешь его, кажется уже в сотый раз - здесь чуть-чуть что-то меняешь, там - а толку по-прежнему нет. Вставляешь в разных местах print, чтобы отловить злосчастную ошибку, в итоге часа через 3, а то и на следующий день наконец находишь баг, чинишь его - запускаешь код - и натыкаешься на следующую ошибку… Чтобы разработка не превращалась вот в такой вот сизифов труд, не ленитесь писать тесты. Тесты - это код, который проверяет, что основной код в вашей программе работает правильно. Может показаться, что тесты - это лишняя работа, которая только усложняет жизнь, но на самом деле они призваны облегчать жизнь разработчику. Ситуации, описанной в первом абзаце обычно предшествуют такие события: вы написали 100-200-300-500 строчек кода, и наконец решаете его впервые запустить - посмотреть, как он отработает. А он никак не отработает, потому что в нём ошибки. Но где эти ошибки, в какой из сотен строчек кода? Начинается геморрой по их поиску. В альтернативной вселенной же, где вы вовремя вспомнили о тестах, всё выглядит иначе. Вы написали 10 строчек кода, и сразу же - тест, проверяющий, что эти 10 строчек работают так как должны. Тест выявил ошибку, вы её быстро правите (не так уж сложно найти и поправить ошибку в 10 строчках), снова запускаете тест - и вот ошибки нет, 10 строчек работают правильно. Можно писать следующие 10 строчек. Пишете функцию - и сразу тест, проверяющий её корректность. Пишете класс - и сразу его тестируете. Существует даже такой инженерный подход: сначала писать тесты для кода, а потом уже сам код. Тесты нужны не только для того, чтобы вовремя находить ошибки в процессе разработки. Они еще призваны проверять конечный продукт перед тем, как выкатывать его на продакшен - снижают вероятность поломок и багов. И еще тесты дают возможность менять уже написанный код в дальнейшем, не ломая работающий функционал. Например, приходит в компанию новый разработчик Вася, берёт код проекта и меняет там одну строку. «Разве я могу что-то сломать, поменяв только одну строку? Что может пойти не так?» - думает Вася. А одна строка, один символ, одна запятая и любое микроскопическое изменение - могут сломать всю программу, причем в самых неожиданных местах. Но беззаботный Вася об этом не думает, и вносит свои изменения в код. Однако, другие разработчики перед этим уже написали тесты, проверяющие, что программа работает правильно, и тесты грамотно покрывают весь её функционал. И когда эти тесты запускаются, все видят, что код не работает, и запускать в продакшен его нельзя - нужно искать баг. Таким образом тесты предотвратили кучу проблем - жалобы от недовольных пользователей и претензии от начальства - репутация компании осталась незапятнаной, а Вася получил наглядный урок, что даже 1 строчка кода может всё сломать, и тесты придумали совсем не дураки. Тем не менее, я думаю, большинство разработчиков в какие-то моменты попросту забивают на тесты, и я не исключение. В первые пару лет работы я их вообще не писала (трюк выполнен профессиональным каскадёром, не пытайтесь повторять, опасно для жизни). Но тут главное помнить - тесты облегчают жизнь разработчика, а не усложняют её. Пишите тесты, дамы и господа.