Восемь тестов, 23 секунды и красный, который указывает адрес и факт
Код теста, живой вывод pytest, разбор падения и конфиг запуска по расписанию.
- Открыть чат14 дней бесплатно, токены в подарок
Что это
Агент пишет набор, а не «скрипт, который однажды сработал»
Скрипт проверяет и молчит. Набор говорит: что проверял, что ожидал, что получил, и почему упал. Каждый тест — одно обещание системы, сообщение об ошибке содержит адрес и фактическое значение, а код возврата означает «можно катить» или «нельзя».
Вход и выход
Что написано и прогнано в этой сессии, а что подключим
Вход
Живой адрес и карта сайта: 1332 адреса, из них выборка на регресс.
Набор — написан
Восемь тестов на pytest: карта, главная, один заголовок, длина title, описание, 404, переход, ссылки.
Прогон — выполнен
pytest 9.2.0, Python 3.12: 7 прошло, 1 упал, 23,11 секунды. Вывод приведён как есть.
Падение — разобрано
Упал тест описания на /docs/: 87 знаков при пороге сто. В сообщении адрес и значение.
CI по расписанию — подключим
Timeweb Cloud или Amvera: токен и запуск сборки, один день. Плюс Playwright на стенде — два дня.
Что открывается: код, живой прогон и конфиг
Вывод консоли и код — из этой сессии, без правок; адреса настоящие
- 1
Код и правила набора
Восемь тестов, ворота и сообщение о падении: что видит разработчик.
- 2
Живой прогон pytest
Консоль: 8 собранных тестов, 7 прошло, 1 упал, 23,11 с, код возврата.
- 3
Конфиг и разбор падения
Запуск по расписанию, шаги, что делает CI при красном.
Что агент делает и что остаётся человеку
| Пишет тест | Агент: одно обещание на тест, понятное сообщение о падении. Человек: говорит, что критично. |
|---|---|
| Собирает набор | Агент: из карты адресов и ворот; новый адрес попадает сам. Человек: решает, что в наборе не нужно. |
| Гоняет | Агент: локально и в CI, с кодом возврата и временем. Человек: выбирает расписание. |
| Разбирает красное | Агент: адрес, ожидание, факт. Человек: дефект кода или устаревший тест. |
| Держит набор | Агент: обновляет ожидания вместе с требованиями. Человек: подтверждает смену нормы. |
Сценарий: от требования до зелёного CI
- 1
Требование
Ворота приёмки: код, один заголовок, длина описания, живые ссылки.
- 2
Тест
Агент пишет проверку: адрес, ожидание, фактическое значение в сообщении.
- 3
Прогон
Локально: pytest -v, вывод и код возврата.
- 4
CI
Запуск по расписанию и на релиз; при красном — сообщение в чат.
- 5
Разбор
Красный разбирается как дефект или как устаревший тест — с решением человека.
- 6
Выход
Набор, вывод прогона, конфиг; история по релизам.
Откуда данные
Что нужно на входе
Адрес стенда
Живой домен, staging или локальная сборка: тесты идут по HTTP.
Ворота приёмки
Что считается нормой — из них рождаются ожидания в тестах.
Карта адресов
Чтобы набор пополнялся сам, а не «когда вспомним».
Токен CI
Право запускать сборку: Timeweb Cloud, Amvera или свой раннер.
Что читаем, что пишем и что нужно от вас
Что подключим
Timeweb Cloud
Читаем: сборки и стенды. Пишем: запуск прогона по расписанию. Нужно: токен с правом сборок. Срок: 1 день.
Amvera
Читаем: проекты и деплои. Пишем: выкладку и запуск. Нужно: токен проекта. Срок: 1 день.
Яндекс Трекер
Читаем: очередь. Пишем: дефект по каждому красному. Нужно: токен задач. Срок: 1 день.
Telegram-бот
Читаем: ничего. Пишем: сообщение о падении прогона. Нужно: бот в рабочем чате. Срок: 1 день.
Astra Linux
Читаем: журналы раннера и приложения. Пишем: ничего. Нужно: SSH на чтение журналов. Срок: 1 день.
Норма, на которую опирается работа
- ГОСТ Р 56921-2016, часть 2Процессы тестирования: автоматизация — способ исполнения проверок, а не отмена критериев.
- ГОСТ Р 56920-2016Понятия: тест-кейс, ожидаемый результат — по ним пишется сообщение о падении.
- ФЗ-38, ст. 5«Проходит» — с указанием прогона и даты; гарантий и превосходных степеней в отчёте нет.
Краевые случаи
Где решает человек, а не агент
Тест устарел
Агент приносит ожидание и факт; править тест или код — решает человек.
Тест плавает
Агент повторяет прогон и помечает «нестабильно», а не «упало».
Стенд недоступен
Прогон помечается «не выполнен»; зелёный цвет не выдаётся за результат.
Playwright нужен, а браузера нет
Агент пишет, что проверка не выполнена, и не выдаёт её за пройденную.
Что обычно возражают
«Автотесты пишут разработчики»
Пусть пишут: набор из ворот приёмки пишется быстрее и не спорит с кодом.
«Набор быстро сгниёт»
Набор строится из карты адресов и ворот: новый адрес попадает сам.
«23 секунды — это не серьёзно»
Серьёзно — это когда прогон можно запускать на каждый коммит.
«А Playwright?»
В этом прогоне браузера не было, и это написано; для него нужен стенд, два дня.
«Кто чинит красное?»
Разработчик — по дефекту, который агент оформляет с адресом и фактом.
Границы
Чего агент не делает
Не выдаёт «не выполнен» за «проходит» и не глушит плавающий тест вместо разбора. Не правит код приложения. Не гоняет тесты по боевым данным клиента. Не обещает покрытие: восемь тестов — это восемь тестов, а не «полное покрытие». Гарантий нет — ст. 5 ФЗ-38.
Вопросы, которые задают первыми
С чего начать?
Пришлите адрес стенда и ворота приёмки — вернём набор, прогон и конфиг CI.
Что нужно от нас?
Адрес стенда; для расписания — токен на запуск сборки, один день.
Сколько идёт прогон?
Восемь тестов — 23 секунды на живом адресе; сорок адресов — около минуты.
Это покроет всё приложение?
Нет: набор закрывает ворота приёмки и пополняется по карте адресов.
Что придёт при падении?
Сообщение с адресом, ожиданием и фактическим значением, плюс ссылка на отчёт.
Роль целиком
Что ещё берёт на себя агент
Тест-план и матрица трассируемости
Восемь ворот приёмки → восемнадцать проверок → метод и результат: что закрыто, а что нет.
Регресс к релизу: набор и прогон
Восемь автотестов, прогон 23 секунды, один красный: регресс ловит реальный дефект.
Баг-репорт с шагами и артефактами
Два дефекта с живого сайта: шаги, ожидаемо и фактически, фрагмент журнала, severity.
Функциональный прогон веб-приложения
Сто сорок четыре адреса: карта, страница, ссылки, ответ сервера — протокол по семьям.
Разбор требований и вопросы к ТЗ
Пять противоречий в требованиях и вопросы, которые нужно закрыть до первого прогона.
Прогон API: REST, коды и JSON
Шесть проверок контракта: коды, тип, тело, схема, негативный случай — с временем ответа.
Отчёт о тестировании и готовности
Двадцать шесть находок по severity и вердикт: что блокирует релиз, а что нет.
SQL-сверка данных при разборе дефекта
Девять запросов к пяти таблицам: где данные расходятся и что это значит для дефекта.
Роли
Собрать набор автотестов на вашем стенде
Пришлите адрес и ворота приёмки — вернём набор pytest, вывод прогона и конфиг запуска.