Регресійне тестування
Вся справа в регресійному тестуванні .
Уявіть, що наступний розробник дивиться на ваш метод і помічає, що ви використовуєте магічні числа. Йому сказали, що магічні числа є злими, тому він створює дві константи, одну для числа два, іншу для числа три - немає нічого поганого в здійсненні цієї зміни; це не так, як він змінював вашу вже правильну реалізацію.
Відволікаючись, він перевертає дві константи.
Він вводить код, і все, здається, працює нормально, оскільки не відбувається тестування регресії після кожного введення.
Одного разу (може бути тижнів пізніше) щось інше ламається. І в іншому місці я маю на увазі цілком протилежне розташування кодової бази, яке, здається, не має нічого спільного з polynominal
функцією. Години болісного налагодження призводять до винуватця. Протягом цього часу додаток продовжує виходити з ладу у виробництві, що спричиняє багато проблем у ваших клієнтів.
Зберігання оригінальних тестів, які ви написали, може запобігти такому болю. Розгублений розробник вчинить код і майже одразу побачить, що він щось порушив; такий код навіть не дійде до виробництва. Додаткові тести додатково будуть дуже точними щодо місця помилки . Вирішити це було б не складно.
Побічний ефект ...
Насправді більшість рефакторингу сильно ґрунтується на регресійному тестуванні. Зробіть невелику зміну. Тест. Якщо це пройде, все добре.
Побічний ефект полягає в тому, що якщо у вас немає тестів, практично будь-який рефакторинг стає величезним ризиком порушення коду. Зважаючи на те, що в багатьох випадках, керівництву вже важко пояснити, що рефакторинг слід робити, це буде ще важче зробити після попередніх спроб рефакторингу, введених декілька помилок.
Проводячи повний набір тестів, ви заохочуєте рефакторинг, і так краще, чистіший код. Без ризику стає регулярно більше спокушатись на регулярній основі.
Зміни вимог
Ще одним важливим аспектом є те, що вимоги змінюються. Вас можуть попросити обробити складні номери , і раптом вам потрібно буде пошукати журнал контролю версій, щоб знайти попередні тести, відновити їх та почати додавати нові тести.
Чому все це клопоту? Навіщо видаляти тести, щоб потім їх додати? Ви могли б утримати їх в першу чергу.