Введение в AI-Powered Автоматизацию Тестирования

Традиционная автоматизация тестирования сталкивается с постоянной проблемой: поддержкой тестов. По мере эволюции приложений локаторы элементов ломаются, вызывая нестабильные тесты и требуя постоянных ручных обновлений. AI-powered платформы как Testim и Mabl решают это с помощью self-healing возможностей, которые автоматически адаптируются к изменениям приложения.

Эти платформы используют machine learning для создания интеллектуальных локаторов элементов, которые не ломаются при незначительных UI изменениях. Они анализируют свойства элементов, позицию, контекст и отношения для надёжной идентификации элементов, значительно снижая overhead поддержки.

Self-Healing Революция

Ключевые Преимущества:

  • Уменьшенная Поддержка: Тесты автоматически адаптируются к UI изменениям
  • Меньше Ложных Падений: Интеллектуальная локация элементов уменьшает нестабильность
  • Более Быстрое Создание Тестов: Записывать тесты быстро с codeless интерфейсами
  • AI-Powered Инсайты: Автоматический анализ падений и обнаружение root cause
  • Cross-Browser Стабильность: Self-healing работает в разных браузерах
  • Непрерывное Обучение: Алгоритмы улучшаются с каждым выполнением тестов

Сравнение Платформ

ХарактеристикаTestimMabl
ТипCloud SaaSCloud SaaS
ЦенаTrial + ПлатнаяTrial + Платная
Self-HealingПродвинутая AIПродвинутый ML
Создание ТестовЗапись, Код, ГибридПреимущественно Запись
Поддержка БраузеровChrome, Firefox, Edge, SafariChrome, Firefox, Edge
Mobile ТестированиеДа (via Sauce Labs/BrowserStack)Ограниченно
Интеграция CI/CDОтличнаяОтличная
API ТестированиеБазовоеПродвинутое
ПрограммированиеJavaScript/TypeScriptJavaScript (ограниченно)
GridВстроенный + 3rd partyВстроенный
Визуальное ТестированиеДаДа

Testim: AI-Powered Функциональное Тестирование

Обзор

Testim by Tricentis — это AI-powered платформа автоматизации тестирования, которая комбинирует скорость codeless тестирования с гибкостью кода. Его ML-based локаторы элементов непрерывно учатся и адаптируются, делая тесты устойчивыми к изменениям приложения.

Начало Работы

// Установка
npm install -g @testim/testim-cli

// Инициализировать Testim проект
testim-cli init

// Login
testim-cli login

// Запустить тесты
testim-cli run --project "Мой Проект" --grid "Testim Grid"

Подходы к Созданию Тестов

1. Запись и Воспроизведение

Recorder Testim захватывает взаимодействия пользователя и автоматически генерирует стабильные локаторы:

Процесс Записи:

  1. Установить Chrome Extension Testim
  2. Кликнуть “Record new test”
  3. Навигировать и взаимодействовать с вашим приложением
  4. Testim записывает шаги с AI-генерируемыми локаторами
  5. Добавить валидации и assertions
  6. Сохранить и запустить

Пример Записанного Теста:

Тест: Поток Логина Пользователя
├── Навигация к https://example.com/login
├── Ввод "test@example.com" в поле Email (AI локатор)
├── Ввод "password123" в поле Password (AI локатор)
├── Клик по кнопке "Login" (AI локатор)
├── Проверка текста "Добро пожаловать, Test User" видим
└── Проверка URL содержит "/dashboard"

2. Кастомные JavaScript Шаги

Добавить кастомную логику с JavaScript:

// Кастомный шаг: Генерировать случайный email
const email = `test_${Date.now()}@example.com`;
exportsTest.email = email;

// Сохранить в переменной теста
return email;
// Кастомный шаг: API вызов для создания тестовых данных
const response = await fetch('https://api.example.com/users', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'Test User',
    email: exportsTest.email,
  }),
});

const user = await response.json();
exportsTest.userId = user.id;

