Каковы первые задачи по внедрению модульного тестирования в уже существующих приложениях?

StackOverflow https://stackoverflow.com/questions/66361

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top