TDD: возможно ли начать загрузку при расширении существующего большого приложения? - PullRequest
4 голосов
/ 07 июня 2011

Глава о TDD из «Чистого кода» Мартина поразила мое воображение.

Тем не менее.
В настоящее время я в основном расширяю или исправляю большие существующие приложения.
TDD, с другой стороны, кажется, работает только для записи с нуля.

Говоря об этих больших существующих приложениях:
1. они не были написаны с TDD (конечно).
2. Я не могу их переписать.
3. Написание комплексных тестов в стиле TDD для них не подлежит обсуждению в установленные сроки.

Я не видел упоминаний о "начальной загрузке" TDD в существующее монолитное существующее приложение.

Проблема в том, что большинство классов этих приложений, в принципе, работают только внутри приложения.
Они не отделимы. Они не являются общими. Просто чтобы запустить их, вам нужна, по крайней мере, половина всего приложения. Все связано со всем.
Итак, где же начальная загрузка?

Или есть альтернативная методика с результатами TDD
это будет работать для расширения существующих приложений, которые не были разработаны с TDD?

Ответы [ 3 ]

3 голосов
/ 07 июня 2011

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

Купить Эффективная работа с устаревшим кодом, в котором содержится множество рекомендаций о том, как делать именно то, к чему вы стремитесь.

Возможно, вы захотите взглянуть на ответы на этот связанный вопрос, Добавление модульных тестов в устаревший код.

2 голосов
/ 07 июня 2011

Начните с малого. Захватите фрагмент кода, который может быть разумно извлечен и превращен в тестируемый класс, и сделайте это. Если приложение пронизано таким количеством жестких зависимостей и ужасающей логикой спагетти, что вы не сможете выполнить рефакторинг, не боясь что-то сломать, начните с проведения целого ряда интеграционных тестов, чтобы вы могли подтвердить правильное поведение до / после того, как начнете возиться. с этим.

0 голосов
/ 07 июня 2011

Ваше существующее приложение звучит так, как будто оно страдает от жесткой связи и большого количества технических долгов.В таких случаях вы можете потратить ОЧЕНЬ много времени, пытаясь написать комплексные модульные тесты, в которых время может быть лучше потрачено на серьезный рефакторинг, особенно способствующий слабой связи.

В других случаях вкладывая время и усилия в модульное тестирование сПлатформа Mocking может быть полезна, поскольку она помогает отделить приложение для целей тестирования, позволяя тестировать отдельные компоненты.Методы внедрения зависимости могут быть использованы в сочетании с насмешками, чтобы помочь в этом.

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