AI-Powered Self-Healing

Как Работает Self-Healing Testim:

  1. Мульти-Атрибутные Локаторы: Testim создаёт локаторы используя множественные атрибуты:

    • ID, class, name, data атрибуты
    • Текстовое содержимое
    • Позиция в DOM
    • Визуальные свойства (размер, цвет)
    • Контекст окружающих элементов
  2. Динамическая Адаптация: Когда первичный локатор падает:

    • Testim пробует альтернативные локаторы
    • Использует AI для поиска элемента на основе изученных паттернов
    • Анализирует отношения элементов
    • Автоматически обновляет локатор для будущих запусков
  3. Оценка Уверенности: Каждое совпадение элемента получает оценку уверенности

    • Высокая уверенность: Тест продолжается нормально
    • Средняя уверенность: Предупреждение залогировано, тест продолжается
    • Низкая уверенность: Тест падает с детальным объяснением

Пример Self-Healing Сценария:

Оригинальный Локатор: button[data-testid="submit-btn"]

После того как Разработчик Изменил data-testid на data-test="submit":

AI Testim:
✓ Обнаружил падение первичного локатора
✓ Проанализировал текст кнопки: "Submit"
✓ Проверил позицию: Внизу справа формы
✓ Проверил визуальные свойства: Синий фон
✓ Нашёл элемент с 98% уверенности
✓ Обновил локатор автоматически
✓ Тест прошёл без ручного вмешательства

Продвинутые Возможности Testim

Shared Steps (Переиспользуемые Функции)

// Shared Step: Login
// Параметры: email, password
// Возвращает: userId

const emailInput = await findElement({ type: 'text', label: 'Email' });
await emailInput.type(email);

const passwordInput = await findElement({ type: 'password', label: 'Password' });
await passwordInput.type(password);

const loginButton = await findElement({ type: 'button', text: 'Login' });
await loginButton.click();

// Ждать dashboard и извлечь user ID
await waitForUrl('/dashboard');
const userId = await evaluate(() => {
  return window.currentUser.id;
});

return userId;

Data-Driven Тестирование

// Тест с CSV данными
// Файл: users.csv
// Колонки: email, password, expectedName

// Шаг теста использует данные из CSV
// Запускать тест для каждой строки автоматически
// Доступ к данным через: {{email}}, {{password}}, {{expectedName}}

Условная Логика

// Если элемент существует, кликнуть по нему
const cookieBanner = await findElement({ selector: '.cookie-banner' }, {
  timeout: 2000,
  softFail: true
});

if (cookieBanner) {
  await cookieBanner.click();
  console.log('Cookie banner отклонён');
}

// If/Else основанный на состоянии элемента
const cartCount = await getText('.cart-count');
if (parseInt(cartCount) > 0) {
  // В корзине есть товары
  await click('Checkout');
} else {
  // Корзина пуста
  await click('Продолжить Покупки');
}

CI/CD Интеграция

# .github/workflows/testim.yml
name: Testim E2E Тесты

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]
  schedule:
    - cron: '0 */6 * * *' # Каждые 6 часов

jobs:
  testim:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Установить Testim CLI
        run: npm install -g @testim/testim-cli

      - name: Запустить Testim Тесты
        env:
          TESTIM_TOKEN: ${{ secrets.TESTIM_TOKEN }}
        run: |
          testim-cli run \
            --project "E-Commerce App" \
            --suite "Regression Suite" \
            --grid "Testim Grid" \
            --parallel 5 \
            --report-file testim-results.xml

      - name: Опубликовать Результаты Тестов
        if: always()
        uses: mikepenz/action-junit-report@v3
        with:
          report_paths: 'testim-results.xml'
          check_name: 'Testim Test Results'

Mabl: Интеллектуальная Автоматизация Тестирования

Обзор

