Як пояснити Flaky CI для учасників англійською мовою
Вивчіть англійську лексику і фрази для пояснення ненадійних тестів і ненадійних конвеєрів CI для нетехнічних користувачів без відкидання або тривоги.
Flaky CI є справді важкою справою пояснити нетехнічним зацікавленим сторонам - проблема звучить суперечливо (“тест зазнав невдачі, але код був в порядку”) і може легко прийти як виправдання або ознака низької якості, якщо описано погано. Правильна англійська трактує тріщини як відомий, керований інженерний виклик з чітким планом, а не таємницю або виправдання. Цей посібник розкриває, як це чітко пояснити.
Ключовий словник
** Флакі тест ** — тест, який іноді успішно проходить, а іноді зазнає невдачі, якщо його проводити з тим самим, незмінним кодом, зазвичай, через проблеми з часом, зовнішні залежності або спільний стан, а не через справжню ваду. “Це тестування неефективне — воно зазнає невдачі приблизно раз на двадцять, навіть якщо в коді нічого не змінилося.”
** Невірна помилка ** — результат невдалого тестування, який не вказує на справжню проблему з кодом, чітко відрізняючи його від законної помилки для учасників, які не знайомі з цим розмежуванням.
- « Це була помилка, спричинена проблемою з часом у самому тесті, а не фактичним дефектом у функціоналі. » *
** Частота неоднозначності ** — кількісно виражена мірка того, як часто тест або набір тестів дає непослідовні результати, корисна для пояснення масштабу проблеми у конкретних термінах, а не у нечітких розчаруваннях. “Наша ступінь нестачі в інтеграційному пакеті на даний момент становить близько 4%, що достатньо високо, щоб сповільнювати випуски.”
** Корінь причини (неоднорідності) ** — основна технічна причина, з якої тест поводиться непослідовно, наприклад, умова гонки, неперевірений виклик мережі або спільні тестові дані — варто назвати її конкретно, а не залишати неоднорідність як непояснену загадку.
- “Корінь проблеми виявився у перегонах між двома асинхронними операціями, які зазвичай, але не завжди, завершуються у очікуваному порядку.” *
** Карантин ** — тимчасове виключення збірки з тесту, який має відомі проблеми, під час його дослідження і виправлення, щоб він не сповільнював роботу, що не пов’ язана з цим тестом. “Ми поставили на карантин тест на неправильну оплату, щоб він не блокував злиття, поки ми розслідуємо, але він все ще працює і повідомляється окремо.”
Звичайні фрази
- «Ця помилка не пов’язана з вашою зміною — це відомий тест, який ми активно працюємо над виправленням»
- «Наш рівень лущення в даний час становить [X]%, і ось наш план, щоб знизити його»
- Ми поставили цей тест на карантин, щоб він не блокував випуски, поки ми розслідуємо кореневу причину
- «Це не проблема якості з функцією — це проблема з тим, як сам тест написаний.»
- «Ми відстежуємо це як технічний борг, і ось пріоритет, який ми йому присвоїли»
Приклади висловлювань
Пояснення затримки менеджеру проекту:
- “Випуск затримався приблизно на пів дня, оскільки тест на фрагментацію в нашому конвеєрі CI кілька разів зазнав невдачі перед тим, як пройти. Це не пов’язано з фактичною функцією - ми знаємо про нестабільність цього конкретного тесту і маємо його в нашому списку для виправлення, але зараз це іноді вимагає повторної спроби. ”*
Звіт про ініціативу щодо якості: “За останній місяць ми знизили рівень неточності нашого тестового пакету з близько 8% до менше ніж 2%, виправивши основні причини в наших п’яти найбільш ненадійних тестах - переважно умовах гонки і тестах, які залежали від реальних мережевих викликів, а не від імітованих.”
Заспокоєння учасника після помилкової невдачі:
- “Я хочу, щоб було ясно, що це була несправність, а не справжній дефект — основна функція працює правильно. Ми зараз виставляємо на карантин цей конкретний тест, щоб він перестав блокувати випуски, і ми визначили пріоритет правильного виправлення для наступного спринту. “*
Професійні поради
- Завжди відокремлюйте ** неефективні тести ** від ** реальних помилок ** явно при повідомленні про стан — залишаючи це неоднозначним, зацікавлені сторони надмірно турбуються про якість продукту.
- Кількісно оцінюйте лускатисть за ** ступенем лускатистості **, де це можливо; «деякі тести лускати» набагато менш заспокоюють, ніж «наш рівень лускатистості становить 3% і зменшується»
- Використовуйте “карантину” для опису короткострокового зменшення, і будьте ясно, що це тимчасове і відстежене, а не просто ігнорування проблеми.
- Уникайте звинувачення в « ненадійності CI » в загальних термінах — називайте ** специфічну кореневу причину ** (гоночний стан, спільний стан, мережева залежність), коли ви її знаєте; специфічність створює більше довіри, ніж нечіткі пояснення.
Практичні вправи
- Написати повідомлення з двох речень, у якому буде пояснено затримку випуску, спричинену неточністю тесту, без попередження читача.
- Поясніть, вашими словами, різницю між несправною помилкою і справжньою вадами для тих, хто не знайомий з тестуванням.
- Сформулювати оновлення стану з одним реченням, що повідомляє про зниження рівня нестабільності вашої команди.
Використовується для побудови мови з точними значеннями
Пояснення «непрозорої» CI (Continuous Integration) комусь, хто не є розробником, може бути на диво складним. Це не просто про те, що тести провалюються; це про те, щоб передати * чому * вони непослідовні і що це означає для більшого проекту. Для не-рідних англомовних носіїв, це часто включає в себе боротьбу з нюансованою термінологією і будівництво впевненості, щоб чітко сформулювати складні технічні поняття. Давайте зосередимося на тому, щоб забезпечити вас словником і фразами, необхідними для побудови довіри і демонстрації активного підходу.
Ключовим є перехід від опису проблеми – “ІТ продовжує зазнавати невдач” – до пояснення процесу, який вимагає ретельного моніторингу і коригування. Замість того, щоб сказати “Тести не відповідають стандартам”, що може звучати як звинувачення системи, спробуйте щось більш описове і заспокоююче. Ви можете сказати: «Зараз наш конвейер постійної інтеграції демонструє періодичні невдачі. Це означає, що деякі тести проходять послідовно, в той час як інші іноді провалюються, а потім проходять знову - явище, яке ми називаємо «перервна нестабільність». Ми активно досліджуємо корінні причини цих коливань, зосереджуючись переважно на потенційних умовах раси або зовнішніх залежностях. Зауважте, що тут використано більш формальні слова: « періодична нестабільність », « корінні причини », « умови раси », « зовнішні залежності ». Ці терміни зазвичай використовуються в технічних дискусіях і демонструють методологічний підхід.
Інший важливий елемент - це показати, що ти приймаєш на себе відповідальність. Замість того, щоб просто повідомити про проблему, зробіть це як активне розслідування. Добре повідомлення Slack, яке можна відіслати після поганої збірки CI, може звучати так: «Привіт команда, ми спостерігали періодичну нестабільність в конвеєрі CI - деякі тести проходять, інші провалюються, а потім вирішуються самі. Зараз ми проводимо діагностику [згадайте конкретну область уваги, наприклад, зовнішні виклики API], щоб визначити потенційні причини цих коливань. Я надамо оновлення до кінця завтра. ” Це показує, що ви не просто вказуєте на проблему, але й активно працюєте над її вирішенням. Використання фраз, таких як “запуск діагностики” і “потенційно тригерів” демонструє технічне розуміння без занурення в деталі.
Нарешті, пам’ятайте, що зацікавлені сторони часто позитивно реагують на чітке пояснення ризика. Розгляньте періодичну нестабільність як щось, чим можна управляти за допомогою відповідних стратегій моніторингу і зменшення. Ви можете сказати: « Хоча ці періодичні помилки не впливають на наш розклад випуску, ми реалізуємо розширене ведення журналу та автоматизовані попередження в конвеєрі CI, щоб забезпечити раннє виявлення і дозволити нам швидко вирішити будь-які потенційні проблеми, перш ніж вони ескалуються. » Підсвічування профілактичних заходів — « розширене ведення журналу, » « автоматизовані попередження » — демонструє прихильність до стабільності і зменшує сприйнятий ризик. Метою завжди є створення впевненості в тому, що ви контролюєте ситуацію, навіть коли справа доходить до несподіваної поведінки.