Flaky тести (нестабільні тести) – це автоматизовані тести, які дають різні результати (pass або fail) без змін у коді чи оточенні. Іншими словами, flaky тест може сьогодні пройти, а завтра впасти при абсолютно однакових умовах запуску.

Чому виникають flaky тести

Причини появи нестабільних тестів можуть бути різними:

  • Проблеми з асинхронністю та часом очікування: Наприклад, коли тести не враховують, що елементи інтерфейсу можуть з’являтися або змінювати свій стан з деякою затримкою (асинхронно). Якщо очікування (wait) налаштовано неправильно або недостатньо довгими, перевірки можуть виконуватись раніше, ніж елементи стають доступні, що спричиняє випадкові падіння тестів.
  • Залежність від зовнішніх ресурсів: Тест покладається на API, базу даних або сервіси, які інколи можуть бути недоступні або працювати нестабільно.
  • Випадкові або неконтрольовані фактори: Наприклад тести що залежать від генерації випадкових даних, які можуть спричинити періодичні помилки.
  • Паралельне виконання тестів: Конфлікти, коли тести запускаються одночасно, і можуть впливати один на одного, створюючи непередбачувані результати.

Чим небезпечні flaky тести

  • Недовіра до тестів: Часті падіння тестів, що не пов’язані з реальними багами, можуть спричинити недовіру до автоматизованого тестування.
  • Збільшення витрат часу: Команда витрачає додатковий час на розбір помилок, які не відтворюються стабільно.
  • Втрата критичних помилок: Реальні дефекти можуть бути пропущені через ігнорування періодично падаючих flaky тестів.

Як боротися з flaky тестами

  • Встановлення надійних очікувань: Використовуйте стабільні wait-методи (наприклад явні очікування в Selenium або Playwright).
  • Ізоляція тестів: Переконайтеся, що кожний тест незалежний і не впливає на інші.
  • Зменшення залежності від зовнішніх ресурсів: Використовуйте стабільні заглушки (mocks) або стабільні тестові оточення.
  • Перегляд та виправлення flaky тестів: Регулярно аналізуйте звіти та виправляйте нестабільні тести.
  • Створення документації щодо flaky тестів: Це дозволить швидко визначати та реагувати на нестабільні тести в майбутньому.

Підсумок

Flaky тести є серйозною проблемою для якості автоматизованого тестування. Регулярний моніторинг, аналіз причин, правильне написання та підтримка тестів, допоможуть значно зменшити кількість flaky тестів, а також підвищити стабільність і надійність автоматизації.