Mabl — это интеллектуальная платформа автоматизации тестирования, построенная на machine learning. Она подчёркивает low-code создание тестов, автоматическое исцеление и интегрированные quality insights. Уникальная сила Mabl — её комплексный подход к стабильности тестов и мониторингу приложений.

Начало Работы

# Установить mabl CLI
npm install -g @mablhq/mabl-cli

# Настроить mabl
mabl config set apiKey ВАШ_API_KEY
mabl config set workspaceId ВАШ_WORKSPACE_ID

# Запустить тесты локально
mabl tests run --environment staging

Создание Тестов с Mabl Trainer

Mabl Trainer — это Chrome extension для создания тестов:

  1. Установить Mabl Trainer Chrome Extension
  2. Выбрать Приложение и Окружение
  3. Начать Запись взаимодействий
  4. Добавить Assertions для валидаций
  5. Создать Data Tables для data-driven тестов
  6. Сохранить и Выполнить

Mabl Auto-Healing в Действии:

Тест: Поиск Продукта
├── Навигация к homepage
├── Ввод "laptop" в search box
│   └── Mabl изучает множественные локаторы:
│       - input[name="search"]
│       - input[placeholder="Поиск продуктов"]
│       - form.search-form > input
│       - Визуальный контекст: top-right header
├── Клик по кнопке поиска
│   └── Mabl идентифицирует через:
│       - Текст кнопки: "Поиск"
│       - SVG путь иконки
│       - Позиция относительно search input
└── Проверка видимости results container
    └── Множественные идентификаторы сохранены

Продвинутые Возможности Mabl

JavaScript Шаги

// Кастомный JS шаг: Извлечь и валидировать данные
const productCards = document.querySelectorAll('.product-card');
const products = Array.from(productCards).map(card => ({
  title: card.querySelector('.title').textContent,
  price: parseFloat(card.querySelector('.price').textContent.replace('₽', '')),
  inStock: !card.classList.contains('нет-в-наличии')
}));

// Валидировать
const inStockCount = products.filter(p => p.inStock).length;
if (inStockCount < 5) {
  throw new Error(`Только ${inStockCount} продуктов в наличии`);
}

// Сохранить для последующего использования
return { products, inStockCount };

DataTables для Data-Driven Тестирования

# products.csv в Mabl
username,password,expectedProduct
user1@test.com,pass123,Ноутбук
user2@test.com,pass456,Монитор
user3@test.com,pass789,Клавиатура

Тест использует DataTable:

  • Mabl запускает тест для каждой строки
  • Доступ через: {{username}}, {{password}}, {{expectedProduct}}
  • Параллельное выполнение по строкам
  • Индивидуальные результаты для каждой итерации

Интеллектуальное Auto-Healing

ML Auto-Healing Mabl:

  1. Visual AI: Изучает визуальный вид элементов
  2. Контекстное Понимание: Понимает отношения элементов
  3. Анализ Текста и Меток: Идентифицирует элементы по окружающему тексту
  4. Интеллект Позиции: Запоминает относительные позиции
  5. Историческое Обучение: Улучшается с каждым выполнением

Пример Auto-Healing:

Оригинал: Найти кнопку по ID "btn-submit-order"

После Изменения Кода (ID удалён):

ML Анализ Mabl:
✓ Текст кнопки: "Оформить Заказ"
✓ Визуальный вид: Зелёный, скруглённые углы
✓ Позиция: Внизу справа checkout формы
✓ Родитель: form.checkout-form
✓ Сосед: кнопка "Отмена" слева
✓ Уверенность: 97%
✓ Элемент найден и тест прошёл
✓ Локатор авто-обновлён для следующего запуска

CI/CD Интеграция

# .github/workflows/mabl.yml
name: Mabl Тесты

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  deployment:
    types: [completed]

jobs:
  mabl-tests:
    runs-on: ubuntu-latest
    steps:
      - name: Запустить Mabl Тесты
        uses: mablhq/github-run-tests-action@v1
        with:
          application-id: ${{ secrets.MABL_APP_ID }}
          environment-id: ${{ secrets.MABL_ENV_ID }}
          api-key: ${{ secrets.MABL_API_KEY }}
          browser-types: 'chrome,firefox'
          continue-on-failure: false

