Как реализовать тестовую разработку с помощью унаследованного кода? - PullRequest
13 голосов
/ 08 июля 2010

Ситуация: миллионы строк кода, более сотни разработчиков и частые дефекты. Мы хотим избежать повторения дефектов и хотим улучшить дизайн кода (а кто нет?).

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

Но как много кода написано, как можно реализовать TDD? С чего начать - с низкоуровневых функций?

Или мы слишком поздно начали TDD?

Ответы [ 2 ]

23 голосов
/ 08 июля 2010

Начните с Эффективная работа с устаревшим кодом .

Это не совсем TDD, если вы начинаете с устаревшего кода - но все ваше кодирование может быть TDD.Когда вы решаете новую проблему, напишите для нее тест.Если вы не можете этого сделать из-за того, что унаследованные классы слишком сложны для тестирования, тогда начните писать тесты для них, вырезать биты и покрывать биты тестами.

Переформулировать низко висящий фрукт .

Чтобы избежать повторяющихся дефектов: приведите пример дефекта, напишите тест, демонстрирующий это.Это может быть относительно широкий тест, который просто имитирует активность пользователя;еще не юнит тест.Убедитесь, что тест не пройден.Сделайте свое исследование;выяснить, почему тест не проходит.Теперь - это важно - прежде чем исправлять ошибку, напишите модульный тест, который демонстрирует ошибку.Исправьте ошибку, и теперь у вас есть два теста, по крайней мере, один быстрый, которые защищают вас от регрессий.

2 голосов
/ 08 июля 2010

Поскольку Карл предложил одну книгу, я предложу другую: «1001 * Искусство модульного тестирования» Роя Ошерова имеет целую главу «Работа с устаревшим кодом». Я еще не читал эту главу, но первые 5 глав превосходны, и я с нетерпением жду этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...