Як пояснити Flaky Test Quarantine Policy в англійській мові
Learn the English phrases for proposing, explaining, and enforcing a flaky test quarantine policy with a team, without it becoming a place tests go to be forgotten.
Неефективний тест — той, що періодично зазнає невдачі без будь-яких реальних змін коду — розмиває довіру до тестового набору швидше, ніж майже що-небудь інше. Правила карантину (пересування неефективних тестів з блокувального набору, поки вони розслідуються) є звичайним рішенням, але його потрібно уважно пояснити англійською, або він тихо перетвориться на кладовище, де тести будуть ігноруватися назавжди. Цей підручник містить фрази, які стосуються запропонованих і впроваджених правил.
Пропозиція політики
Використовувати карантин як тимчасову зону очікування з терміном дії, а не як постійне виключення.
- «Я б хотів запропонувати карантинний процес для тестів flaky — замість блокування кожного злиття, ми пересуємо підтверджений тест flaky з необхідного набору для фіксованого вікна, поки хтось розслідує»
- «Ключеве слово тут — тимчасове — карантин — це не місце, де тести йдуть, щоб померти, це двотижнева коробка з власником і терміном»
- «Без такої політики, люди вже працюють навколо неформальних тестів — перезапуск CI, ігнорування червоних збірок — це просто робить це видимим і відстежується замість ad hoc»
Визначення того, що кваліфікується
Будьте точними щодо смужки для карантину тесту, щоб її не використовували як люк для справжніх помилок.
- «Тест підлягає карантину, якщо він провалився з перервами щонайменше три рази без відповідної зміни коду — а не просто «він провалився один раз і я поспішаю»
- «Якщо невдача відтворюється навіть іноді за тих же умов, це справжня помилка, а не лускатість — вона не належить до карантину»
- «Карантин є для надійності тесту, а не спосіб замовчування тесту, який правильно ловить справжню регресію»
Призначення власника
Карантин без власника - це місце, де тести зникають назавжди - будьте чіткі про те, хто відповідальний.
- «Кожен карантинний тест потребує власника і квитка — без винятків, навіть якщо виправлення виглядає тривіальним»
- «Хто б не ставив тест на карантин, він відповідає за його сортування в межах вікна, а не просто за його позначення і перехід в інший»
- Якщо ніхто не володіє ним через два тижні, за замовчуванням тест знищується, а не продовжується карантин на неопределённое время
Обслуговування Pushback
Деякі члени команди будуть хвилюватися, що карантин приховує проблеми, а не вирішує їх — зверніться до цього безпосередньо.
- «Я розумію занепокоєння, що це може стати способом уникнути врегулювання тестів — саме тому ми поєднуємо його з жорстким терміном дії і видимою панеллю того, що зараз знаходиться під карантином»
- «Альтернативою є не «жодних тріщинних тестів» — це тріщинні тести, які беззвучно блокують злиття і кожен перезапускає CI без паперового сліду. Це робить проблему видимою, а не невидимою»
- «Ми переглянемо список карантину в щотижневому інженерному синхронізації, тому це залишається спільною відповідальністю, а не забутим відставанням однієї людини»
Звіт про стан здоров’я на карантині
Регулярно повідомляти про стан списку карантину, щоб він не зростав беззвучно.
- «Цього тижня у нас було чотири тести в карантині — два були виправлені і не були під карантином, один був вилучений як застарілий, один все ще розслідується і потребує нового власника»
- «Карантинний список зростав протягом місяця без того, щоб щось з нього виходило — це говорить нам, що процес пошкоджений, а не те, що ми раптом маємо більше лускатих тестів»
Словник-довідник
| Term | Meaning |
|---|---|
| Flaky test | A test that intermittently fails without a corresponding code change |
| Quarantine | Temporarily removing a test from the blocking/required suite while it’s investigated |
| Reproducible failure | A failure that can be triggered reliably under known conditions (not flakiness) |
| Escape hatch | An exception mechanism that can be misused to avoid doing the harder, correct work |
Ключеві моменти
- Визначити карантин як тимчасовий, з терміном дії — не місце, де тести можна забути.
- Визначте точну межу того, що можна вважати незначною, відмінною від справжньої, відтворюваної вади.
- Призначте власника і квиток для кожного тесту, який знаходиться у карантині — карантин без власника є тим місцем, де буде порушено довіру.
- Розв’ язайте проблему « це приховує проблеми » безпосередньо, поєднавши карантин з видимістю і жорстким терміном.
- Регулярно звіщайте про стан здоров’я, щоб затримка в списку була виявлена зарано.
Національний склад: Національний склад: Національний склад: Національний склад: Національний склад: Національний склад:
Погляньмо правді в очі: «флакони тесту» - це фраза, яка може швидко стати джерелом розчарування і непорозуміння. Це має невід’ємне наслідок помилки, що не завжди є метою, коли обговорюється складний процес тестування, як карантин. Для не-рідних носіїв англійської мови, особливо тих, хто все ще розвиває свій професійний словник, це може бути неймовірно складно артикулювати чітко і ефективно. Ключовим є рухатися далі простого зауваження * що * проблема є поясненням * чому * це відбувається і пропонування рішення таким чином, що поважає розуміння кожного з потоку тестування.
Розглянемо сценарій під час перегляду коду. Старший інженер, Сара, помічає кілька тестів, які неодноразово провалюються в процесі карантину. Замість того, щоб написати «Ці тести несправні — виправте їх!», вона може сказати: «Я помітив, що декілька тестів постійно переходять у стан карантину. Можемо ми розслідувати причину? Здається, що деякі залежності або зовнішні служби не є надійними під час цих тестових запусків, що спричиняє поведінку карантину. Можливо, додавання короткої затримки перед запуском цих тестів, або дослідження потенційних тайм- аутів у системі, допоможе їх стабілізувати. “Зверніть увагу, як Сара трактує це як * розслідування *, а не звинувачення, і використовує більш точну мову - “послідовне введення”, “спливаюча поведінка” - щоб передати складність.
Аналогічно, у повідомленні Slack, де пояснюється карантинна політика для молодшого розробника, ви можете сказати: « Привіт [Ім’ я розробника], просто коротка записка про процес карантину. Якщо результати тестів закінчуються у цьому місці, це зазвичай означає, що виникла проблема з зовнішніми ресурсами або залежностями, які ще не готові до виконання тесту. Ми прагнемо до активної ідентифікації цих проблем - а не покарання самих тестів. Розглядати карантин як сигнал для дослідження потенційної нестабільності, а не як причину для відмови від тестування». Тут акцент робиться на співпраці і спільній відповідальності.
Нарешті, у описі Запиту на завантаження ви можете вказати: « Цей запит на завантаження містить оновлену стратегію для обробки тестів, які перебувають на стадії карантину. Ми впроваджуємо систему моніторингу для визначення спільних залежностей, що не спрацьовують під час виконання. Карантин тепер буде служити як діагностичний інструмент - флагманські області, що вимагають подальшого дослідження, а не автоматичне позначення тестів як невдалих. Ми також будемо стежити за частотою цих подій, щоб визначити пріоритетність зусиль по усуненню». Цей підхід чітко повідомляє про * мету * карантину і встановлює очікування щодо постійного моніторингу і поліпшення, ключових елементів при роботі з потенційно чутливими відгуками.