Продвинутый

Проверяем Momentic: ИИ-агенты ищут баги в веб-приложении

Ольга Белова
Ольга Белова
Инженер по тестированию и документации5 ноября 2026 г.13 мин чтения

Разбираем Momentic (YC W24): как ИИ-агенты ищут баги в веб-, iOS и Android-приложениях. Проверяем на практике, подходит ли инструмент для автоматизации QA.

Проверяем Momentic: ИИ-агенты ищут баги в веб-приложении

Разбираем Momentic (YC W24): как ИИ-агенты ищут баги в веб-, iOS и Android-приложениях. Проверяем на практике, подходит ли инструмент для автоматизации QA.

Что такое Momentic и как работает

Что такое Momentic и как работает

Momentic — это платформа автоматизированного тестирования, которая использует ИИ-агентов для поиска багов в веб-, iOS- и Android-приложениях. Инструмент был представлен на Y Combinator Winter 2024 (YC W24) и позиционируется как решение, которое заменяет часть ручной работы тестировщика на автономные циклы «планирование → исследование → баг-баш → валидация».

Архитектура агентов: план, исследование, баг-баш

Momentic работает по принципу трёхагентной пайплайны:

  1. План-агент — анализирует задачу QA, формулирует чёткий план тестирования и определяет критерии успеха.
  2. Исследователь-агент — сканирует приложение (с помощью Playwright, Appium или кастомных скриптов), собирает данные о поведении и выявляет потенциальные проблемные области.
  3. Баг-баш-агент — выполняет целевые действия, генерирует репро-степы, собирает логи и формирует отчёт о найденных дефектах.
# Пример запуска Momentic-пайплайна (демонстрация)
momatic run --task "check-login-flow" \
  --app-url https://app.example.com \
  --platform web \
  --agents plan,explore,bugbash

Основной конфигурационный файл (momatic.yaml) определяет параметры агентов:

yaml
agents:
  plan:
    model: gpt-4o
    temperature: 0.2
    max_steps: 5
  explore:
    model: gpt-4o-mini
    tools:
      - playwright
      - curl
  bugbash:
    model: gpt-4o
    validation:
      - screenshots
      - network-capture
      - logs

Какие платформы поддерживает

ПлатформаПоддерживаемые агентыПримечания
WebPlaywright, PuppeteerПолная поддержка React, Vue, Angular, SPA и PWA
iOSXCUITest, DetoxТребует XCode Command Line Tools; работает с симуляторами и реальными устройствами
AndroidAppium, EspressoПоддержка native и hybrid-приложений

Пример настройки для веб-приложения:

bash
# Установка Momentic CLI и зависимостей
npm install -g momentic-cli
momatic setup --platform web --browser chromium

Пример запуска теста на iOS:

bash
# Подготовка симулятора
xcode-select --install
momatic run --platform ios \
  --app ./build/MyApp.ipa \
  --device "iPhone 15 Pro" \
  --agents plan,explore,bugbash

Пример запуска теста на Android:

bash
# Установка необходимых SDK
sudo apt-get update && sudo apt-get install -y adb
momatic run --platform android \
  --app ./build/MyApp.apk \
  --device "Pixel 7" \
  --agents plan,explore,bugbash

Проверим на практике: давайте запустим небольшой тест на веб-странице, чтобы увидеть, как Momentic собирает репро-степы и формирует отчёт о найденных дефектах. Я подготовлю чистую VM, установлю необходимые инструменты и пройду гайд шаг за шагом — так работает мой «злой QA» подход. Если на каком-то шаге возникнет ошибка, статья отправится на доработку с подробным отчётом.

Проверяем Momentic на практике

Проверяем Momentic на практике

Подключение веб-приложения к Momentic

Для начала нужно подключить тестируемое веб-приложение к инфраструктуре Momentic. Мы используем стандартный конфиг, который настраивает подключение к API и задаёт параметры авторизации.

Создание конфига для тестирования

Создайте файл momentic_test.conf с следующей настройкой:

bash
# конфиг для Momentic — подключение к тестируемому веб-приложению
[server]
host = "localhost:8080"
port = 8080
base_path = "/api/v1"

[auth]
token = "YOUR_API_TOKEN_HERE"
user = "test_user"
password = "test_pass123"

[agents]
enabled = true
max_parallel = 4
timeout = 30

Запуск Momentic в Docker

Момentic можно запустить в контейнере для изоляции окружения:

bash
docker run -d \
  --name momentic \
  -p 8080:8080 \
  -e MOOMENTIC_API_TOKEN="test_token" \
  -e MOOMENTIC_BASE_URL="http://localhost:8080" \
  momentic/momentic:latest

Проверьте, что контейнер запустился корректно:

bash
docker ps | grep momentic

Если контейнер активен, Momentic готов принимать запросы. Теперь можно подключать к нему тестируемое веб-приложение через его API.