Сравнение Testim vs Mabl

Опыт Создания Тестов

Testim:

  • Более гибкий: Запись, код или гибрид
  • Лучше для разработчиков с JavaScript навыками
  • Кастомные шаги с полной возможностью кодирования
  • Быстрее для сложной логики

Mabl:

  • Проще, более low-code ориентированный
  • Лучше для QA без coding background
  • Guided test creation workflow
  • Проще обучить нетехнических тестировщиков

Возможности Self-Healing

Testim:

  • AI локаторы с множественными fallback стратегиями
  • JavaScript-доступный поиск элементов
  • Возможно ручное уточнение локаторов
  • Оценки уверенности видимы

Mabl:

  • Visual AI + ML комбинация
  • Более сильное визуальное распознавание элементов
  • Более автоматизированный процесс исцеления
  • Меньше ручного вмешательства требуется

Когда Выбирать Каждую Платформу

Выбирай Testim Если:

  • Твоя команда имеет JavaScript разработчиков
  • Нужна максимальная гибкость тестов
  • Mobile тестирование важно
  • Предпочитаешь гибридный code/codeless подход
  • Хочешь неограниченное выполнение тестов

Выбирай Mabl Если:

  • Твоя QA команда менее техническая
  • Хочешь простейшее onboarding
  • Visual AI исцеление — приоритет
  • Нужны интегрированные insights
  • API тестирование так же важно как UI

Best Practices для AI-Powered Тестирования

1. Доверяй Но Проверяй Self-Healing

// Мониторить события исцеления
// Регулярно просматривать исцелённые локаторы
// Одобрять или отклонять предложения по исцелению
// Обновлять локаторы когда паттерны значительно меняются

2. Предоставлять Стабильные Тестовые Данные

// Использовать data-testid для критических элементов
<button data-testid="checkout-button">Checkout</button>

// Это помогает AI установить первичный локатор
// Откатывается к AI когда data-testid меняется

3. Организовывать Тесты Логически

Тесты/
├── Критические User Journeys/
│   ├── Login и Signup
│   ├── Purchase Flow
│   └── Account Management
├── Feature Тесты/
│   ├── Search
│   ├── Filtering
│   └── Sorting
└── Integration Тесты/
    ├── Payment Gateway
    └── Third-party Services

4. Использовать Переиспользуемые Компоненты

// Создать flows/shared steps для общих действий
// Login, навигация, настройка данных
// Уменьшить поверхность поддержки
// Обновить один раз, затронуть все тесты

5. Мониторить AI Оценки Уверенности

// Установить пороги уверенности
// Алертить на low-confidence совпадениях
// Просматривать и тренировать AI на падениях
// Непрерывно улучшать стратегии локаторов

Заключение

Testim и Mabl представляют будущее автоматизации тестирования с AI-powered self-healing, драматически уменьшая overhead поддержки и false failures. Обе платформы превосходят в создании тестов устойчивых к изменениям, предоставляя отличные developer и QA experiences.

Ключевые Выводы:

  • Self-healing уменьшает поддержку на 60-80%
  • AI локаторы более стабильны чем традиционные XPath/CSS
  • Обе платформы предлагают отличную CI/CD интеграцию
  • Выбор зависит от технических навыков команды и потребностей в тестировании

Следующие Шаги

  1. Зарегистрироваться на бесплатные trials обеих платформ
  2. Создать proof-of-concept тесты для критических user journeys
  3. Измерить уменьшение поддержки за 30 дней
  4. Оценить точность и уверенность AI исцеления
  5. Принять информированное решение на основе потребностей команды

Инвестиция в AI-powered тестирование окупается через уменьшенную поддержку, более быстрое создание тестов и более надёжные test suites, которые адаптируются к вашему эволюционирующему приложению.