Каковы первые задачи по внедрению модульного тестирования в приложениях Brownfield? - PullRequest
4 голосов
/ 16 сентября 2008

Реорганизуете ли вы сначала SQL-код? Ваша архитектура? или ваша кодовая база? Вы меняете языки? Вы все выбрасываете и начинаете с нуля? [Не рефакторинг]

Ответы [ 2 ]

5 голосов
/ 16 сентября 2008

Я добавляю модульное тестирование в большую, унаследованную базу кодов спагетти.

Мой подход заключается в том, что когда меня просят решить проблему, я пытаюсь создать новую обертку вокруг части базы кода, которая соответствует моей текущей задаче. Эта новая оболочка разработана с использованием TTD (сначала написание теста). Иногда вызываю в устаревший код, не проверенный модулем. В других случаях я делаю новую копию существующего модуля и начинаю применять к нему серьезное насилие. Иногда я переписываю функциональность с нуля.

Но так как я держу это довольно хорошо проверенным, я чувствую себя довольно хорошо.

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

Я не пытаюсь (и не имею полномочий) переписывать или добавлять тесты в те части кода, которые не затрагиваются моей текущей проблемой (обычно это ошибка, которую я пытаюсь исправить), но у меня есть довольно агрессивная активная позиция в отношении всего, что затронуто и может иметь отношение к делу.

Обновление: Penguinix спросил: «На каких языках вы работаете? Какой конкретный тестовый комплект вы рекомендуете?»

Прямо сейчас я работаю в ... э-э ... Свинка! Но тот же принцип работает где угодно.

Что-то, что изменило мое понимание UT, было MinUnit: http://www.jera.com/techinfo/jtns/jtn002.html

Когда я увидел MinUnit, это был своего рода «дзенский» момент просветления для меня. Это избавило меня от недоразумений, связанных с тем, что модульное тестирование было чем-то сложным, требующим сложных OO-инфраструктур и т. Д. Я понял, что UT только что написал кучу тестов. «Жгут» вы можете написать самостоятельно, примерно за 3 минуты, на любом понравившемся вам языке. Просто встань и сделай это.

1 голос
/ 16 сентября 2008

Это действительно зависит от состояния кодовой базы ... существуют ли массивные классы? один класс с мега-методами? Классы тесно связаны? Конфигурация - это бремя?

Учитывая это, я предлагаю прочитать Эффективно работать с устаревшим кодом , выбрать проблемы и применить рекомендации.

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