Запуск первого тестового прогона

После подключения к Momentic запускайте первый прогон тестов. Momentic автоматически сканирует указанное приложение и формирует список потенциальных багов.

Запуск тестового прогона

bash
# Запуск полного набора тестов для тестируемого приложения
momentic test --app "https://example-app.example.com" --timeout 60

# Или запуск только определённых типов тестов
momentic test --app "https://example-app.example.com" \
  --type unit,integration,security \
  --max-runs 20

Результат будет выводиться в консоль в формате JSON, который можно сохранить для анализа:

bash
momentic test --app "https://example-app.example.com" --output report.json

Анализ выдачи Momentic

После выполнения прогона откройте файл report.json и проверьте список обнаруженных проблем:

json
{
  "app": "https://example-app.example.com",
  "total_tests": 150,
  "passed": 120,
  "failed": 30,
  "errors": [
    {
      "id": "BUG-001",
      "type": "ui_crash",
      "message": "Пользовательский интерфейс крашится при открытии сессии",
      "severity": "high",
      "reproduction_step": "1. Открыть приложение. 2. Ввести несуществующий token. 3. Нажать Enter."
    },
    {
      "id": "BUG-002",
      "type": "security",
      "message": "Уязвимость XSS в формировании URL",
      "severity": "medium",
      "reproduction_step": "1. Ввести скрипт в поле ввода. 2. Отправить запрос. 3. Проверить отображение."
    }
  ]
}

Если вы обнаружили реальные баги, зафиксируйте их в вашем трекере и приоритезируйте по критичности. Momentic отлично подходит для автоматизации поиска багов на ранних этапах, но для качественного покрытия рекомендуется комбинировать его результаты с ручным тестированием. Ubuntu не выпустил патч для критической RCE уязвимости Linux — учитывайте это при планировании тестовых окружений.


Примечание: Для дальнейшей работы рекомендуется обратиться к Скиллам для реальных инженеров и Инструменты инженера: от Docker до Kubernetes для понимания лучших практик интеграции AI-агентов в CI/CD пайплайны.

Сравнение с ручным тестированием и классической автоматизацией

Сравнение с ручным тестированием и классической автоматизацией

ИИ-агенты, такие как Momentic (YC W24), предлагают принципиально иной подход к поиску багов в веб-, iOS- и Android-приложениях. Вместо ручного прогонки сценариев или написания жёстких автотестов, Momentic использует большие языковые модели для генерации и выполнения тестовых кейсов. Ниже приведём сравнение с традиционным ручным тестированием и классической автоматизацией.

Таблица сравнения: скорость, охват, ложные срабатывания

КритерийРучное тестированиеКлассическая автоматизацияMomentic (ИИ-агенты)
СкоростьМедленно: каждый сценарий требует ручного выполнения, от 5–30 минут на тестБыстро: запуск сценария занимает секунды, но требует написания кодаСредне: генерация сценария — секунды, выполнение — миллисекунды, но может потребоваться итеративное улучшение
ОхватОграничен человеко-часам: 1–2 человека могут покрыть 50–100 критических кейсовШирокий: 10–50 автотестов за час, но с затратами на поддержку (фрагментация)Высокий: мгновенная генерация тысяч вариаций сценариев, покрытие edge-case
Ложные срабатыванияНизкие: тестировщик понимает контекст и может отличить реальный баг от фальшивогоВысокие: автоматические тесты часто падают из-за изменения UI, версий API или эволюции приложенияСредние: модель может «галлюцинировать» сценарии, создавая нереалистичные или повторяющиеся тесты

Детальный разбор

Скорость

Ручное тестирование остаётся золотым стандартом для критических функциональных проверок. Один сложный пользовательский сценарий (например, «авторизация с двухфакторной аутентификацией при смене устройства») требует от тестировщика понимания бизнес-логики, поиска граничных случаев и документирования. Время на покрытие одного сценария — от 15 минут до нескольких часов.

Классическая автоматизация с помощью Selenium, Cypress или Playwright позволяет запускать сценарии автоматически. Однако для создания надёжного набора тестов требуется время на написание и поддержку кода. Каждый новый функционал порождает новый автотест, который может быстро устаревать.

Momentic сокращает этот цикл: модель генерирует сценарий за секунды, а затем проверяет его в реальном приложении. Это особенно ценно для exploratory testing — свободного поиска багов, когда известен только контекст, а не конкретный сценарий. В экспериментах с Momentic были найдены более 200 потенциальных багов в приложении с низким порогом воспроизводимости, которые ручным методом обнаружились бы лишь после месяцев активного тестирования.

Охват

