Привет! 👋
Меня зовут Саша, я разработчик в DRIVE2.
Веду технический блог, пишу книги о разработке. Сегодня расскажу о TDD и почему я пользуюсь им в работе.
Один из проектов, где я использую TDD.
Проект без тестов
Плюсы тестирования
- 📉 Отсутствие регрессий
- 📝 Дополнение к документации
- ✍️ Актуальное описание работы
НЕТ 🔥 ВРЕМЕНИ, ДАВАЙ УЖЕ 🔥 В ПРОД, ТЕСТЫ 🔥 ПОТОМ, 🔥 ААААА
TDD помогает эти проблемы решить
Плюсы
- 🛠 Исчезает проблема «дополнительной работы»
- 🏃 Писать тесты и рефакторить входит в привычку
- 😷 Рефакторить безопаснее
- 👁 Видно сущности, делающие слишком много
- 📦 Проектируем API до реализации
Издержки
- 🧠 Надо «вывернуть» мозг наизнанку
- 🦄 «Побуждает думать лишь о Happy Path»
- ⏳ Надо закладывать время в цикл разработки с самого начала
Как упростить тестирование
- 🧼 Чаще использовать чистые функции
- 🪝 Обращать внимание на зацепление кода
- 🥷 Тестировать только свой код
- 🛠 Использовать удобные инструменты
- 🛸 Потратить время на удобную инфраструктуру
Как искать пахнущий код
- 🕳 Тестов слишком много
- 🤷 Описание ссылается на несвязанные вещи
- 🔮 Ожидание оформлено невнятно
- 🧐 Подготовка теста слишком сложная
- ⚙️ Тест проверяет детали реализации
- 📚 Нужно мокать библиотеку
- ❎ Тест всегда зелёный
Как помочь лиду увидеть пользу
- 😃 Скорее всего, лиды и сами понимают, что это нужно
- 🚌 Замерить бас-фактор, регрессии, документированность
- 📈 Измерить те же параметры с тестами, сравнить
- 🔫 Партизанить (если всё совсем плохо)
Как помочь бизнесу увидеть пользу
Это сработает, если проект — не прототип.
- 🧑🔬 Привести исследования о тестировании
- 🔬 Замерить регрессии, время на поддержку и внедрение фич
- 🧬 Сравнить долготу жизни проектов с тестами и без
- 🧑💻 Сравнить среднее время работы сотрудников на проектах с тестами и без