Как можно реализовать разработку через тестирование с унаследованным кодом?

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

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

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

Или мы слишком опаздываем для запуска TDD?

13
задан Reinstate Monica - Goodbye SE 8 July 2010 в 13:52
поделиться

2 ответа

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

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

Refactor the Low-Hanging Fruit.

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

23
ответ дан 1 December 2019 в 21:36
поделиться

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

2
ответ дан 1 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: