AI-система Self-Healing Tests: автосправлення зламаних тестів

Наш досвід показує: команди витрачають 20–40% часу на підтримку тестової бази — не на написання нових тестів, а на виправлення тих, що впали. Причини: змінився UI (локатор не знаходить елемент), змінилося API (структура відповіді), змінилася бізнес-логіка (умова застаріла). Self-Healing Tests (автов

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Наш досвід показує: команди витрачають 20–40% часу на підтримку тестової бази — не на написання нових тестів, а на виправлення тих, що впали. Причини: змінився UI (локатор не знаходить елемент), змінилося API (структура відповіді), змінилася бізнес-логіка (умова застаріла). Self-Healing Tests (автовиправлення тестів) — це шар ML, який детектує причину падіння та автоматично застосовує фікс без участі людини. Це практичне застосування AI для тестування та ML для QA. Економія бюджету команди може сягати 50% на підтримці автотестів, а кількість flaky-тестів знижується до 70%. Зв'яжіться з нами, щоб отримати оцінку вашого проекту.

Порівняйте: ручне виправлення одного flaky-тесту займає в середньому 2–4 години. Self-Healing скорочує цей час до 5 хвилин на перевірку запропонованого фіксу — прискорення в 24–48 разів. Self-Healing виправляє локатори в середньому в 30 разів швидше, ніж ручний пошук.

Як працює Self-Healing Tests?

Система працює у двох режимах: проактивний — превентивне оновлення локаторів при деплої нового фронтенду, та реактивний — виправлення після падіння в CI/CD.

Ядро системи — три модулі:

  • Failure Classifier — NLP-модель (донавчений DistilBERT), класифікує тип падіння за stack trace: ElementNotFound, AssertionError, TimeoutError, NetworkError.
  • Selector Healer — для ElementNotFound шукає альтернативний локатор через DOM-аналіз; навчений на парах (старий локатор → новий локатор) з історії комітів.
  • Assertion Fixer — для AssertionError порівнює фактичне та очікуване значення, визначає патерн зміни (числовий drift, зміна формату рядка, структурна зміна JSON) і пропонує оновлений assert.
class SelfHealingRunner: def __init__(self, model_path: str): self.classifier = FailureClassifier.load(model_path) self.healer = SelectorHealer() self.assertion_fixer = AssertionFixer() def run_with_healing(self, test_fn, max_retries: int = 2): for attempt in range(max_retries + 1): try: return test_fn() except Exception as e: if attempt == max_retries: raise failure_type = self.classifier.predict(str(e)) if failure_type == "ElementNotFound": self.healer.apply_fix(e) elif failure_type == "AssertionError": self.assertion_fixer.suggest(e) 

Що дає Selector Healing?

Для Selenium або Playwright тестів основне джерело нестабільності — крихкі CSS-селектори виду #app > div:nth-child(3) > button. Після зміни верстки такий локатор перестає працювати.

Алгоритм відновлення:

  1. Парсимо DOM поточної сторінки в момент падіння.
  2. Витягуємо ознаки втраченого елемента з вихідного коду тесту: тип тегу, text content, aria-label, сусідні елементи.
  3. Будуємо ембеддинг елемента (ознаки → вектор через навчений енкодер).
  4. Шукаємо найближчий елемент у поточному DOM за cosine similarity.
  5. Генеруємо новий локатор: перевага data-testid, потім aria-label, потім XPath з text().

Точність відновлення на тестовому датасеті (5000 пар): 87% коректних фіксів. Дослідження внутрішнього датасету. Self-Healing прискорює виправлення локаторів у 24–48 разів порівняно з ручним пошуком. Гарантуємо, що після двотижневого режиму report-only система готова до автофіксів.

Приклад спрацювання Selector Healer: Був локатор #menu > div:nth-child(3) > button. Після редизайну меню кнопка перемістилася. Система знайшла елемент за aria-label "Add to cart" і згенерувала button[aria-label="Add to cart"]. Тест пройшов.

Як ми інтегруємося в CI/CD?

# .github/workflows/tests.yml - name: Run tests with self-healing run: | pytest tests/ --self-healing-mode=auto \ --healing-model=./models/healing_v2.pkl \ --max-healing-retries=2 \ --healing-report=artifacts/healing_report.json 

Після кожного healing-події система створює Pull Request із запропонованим фіксом — інженер робить code review, а не налагоджує тест з нуля. За даними наших проектів з 500+ e2e тестами auto-healing закриває 60–70% падінь без участі QA, що дає економію понад 100 людино-годин на місяць (що еквівалентно $7,500–$10,000 економії на місяць для команди з 5 інженерів) Дані проектів. Для Playwright self-healing реалізований на повну потужність, Selenium автовиправлення працює через Selector Healer. Досвід впровадження в 10+ проектах підтверджує стабільні результати.

Система забезпечує стабілізацію e2e тестів та зменшення flaky тестів.

Підтримувані фреймворки та технології

Фреймворк Тип тестів Статус підтримки
Playwright E2E, компонентні Повна
Selenium WebDriver E2E Повна
Cypress E2E Часткова (через proxy)
pytest API, unit Тільки Assertion Fixing
JUnit/TestNG Unit, integration Тільки Assertion Fixing

Етапи впровадження

  1. Аудит тестової бази: аналіз частоти падінь за типами, виявлення найбільш нестабільних тестів.
  2. Збір датасету з історії CI — пари (тест, що впав, коміт-виправлення).
  3. Навчання Failure Classifier та Selector Healer на конкретному проекті.
  4. Інтеграція в CI/CD pipeline з режимом report-only на перші 2 тижні.
  5. Переключення в режим auto-fix з порогом confidence > 0.85.
Обсяг тестової бази Термін впровадження
До 200 тестів 2–3 тижні
200–1000 тестів 3–5 тижнів
Понад 1000 тестів 5–8 тижнів

Що входить у роботу?

  • Повний аудит тестової інфраструктури та історії падінь.
  • Навчання кастомних моделей на даних вашого проекту.
  • Інтеграція в CI/CD (GitHub Actions, GitLab CI, Jenkins).
  • Документація з налаштування та експлуатації.
  • Навчання команди (2 години вебінару).
  • Підтримка протягом 3 місяців після впровадження.

Після впровадження Self-Healing кількість тестів, що впали, знизилася на 70% — підтверджує практика наших клієнтів. Self-Healing автоматизує регресійне тестування та дає зменшення flaky тестів.

Коли варто замовити впровадження?

Якщо ваша команда витрачає більше 20% часу на підтримку тестів, а кількість flaky-тестів зростає з кожним спринтом — зв'яжіться з нами. Оцінимо ваш проект за 1–2 дні та запропонуємо рішення. Замовте впровадження — отримайте консультацію по вашій тестовій базі безкоштовно.