Ситуация: миллионы строк кода, более сотни разработчиков и частые недоработки. Мы хотим избежать повторяющихся дефектов и хотим улучшить дизайн кода (а кто этого не делает?).
Разработка через тестирование (сначала модульный тест, затем код) звучит идеально: напишите тестовый пример для каждой функции.
Но как можно реализовать TDD с таким количеством написанного кода? С чего начать - с функций низкого уровня?
Или нам уже поздно начинать TDD?
2 ответа
Начните с Эффективная работа с устаревшим кодом.
Это не совсем TDD, если вы начинаете с устаревшего кода, но все ваше кодирование может быть TDD. Решая новую проблему, напишите для нее тест. Если вы не можете, потому что унаследованные классы слишком сложно тестировать, тогда начните писать для них тесты, отсекая биты и покрывая биты тестами.
Рефакторинг низко висящего фрукта.
Чтобы избежать повторения дефектов: на примере дефекта напишите тест, который его продемонстрирует. Это может быть относительно широкий тест, который просто моделирует активность пользователя; еще не юнит-тест. Убедитесь, что тест не прошел. Проведите свое исследование; выяснить, почему тест не проходит. Теперь - это важно - прежде чем исправлять ошибку, напишите модульный тест, демонстрирующий ошибку. Исправьте ошибку, и теперь у вас есть два теста, по крайней мере один из них быстрый, которые защищают вас от регрессов.
Поскольку Карл предложил одну книгу, я предлагаю другую: Искусство модульного тестирования Роя Ошерова целая глава посвящена работе с устаревший код ". Я еще не читал эту главу, но первые 5 глав превосходны, и я с нетерпением жду этого.
Похожие вопросы
Новые вопросы
unit-testing
Модульное тестирование - это метод, с помощью которого отдельные блоки исходного кода тестируются, чтобы определить, пригодны ли они для использования.