Testence: как я проверяю веб-приложения с ИИ
Мне всегда было неудобно принимать результат проверки в формате «я покликал, всё хорошо». Даже если это говорит умный агент. Что он проверил? Как повторить тот же сценарий после следующего изменения? Почему он решил, что данные действительно сохранились?
Я сделал Testence, потому что хотел получать результат, который можно открыть, понять и повторить. Агенту удобно поручать подготовку сценария и расследование ошибки. А саму проверку я хочу запускать столько раз, сколько понадобится, с понятным набором действий.
Для меня главное достоинство Testence — связь между обещанием продукта и доказательством. «Пользователь может сохранить заявку» должно означать, что мы проверили сохранение, а затем сохранили материалы этого прогона. В этом гайде начнём с готового примера и перейдём к собственному приложению.
1. Установите Testence в отдельное окружение
Создайте пустую папку для учебного примера. Установите Python и uv; затем выполните:
uv venv
uv pip install testence
uv run python -m playwright install chromium
uv run testence doctor
Это установка опубликованного пакета. Актуальные требования и варианты работы с системным браузером приведены в README Testence. Проект развивается в alpha-ветке; учебный запуск я делаю на синтетических данных.
2. Получите первый повторяемый прогон
uv run testence init .
uv run testence plan prepare .testence/specs/onboarding.md --project .
uv run testence run --project . --run-id r-onboarding
uv run testence inspect runs/r-onboarding
uv run testence report runs/r-onboarding
Здесь создаётся учебный каркас .testence/. Это пример работы инструмента, а не проверка вашего продукта. Я советую сначала пройти этот короткий маршрут: так гораздо проще понять, куда записываются результаты и как выглядит отчёт.
Если plan prepare сообщает blocker, исправьте указанную предпосылку и повторите команду. Например, подготовьте недостающий стенд. Готовность к запуску стоит выяснять до того, как тратить время на браузер.
3. Посмотрите, как выглядит обнаруженная ошибка
В учебном примере есть сценарий, где интерфейс сообщает об успехе, а независимая проверка его не подтверждает:
uv run testence run --project . --run-id r-demo-failure -- .testence/examples/test_demo_failure.py -q
uv run testence report runs/r-demo-failure
Этот тест должен завершиться неуспешно. Именно такой результат нам и нужен: открыть отчёт и увидеть, почему зелёного сообщения на экране недостаточно. Команды сверены с публичным quick start.
Мне очень нравится этот пример. Он делает разницу между «похоже, работает» и «мы проверили результат» осязаемой за один запуск.
4. Подключите своё приложение
Для первого собственного теста отдельный план не обязателен. Начните с публичной страницы локального стенда. Создайте рядом с тестом testence.json:
{"base_url": "http://localhost:3000", "auth": "none"}
Замените адрес на свой. Затем проверьте доступность:
uv run testence doctor --target
Вот мой минимальный пример test_smoke.py. Название заголовка замените на реально существующее в вашем интерфейсе:
from testence.engine import Target
def test_home_page(ex):
ex.goto("/", intent="Открыть главную страницу")
ex.expect_visible(
Target("role", "heading", name="Добро пожаловать"),
intent="Проверить заголовок главной страницы",
)
uv run testence run --project . -- test_smoke.py -q
Это проверка отображения. Для проверки сохранения данных нужен ещё независимый источник результата — например, чтение через API. Подключение реального приложения описано в руководстве первого теста.
5. Дайте агенту задачу, которую можно проверить
Вместо общего «протестируй сайт» я формулирую один сценарий:
Проверь форму заявки на локальном QA-стенде через Testence.
Используй только синтетические данные.
После отправки проверь подтверждение в интерфейсе и запись через API.
Если API недоступен, укажи, что сохранение пока не доказано.
Сохрани тест и отчёт. При ошибке предложи небольшой diff,
а затем повтори тот же сценарий.
Так агент понимает, что считать успехом. Если ошибка повторилась, у меня остаются шаги, состояние страницы и материалы для разбора. Я могу отдать их другому человеку и продолжить работу без пересказа всей переписки.
Практика: добейтесь полезного красного теста
Сначала получите успешный учебный прогон. Затем запустите r-demo-failure, откройте отчёт и объясните, какое обещание не выполнено. После этого напишите один smoke-тест для своей страницы.
Я считаю Testence сильным инструментом именно для работы с кодинг-агентами: он помогает превращать их рассуждения в проверяемую работу. Исходники, документация и обсуждение улучшений — в репозитории Testence.
Если хочется применить этот подход к полезной чужой задаче, продолжайте в гайде ComputeForGood. Ниже — проверка знаний и сохранение прогресса после входа.
Проверка знаний
Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.