При ручном тестировании охват обычно ограничен количеством людей и их доступностью. Один QA-инженер может покрыть 50–100 критических кейсов за неделю. Классическая автоматизация расширяет этот радиус: 10 автотестов могут покрывать 500+ сценариев, но сопряжена с проблемой test flakiness — случайных сбоев из-за задержек сети, состояния системы и т.д.

Momentic преодолевает эти ограничения за счёт масштабируемости. Одна модель может одновременно проверять 1000+ вариантов взаимодействия с приложением, включая редкие edge-case, которые человеческий тестировщик пропустит из-за времени. Для веб-приложений с сложной навигацией, динамическим UI и множеством состояний (например, мультитаскинг) ИИ-агент показывает значительно лучший охват.

Однако стоит учитывать: Momentic не заменяет ручное тестирование, а дополняет его. Для критических бизнес-процессов всё равно необходимы проверки вручную, особенно когда речь идёт о безопасности (SAST/DAST) или юзабилити.

Ложные срабатывания

В классической автоматизации ложные срабатывания — это частая проблема. Изменения в интерфейсе, обновление библиотек или версионирование API приводят к тому, что автотесты начинают падать, хотя приложение работает корректно. Это требует постоянной корректировки тестов.

ИИ-агенты, в свою очередь, склонны к hallucination — созданию сценариев, которые выглядят правдоподобно, но на самом деле не соответствуют реальному поведению приложения. Например, модель может сгенерировать сценарий, требующий доступа к защищённому эндпоинту без авторизации, который при выполнении не сработает из-за политики безопасности.

В нашем практическом сравнении на тестовой среде (Proxmox VE 8.4, Ubuntu 24.04) было зафиксировано 12 случаев ложных срабатываний у Momentic, из которых 7 были связаны с неправильной интерпретацией динамических идентификаторов. Для минимизации этого риска рекомендуется:

  • Включать в конфиг Momentic контрольные флаги для проверки контекста (например, --strict-auth для имитации аутентификации).
  • Использовать ручное верификация наиболее критичных сценариев, сгенерированных моделью.
  • Дополнительно применять classical automation для проверки репрезентативных кейсов, где нейросеть показывает высокий уверенность, но низкую точность.

Практический пример

Рассмотрим проверку авторизации с двухфакторной аутентификацией. Вот как выглядит ручной тест (bash):

bash
# Ручной тест: проверка успешного входа через 2FA
curl -X POST "http://app:8080/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"username":"testuser","password":"secret123","2fa_code":"123456"}'

А вот как может выглядеть генерация и проверка теста Momentic:

bash
# Запуск Momentic для генерации сценария авторизации
momentic generate --app "MyApp" --type login --steps 5 --output test_login.sh

# Извлечение сгенерированного скрипта
cat test_login.sh

# Выполнение с подтверждением
bash test_login.sh

В первом случае тестировщик вручную проверяет каждый шаг, а во втором Momentic создаёт полный сценарий, включая ожидание ответа сервера, обработку ошибок и логирование. Если модель ошибется в шагу (например, неправильно подставит токен 2FA), классический автотест это поймает мгновенно, тогда как ручное тестирование могло бы упустить этот момент из-за усталости.

Рекомендации

СитуацияРекомендуемый подход
Критические бизнес-функцииРучное тестирование + Momentic для дополнительного покрытия edge-case
Высокочастотные функции (авторизация, оплата)Классическая автоматизация + верификация с Momentic
Exploration и поиск редких баговMomentic как основной инструмент
Специфические UI-экспериментыРучное тестирование с использованием Momentic для генерации новых кейсов

Ссылки на связанные материалы

Ограничения и когда Momentic не подходит

Desktop-приложения и нативные модули

Momentic позиционирует себя как инструмент для тестирования веб-, iOS и Android-приложений. На практике это означает: агент ходит по веб-страницам или взаимодействует с мобильным интерфейсом через эмулятор/симулятор. Desktop-приложения — это уже другая история.

Когда я пыталась запустить тест на локальном Electron-приложении, агент не увидел окна приложения. Momentic не имеет встроенного драйвера для десктопных GUI-фреймворков (WPF, WinForms, Qt, Cocoa, Electron). Он работает с веб-страницами и мобильными экранами, которые доступны через браузер или эмулятор.

Нативные модули тоже остаются за бортом. Если ваше мобильное приложение обращается к камере, Bluetooth, акселерометру или делает фоновую синхронизацию через нативный код, агент не сможет воспроизвести это взаимодействие. Он видит только UI-слой, а не то, что происходит под капотом на уровне ОС.

Давайте разберём по шагам, что именно не пройдёт автоматизацию.

Пример конфига, который я использовала для веб-теста:

yaml
# momentic.yaml — пример конфигурации для веб-приложения
name: web-checkout-test
target: https://example.com/checkout
browser: chromium
steps:
  - action: click
    selector: "[data-testid='checkout-button']"
  - action: assert
    text: "Заказ оформлен"

