Тести цінні. Принаймні, вони фіксують, що хтось вважав, що їм слід витратити час на їх написання, тому, імовірно, вони колись мали для когось значення. Якщо пощастить, вони містять повний запис усіх функцій та помилок, над якими працювала команда, хоча вони також просто були способом потрапити на якийсь довільний номер тестового покриття, не будучи ретельно продуманим. Поки ви не подивитесь на них, ви не дізнаєтесь, у чому справа.
Якщо більшість ваших тестів проходить більшу частину часу, тоді просто кусайте кулю і вкладайте час на з'ясування того, що намагалися зробити кілька невдалих тестів, або виправляючи або вдосконалюючи їх, щоб наступний раз робота була легшою. У цьому випадку пропустіть вперед до пункту Визначення намірів для кожного тестового розділу, щоб отримати поради щодо того, що робити з невеликою кількістю невдалих тестів.
З іншого боку, зараз, можливо, ви зіткнулися з червоним складанням, і сотні, а то й тисячі тестів, які не пройшли якийсь час, а Дженкінс вже давно не зелений. На даний момент статус збирання Дженкінса став марним, і ключовий показник проблем із реєстрацією вже не працює. Вам потрібно виправити це, але не можете дозволити собі зупинити весь прогрес вперед, поки ви прибираєте безлад у своїй вітальні.
Для того, щоб зберегти розумність під час виконання необхідної археології, щоб визначити, яке значення може бути відшкодовано за результатами тестів, які були невдалі, я рекомендую наступні кроки:
Тимчасово відключіть невдалі тести.
Є кілька способів, як ви могли це зробити, залежно від оточення, яке ви чітко не описуєте, тому я не можу реально рекомендувати жоден конкретний.
Деякі рамки підтримують уявлення про очікувані збої. Якщо це так, то це чудово, оскільки ви побачите відлік кількості тестів, що залишилися в цій категорії, і ви навіть будете поінформовані, якщо деякі з них почнуть проходити несподівано.
Деякі рамки підтримують тестові групи і дозволяють сказати Хадсону лише виконати деякі тести або пропустити групу тестів. Це означає, що ви можете час від часу запускати тестову групу вручну, щоб побачити, чи зараз вони проходять.
Деякі рамки дозволяють коментувати або іншим чином позначати окремі тести, які слід ігнорувати. У цьому випадку важче керувати ними як групою, але це заважає їм відволікати вас.
Ви можете перемістити тести до вихідного дерева, яке зазвичай не включається в збірку.
У крайньому випадку ви можете видалити код з HEAD системи управління версіями, але це ускладнить розпізнавання, коли третя фаза буде завершена.
Мета полягає в тому, щоб змусити Дженкінса якнайшвидше піти в зелений колір, тому ви зможете якомога швидше почати рухатися в правильному напрямку.
Тримайте тести відповідними.
Постановіть додавати нові тести, коли ви додаєте або змінюєте код, і зобов’язуйтеся зберігати всі проходять тести.
Тести можуть вийти з ладу з різних причин, включаючи те, що вони не були добре написаними тестами для початку. Але як тільки ви отримаєте Дженкінс зелений, зберігати його таким чином дійсно важливо.
Звикайте писати хороші тести, і зробіть це великою справою, якщо тести почнуть провалюватися.
Визначте наміри кожного тесту.
Пройдіть інвалідні тести по черзі. Почніть з тих, що впливають на модулі, які ви найчастіше змінюєте. Визначте мету тесту та причину відмови.
Чи перевіряється вона функцією, яку спеціально було видалено з бази коду? Тоді ви, ймовірно, можете її видалити.
Хіба це зловлення клопа, якого ще ніхто не помітив? Повторно встановіть тест і виправте помилку.
Це не вдається через те, що він робив необґрунтовані припущення (наприклад, якщо текст кнопки завжди буде англійською мовою, але тепер ви локалізували свою заявку на кількох мовах)? Потім з’ясуйте, як зробити тест зосередженим на одній речі, і якнайкраще ізолюйте його від незв'язаних змін.
Чи розповсюджується тест по всій програмі та чи є тест системи? Потім вийміть його з вашого основного тестового набору Дженкінса і додайте його до набору регресій, який працює рідше.
Чи змінилася архітектура програми до невпізнання, тому тест більше не робить нічого корисного? Видаліть його.
Чи був доданий тест, щоб штучно збільшити статистику покриття коду, але насправді це не що інше, як підтвердження того, що код складено правильно і не переходить у нескінченний цикл? Або ж тест просто підтверджує, що обраний вам глузливий фреймворк повертає результати, про які ви щойно розповіли? Видаліть його.
В результаті цього деякі тести стоять, деякі будуть модифіковані, деякі розділені на кілька незалежних, кусаються за розміром, а деякі вилучено. Поки ви все ще просуваєтеся з новими вимогами, потрібно виділити трохи часу для вирішення технічної заборгованості, як це - відповідальна справа.