День девятьсот тридцать четвёртый.
4 Мифа о Юнит-Тестах
Многие разработчики выступают против модульного тестирования или просто используют подход «абстрагируйте и имитируйте всё, что можно». Сегодня рассмотрим 4 самых распространённых мифа о модульном тестировании.
1. Это пустая трата времени
Это правда, что модульное тестирование не поможет вам в начале вашего проекта. Проект без тестов будет иметь фору в начале, но быстро замедляется до такой степени, что становится трудно добиться прогресса. Модульное тестирование экономит время в долгосрочной перспективе: позволяет поддерживать стабильный темп разработки.
Вам не нужно слишком беспокоиться об ошибках, которые могут появиться при написании новых функций. Тесты помогают выявить (и исправить) эти ошибки на ранних этапах. Вы также становитесь намного увереннее при рефакторинге своего кода, поскольку знаете, что тесты вас подстрахуют. Постоянный рефакторинг необходим, чтобы ваш проект оставался поддерживаемым. Поначалу тратить время на написание тестов поначалу кажется бессмысленным, но экономия времени в долгосрочной перспективе того стоит.
2. Это сложно или занимает слишком много времени
Когда вы впервые начнёте писать модульные тесты, это, вероятно, покажется сложным. Как и в первый раз, когда вы сели за руль. Педаль газа, тормоза, поворотники, зеркало заднего вида… Всё новое. Но как только вы преодолеете первоначальные трудности, вождение покажется простой задачей. И это открывает новый мир возможностей, который вы можете свободно исследовать. С модульным тестированием то же самое. По мере накопления опыта время, затрачиваемое на написание тестов, резко сокращается, что повышает окупаемость ваших усилий.
3. Оно нужно только тогда, когда разработчиков много
Модульное тестирование может помочь как команде из одного человека, так и команде из 40 человек. Оно помогает разработчику поддерживать постоянный темп программирования и вводить новые функции почти так же быстро, как в начале проекта. Все преимущества модульного тестирования одинаково применимы как к большим, так и к небольшим командам разработчиков.
4. Оно автоматически улучшает структуру кода
Это распространённое заблуждение, которое является правдой лишь отчасти. И эта часть намного меньше, чем многие думают. Возможность модульного тестирования фрагмента кода - хорошая лакмусовая бумажка, но она работает только в одном направлении. Это хороший отрицательный показатель: он указывает на некачественный код с относительно высокой точностью. Если вы обнаружите, что этот код трудно поддается модульному тестированию, это явный признак того, что код нуждается в улучшении. Низкое качество обычно проявляется в тесной связанности, что означает, что разные части кода недостаточно отделены друг от друга, и их сложно тестировать по отдельности.
К сожалению, возможность модульного тестирования фрагмента кода - плохой положительный показатель. Тот факт, что вы можете легко провести модульное тестирование кодовой базы, не обязательно означает, что она хорошего качества. Проект может обернуться катастрофой, даже если он демонстрирует высокую степень разделения.
Итого
Подводя итог, можно сказать, что модульное тестирование требует больше времени в краткосрочной перспективе, но может сэкономить сотни часов на ручном тестировании.
Источник: https://enterprisecraftsmanship.com/
Автор оригинала: Vladimir Khorikov
Post #1149
1.32K