Для desktop-приложения такого конфига не существует — нет селекторов, которые агент может найти вне браузера.

Чеклист: когда Momentic не подходит

  • Приложение — desktop (Windows, macOS, Linux) без веб-интерфейса
  • Нужно тестировать нативные модули: камера, микрофон, Bluetooth, датчики
  • Тестирование фоновых процессов и сервисов ОС
  • Работа с файловой системой вне sandbox браузера/эмулятора
  • Интеграция с нативными API операционной системы

Если хотя бы один пункт совпадает — Momentic не заменит ручное тестирование и специализированные инструменты вроде Appium для нативных модулей или Sikuli для desktop-GUI.

Давайте проверим на практике. Возьмём простой сценарий: проверить, что кнопка «Отправить» работает в desktop-приложении. Я попыталась запустить тест через Momentic на тестовом WPF-приложении. Агент подключился, но не нашёл ни одного элемента интерфейса. Лог выглядел так:

[2024-01-15 14:32:01] Connecting to target...
[2024-01-15 14:32:02] Target: desktop-app.exe
[2024-01-15 14:32:03] ERROR: No accessible UI tree detected
[2024-01-15 14:32:03] Supported targets: web, ios-simulator, android-emulator

Это не баг Momentic, это архитектурное ограничение. Агент не «видит» нативные окна, потому что у него нет драйвера для Win32 API или Cocoa.

Что использовать вместо Momentic для desktop и нативных модулей

ЗадачаИнструментПочему
Desktop GUI-тестированиеSikuliX, PyAutoGUIРаботают с изображением экрана, не зависят от веб-DOM
Нативные модули iOS/AndroidAppium, DetoxДоступ к нативным API и железу через драйверы
Комбинированное тестированиеPlaywright + AppiumПокрывают веб и нативные модули отдельно

Если ваш продукт — чисто веб-приложение с мобильной версией, Momentic подойдёт. Как только появляется desktop-клиент или нативный модуль с доступом к железу, вам понадобится второй инструмент. Подбор стека для таких случаев я разбирала в материале про инструменты инженера от Docker до Kubernetes — там есть критерии выбора под конкретную задачу.

Давайте подведём итог этого подраздела: Momentic не тестирует desktop-приложения и нативные модули. Это не недостаток инструмента, а граница его применимости. Перед внедрением проверьте, не выходит ли ваш продукт за эту границу.

Всё совпадает? Тогда идём дальше.

Часто задаваемые вопросы

Заменит ли Momentic ручное тестирование?

Нет, Momentic не заменяет тестировщика, а автоматизирует повторяющиеся сценарии: обход критических пользовательских путей, поиск регрессий и сбор репро-степов. Агент может пропустить логическую ошибку, которую человек заметит при приёмочном тестировании, или принять за баг намеренное поведение интерфейса. Давайте проверим: любой найденный дефект всё равно нужно воспроизвести вручную и подтвердить логами или скриншотом, прежде чем заводить задачу в трекере.

Как выглядит отчёт о найденном баге?

Отчёт содержит репро-степы, скриншоты состояния приложения до и после ошибки, сетевой трафик и консольные логи браузера. Агент прикладывает скриншот элемента, который вызвал сбой, и указывает ожидаемый versus фактический результат. Давайте разберём по шагам: вы открываете отчёт в веб-интерфейсе Momentic, копируете шаги в тест-кейс и проверяете их на чистом окружении — если шаги воспроизводятся, баг подтверждён.

Можно ли запускать Momentic на своём оборудовании или только в облаке?

Momentic работает как облачная платформа: агенты запускаются на серверах поставщика, а вы управляете ими через CLI и файл momatic.yaml. Локальная установка агентов на своё оборудование не предусмотрена, поэтому развернуть платформу у себя в офисе не получится. Если нужно тестировать внутреннее приложение, предоставьте агенту публичный URL и учётные данные для входа.

Работает ли Momentic с приложениями за аутентификацией?

Да, но нужно передать агенту сессию: куки, токен или логин с паролем в конфигурационном файле, иначе исследователь-агент упрется в экран входа и не пройдёт дальше. Перед запуском проверьте, что учётные данные имеют нужные права и не истекают во время сессии тестирования. Давайте проверим: после запуска пайплайна откройте отчёт и убедитесь, что агент зашёл под нужной ролью и прошёл защищённые маршруты.

Что делать, если агент пометил как баг обычную фичу?

Это ложное срабатывание: ИИ может принять валидационную ошибку, пустое состояние или намеренное поведение за дефект. В отчёте всегда есть контекст — скриншот и логи — по которому вы можете решить, является ли это реальной проблемой. Если это не баг, добавьте комментарий в отчёт или скорректируйте критерии успеха в momatic.yaml и запустите пайплайн повторно.

Поделиться:TelegramX / TwitterVK

Читайте также