Flaky тести (нестабільні тести) – це автоматизовані тести, які дають різні результати (pass або fail) без змін у коді чи оточенні. Іншими словами, flaky тест може сьогодні пройти, а завтра впасти при абсолютно однакових умовах запуску.
Чому виникають flaky тести
Причини появи нестабільних тестів можуть бути різними:
- Проблеми з асинхронністю та часом очікування: Наприклад, коли тести не враховують, що елементи інтерфейсу можуть з’являтися або змінювати свій стан з деякою затримкою (асинхронно). Якщо очікування (wait) налаштовано неправильно або недостатньо довгими, перевірки можуть виконуватись раніше, ніж елементи стають доступні, що спричиняє випадкові падіння тестів.
- Залежність від зовнішніх ресурсів: Тест покладається на API, базу даних або сервіси, які інколи можуть бути недоступні або працювати нестабільно.
- Випадкові або неконтрольовані фактори: Наприклад тести що залежать від генерації випадкових даних, які можуть спричинити періодичні помилки.
- Паралельне виконання тестів: Конфлікти, коли тести запускаються одночасно, і можуть впливати один на одного, створюючи непередбачувані результати.
Чим небезпечні flaky тести
- Недовіра до тестів: Часті падіння тестів, що не пов’язані з реальними багами, можуть спричинити недовіру до автоматизованого тестування.
- Збільшення витрат часу: Команда витрачає додатковий час на розбір помилок, які не відтворюються стабільно.
- Втрата критичних помилок: Реальні дефекти можуть бути пропущені через ігнорування періодично падаючих flaky тестів.
Як боротися з flaky тестами
- Встановлення надійних очікувань: Використовуйте стабільні wait-методи (наприклад явні очікування в Selenium або Playwright).
- Ізоляція тестів: Переконайтеся, що кожний тест незалежний і не впливає на інші.
- Зменшення залежності від зовнішніх ресурсів: Використовуйте стабільні заглушки (mocks) або стабільні тестові оточення.
- Перегляд та виправлення flaky тестів: Регулярно аналізуйте звіти та виправляйте нестабільні тести.
- Створення документації щодо flaky тестів: Це дозволить швидко визначати та реагувати на нестабільні тести в майбутньому.
Підсумок
Flaky тести є серйозною проблемою для якості автоматизованого тестування. Регулярний моніторинг, аналіз причин, правильне написання та підтримка тестів, допоможуть значно зменшити кількість flaky тестів, а також підвищити стабільність і надійність автоматизації.