Введение в AI-Powered Автоматизацию Тестирования
Традиционная автоматизация тестирования сталкивается с постоянной проблемой: поддержкой тестов. По мере эволюции приложений локаторы элементов ломаются, вызывая нестабильные тесты и требуя постоянных ручных обновлений. AI-powered платформы как Testim и Mabl решают это с помощью self-healing возможностей, которые автоматически адаптируются к изменениям приложения.
Эти платформы используют machine learning для создания интеллектуальных локаторов элементов, которые не ломаются при незначительных UI изменениях. Они анализируют свойства элементов, позицию, контекст и отношения для надёжной идентификации элементов, значительно снижая overhead поддержки.
Self-Healing Революция
Ключевые Преимущества:
- Уменьшенная Поддержка: Тесты автоматически адаптируются к UI изменениям
- Меньше Ложных Падений: Интеллектуальная локация элементов уменьшает нестабильность
- Более Быстрое Создание Тестов: Записывать тесты быстро с codeless интерфейсами
- AI-Powered Инсайты: Автоматический анализ падений и обнаружение root cause
- Cross-Browser Стабильность: Self-healing работает в разных браузерах
- Непрерывное Обучение: Алгоритмы улучшаются с каждым выполнением тестов
Сравнение Платформ
Характеристика | Testim | Mabl |
---|---|---|
Тип | Cloud SaaS | Cloud SaaS |
Цена | Trial + Платная | Trial + Платная |
Self-Healing | Продвинутая AI | Продвинутый ML |
Создание Тестов | Запись, Код, Гибрид | Преимущественно Запись |
Поддержка Браузеров | Chrome, Firefox, Edge, Safari | Chrome, Firefox, Edge |
Mobile Тестирование | Да (via Sauce Labs/BrowserStack) | Ограниченно |
Интеграция CI/CD | Отличная | Отличная |
API Тестирование | Базовое | Продвинутое |
Программирование | JavaScript/TypeScript | JavaScript (ограниченно) |
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 захватывает взаимодействия пользователя и автоматически генерирует стабильные локаторы:
Процесс Записи:
- Установить Chrome Extension Testim
- Кликнуть “Record new test”
- Навигировать и взаимодействовать с вашим приложением
- Testim записывает шаги с AI-генерируемыми локаторами
- Добавить валидации и assertions
- Сохранить и запустить
Пример Записанного Теста:
Тест: Поток Логина Пользователя
├── Навигация к 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:
Мульти-Атрибутные Локаторы: Testim создаёт локаторы используя множественные атрибуты:
- ID, class, name, data атрибуты
- Текстовое содержимое
- Позиция в DOM
- Визуальные свойства (размер, цвет)
- Контекст окружающих элементов
Динамическая Адаптация: Когда первичный локатор падает:
- Testim пробует альтернативные локаторы
- Использует AI для поиска элемента на основе изученных паттернов
- Анализирует отношения элементов
- Автоматически обновляет локатор для будущих запусков
Оценка Уверенности: Каждое совпадение элемента получает оценку уверенности
- Высокая уверенность: Тест продолжается нормально
- Средняя уверенность: Предупреждение залогировано, тест продолжается
- Низкая уверенность: Тест падает с детальным объяснением
Пример 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 для создания тестов:
- Установить Mabl Trainer Chrome Extension
- Выбрать Приложение и Окружение
- Начать Запись взаимодействий
- Добавить Assertions для валидаций
- Создать Data Tables для data-driven тестов
- Сохранить и Выполнить
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:
- Visual AI: Изучает визуальный вид элементов
- Контекстное Понимание: Понимает отношения элементов
- Анализ Текста и Меток: Идентифицирует элементы по окружающему тексту
- Интеллект Позиции: Запоминает относительные позиции
- Историческое Обучение: Улучшается с каждым выполнением
Пример 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 интеграцию
- Выбор зависит от технических навыков команды и потребностей в тестировании
Следующие Шаги
- Зарегистрироваться на бесплатные trials обеих платформ
- Создать proof-of-concept тесты для критических user journeys
- Измерить уменьшение поддержки за 30 дней
- Оценить точность и уверенность AI исцеления
- Принять информированное решение на основе потребностей команды
Инвестиция в AI-powered тестирование окупается через уменьшенную поддержку, более быстрое создание тестов и более надёжные test suites, которые адаптируются к вашему эволюционирующему приложению.