Зробіть так, що неможливо насправді нічого випустити без фіксації тестів.
- Не вдалося зібрати, якщо якісь тести не вдалися.
- Не вдалося зібрати, якщо будь-які тести ігноруються.
- Не вдалося зібрати, якщо тестове покриття опуститься нижче певного рівня (тому люди не можуть просто видалити тести, щоб обійти його).
- Використовуйте сервер CI, щоб робити версії версій, і дозволяти тільки збірки з падіння збірки сервера переходити до UAT / інсценізації / виробництва / будь-чого.
Справа в тому, що якщо ваша збірка порушена більше ніж 15 хвилин за один раз (а це включає невдалі тести), то ви не здійснюєте постійної інтеграції .
"Ядерний варіант" полягає в тому, щоб ваш сервер управління джерелами відмовився від здійснення / перевірки будь-якого користувача, окрім того, хто зламав збірку. Очевидно, що адміністратору потрібно мати можливість це тимчасово відміняти, якщо зазначена людина піде у відпустку - але, якщо всі знають, що вся команда накручена, поки вони не виправлять тести, тоді вони вирішать це чорт швидко.
Хороша політика (яка ще краще, коли вона автоматизована) - повернути джерело до останнього відомого стабільного комітету через 15 хвилин після завершення збірки. Іншими словами, якщо ви не можете його виправити або не знаєте, що призвело до розбиття збірки або тесту, поверніть його та працюйте локально, поки це не вирішиться - ніколи не змушуйте інших розробників закручувати свої пальці, поки ви шліфуєте на проблема, яка їх не хвилює.
PS Якщо у вас вже багато невдалих тестів, ви можете скористатись "кінцевим порогом" в CI. Встановіть його так, що збірка вийде з ладу лише в тому випадку, якщо є більше тестів, ніж минулого разу. Це разом із правилом покриття змусить розробників врешті-решт покращити тестову ситуацію, якщо вони хочуть продовжувати працювати.
PPS Я розумію, що це може здатися драконічним для деяких, але це все знижує вашу культуру. Якщо ви потрапите до того моменту, коли люди просто не залишають складку розбитою або тести не спрацьовують (моя команда майже ніколи цього не робить, хоча мені періодично доводиться їх нагадувати), то вам не потрібно продовжувати з найсуворішим набором правил. Незважаючи на те, що IMO, ви завжди повинні провалити збірку на тесті зламаного модуля. Інтеграція / тести браузера іноді можуть провалюватися.