Мені пригадується той вислів про те, щоб не турбуватися про двері сараю, коли кінь уже закрутив.
Реальність полягає в тому, що насправді не існує рентабельного способу отримати хороше тестове покриття для застарілої системи, звичайно, не за короткий проміжок часу. Як згадував MattNz, це буде дуже трудомістким процесом, і в кінцевому рахунку дорого коштує. Мій кишечник говорить мені, що якщо ви спробуєте зробити щось, щоб справити враження на менеджмент, ви, ймовірно, створите новий кошмар з технічного обслуговування через те, що занадто швидко намагаєтесь показувати, не розуміючи повністю вимог, які ви намагаєтеся перевірити.
Реально, як тільки ви вже написали код, майже пізно писати тести ефективно, не ризикуючи пропустити щось життєво важливе. З іншого боку, ви можете сказати, що деякі тести краще, ніж жодні тести, але якщо це так, самі тести повинні показати, що вони додають цінності системі в цілому.
Моя пропозиція полягала б у тому, щоб подивитися на ті ключові сфери, де ви відчуваєте, що щось "зламане". Я маю на увазі, що це може бути жахливо неефективним кодом, або що ви можете продемонструвати, що раніше було дорого підтримувати. Задокументуйте проблеми, а потім використовуйте це як вихідну точку, щоб запровадити рівень тестування, який допоможе вам вдосконалити систему, не докладаючи великих зусиль для реінжинірингу. Ідея тут полягає в тому, щоб уникнути гри з тестами, а замість цього ввести тести, які допоможуть вам вирішити конкретні проблеми. Через певний проміжок часу подивіться, чи можете ви виміряти та відрізнити попередні витрати на підтримку цього розділу коду та поточні зусилля з виправленнями, які ви застосували за допомогою своїх тестів, що підтримують.
Слід пам’ятати, що керівництво більше цікавить вартість / вигода та те, як це безпосередньо впливає на їхніх клієнтів, і в кінцевому рахунку на їхній бюджет. Їм ніколи не цікаво щось робити просто тому, що це найкраще робити, якщо ви не зможете довести, що це забезпечить їм користь, яка їх цікавить. Якщо ви зможете показати, що ви вдосконалюєте систему та отримуєте хороше тестове покриття роботи, яку ви зараз виконуєте, керівництво швидше сприймає це як ефективне застосування ваших зусиль. Це, можливо, дозволить вам аргументувати справу щодо поширення ваших зусиль на інші ключові сфери, не вимагаючи повної заморозки розробки продукту, а ще гірше - майже неможливо аргументувати перезапис!