Зачем? Что такое рефакторинг и быстрая система обратной связи (short feedback loop)?

Как вы представляете себе идеальный мир разработчика? Наверное все сразу думают об интересных написаниях новых фич, использованию самых свежих технологий, выполнение некоторого функционала раз и навсегда и т. д.

Но мы с вами живем не в идеальном мире и очень часто возникает необходимось серйозно переделать почти сделанную работу в зжатые сроки или привести кодовую базу в порядок, не меняя функционал (рефакторинг), так как поддержка существующего кода превратилась в ад. На словах виглядит просто, но представьте себе десятки тысяч строк кода, понимания работы которых уже нет ни у кого из оставшихся сотрудников компании.

Поэтому возникает вопрос - как можна, переписывая код, убедится в том, что ми ничего не поломали? Первое, что приходит в голову - это после каждого изменения проверять все, пытаясь вызывать ендпоинты бекенда, кликать на кнопки UI и смотреть, все ли "хорошо" и т. д. Но у этого подхода есть три недостатка. Во-первых, у вас может не быть понимания "хорошо", так как разработкой этого функционала вы не занимались. Поэтому вы можете не знать в деталях, как все должно работать на самом деле. Во-вторых, даже если вы знаете определение "хорошо", то вы попросту можете забыть что-то проверить. Из-за этого некоторые баги останутся незамеченными и "вылезут" в самый неподходящий момент. В-третьих, даже если вам повезло и вы все-таки сумели все проклацать, то наверное это у вас заняло достаточно много времени, тратить которое в следующий раз (после новых изменений) вы бы не хотели.

Есть ли какие-то другие способы одолеть эту проблему качественнее и легче? Ответ положительный - это автоматизированные тесты. Самый простой пример - можна написать скрипт для вызова эндпоинтов, кликание кнопок и т. д., что значительным образом сэкономит вам время и убережет от человеческих ошибок. Благодаря наличию тестов, у вас есть возможность практически моментально проверить, работает ли код "хорошо". Быстрые проверки работоспособности кода авто-тестами еще называют быстрой системой обратной связи (short feedback loop), так как они позволяют бысто получить ответ на вопрос: "А работает ли мой измененный код правильно?".

Last updated