Мне напомнили о том, что не надо беспокоиться о двери сарая, когда лошадь уже заперта.
Реальность такова, что на самом деле не существует экономически эффективного способа получить хорошее тестовое покрытие для унаследованной системы, конечно же, в короткие сроки. Как упомянул MattNz, это будет очень трудоемкий процесс и в конечном итоге дорогостоящий. Моя интуиция говорит мне, что если вы попытаетесь сделать что-то, чтобы произвести впечатление на руководство, вы, вероятно, создадите новый кошмар обслуживания, потому что пытаетесь показать слишком много слишком быстро, без полного понимания требований, которые вы пытаетесь проверить.
На самом деле, когда вы уже написали код, практически уже поздно эффективно писать тесты без риска пропустить что-то жизненно важное. С другой стороны, вы могли бы сказать, что некоторые тесты лучше, чем никаких тестов, но если это так, сами тесты должны показать, что они повышают ценность системы в целом.
Я бы посоветовал взглянуть на те ключевые области, где вы чувствуете, что что-то «сломано». Я имею в виду, что это может быть ужасно неэффективный код, или то, что вы можете продемонстрировать, ранее было дорогостоящим в обслуживании. Документируйте проблемы, а затем используйте это в качестве отправной точки для введения уровня тестирования, который поможет вам улучшить систему, не предпринимая больших усилий по реинжинирингу. Идея здесь состоит в том, чтобы не играть в догонялки с тестами, а вместо этого вводить тесты, которые помогут вам решить конкретные проблемы. По прошествии некоторого времени посмотрите, сможете ли вы измерить и провести различие между предыдущей стоимостью обслуживания этого раздела кода и текущими усилиями с исправлениями, которые вы применили с их поддерживающими тестами.
Следует помнить, что руководство больше интересуется затратами / выгодами и тем, как это напрямую влияет на их клиентов и, в конечном счете, на их бюджет. Они никогда не заинтересованы в том, чтобы делать что-то просто потому, что это лучше всего делать, если только вы не докажете, что это принесет им пользу, которая им интересна. Если вам удастся показать, что вы улучшаете систему и получаете хорошее тестовое покрытие для работы, которую вы выполняете в настоящее время, руководство, скорее всего, сочтет это эффективным приложением ваших усилий. Это могло бы позволить вам аргументировать аргумент в пользу распространения ваших усилий на другие ключевые области, не требуя либо полного замораживания разработки продукта, либо, что еще хуже, почти невозможного аргументировать переписывание!