Кто проверяет интерпретацию?

Канал о системном и бизнес-анализе, продуктовом мышлении и архитектуре. Как выявлять реальные проблемы, строить работающие решения и не терять здравый смысл в IT. Все вопросы - @innokentyB

e2eмодульные тестыинтеграционные тесты

Агент написал код. Потом написал тесты. Что именно они доказали?

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

Kun Chen недавно показал это в своём DeepSWE eval. Когда Sonnet 5.5 High запретили писать тесты, доля успешных задач оказалась немного выше, но разница не была статистически значимой. Зато агент статистически значимо тратил меньше времени и денег: 58 часов и $278 против 62 часов и $304. В базовом прогоне 65% написанных агентом тестов были модульными, 35% — интеграционными; ни одна из этих групп не дала прироста относительно режима без тестов. Отдельная выборка из 44 задач, где не запускались даже существующие тесты, тоже не показала разницы в доле успешных задач.

Ограничение здесь важнее громкого вывода. В исследовании было всего 17 E2E-тестов против более чем 3000 модульных и интеграционных. Автор отдельно уточнил: это не аргумент «не пишите тесты» и не проверка ценности E2E. Человеческая постановка теста тоже может изменить результат, но в этом эксперименте это не доказано.

У меня есть свежий пример из контура публикации. Адаптер сообщил об успехе, статус стал зелёным, а публичной публикации не появилось. Такая проверка доказала, что команда отработала и внутреннее состояние обновилось. Она не доказала пользовательский исход.

Полный сценарий здесь должен проверять:

  1. публикация появилась именно в целевом профиле;
  2. опубликован точный принятый материал;
  3. получен публичный URL и он открывается;
  4. повторный запуск не создаёт дубль.

Это пример того, как я бы сформулировал E2E-сценарий. Такой защиты у этого контура пока нет.

Поэтому в своём методе Test-Driven Product Development (TDPD) я ставлю порядок так:

бизнес-проблема → спецификация → пользовательские сценарии → исполняемые E2E до реализации → код агента → приёмка человеком (UAT).

Модульные и интеграционные тесты всё равно нужны: они помогают быстро понять, где сломалась логика, граница или интеграция. Но даже зелёный E2E может закрепить неверную реализацию, если сам сценарий описывает не тот результат. Поэтому UAT остаётся отдельной проверкой исходного замысла.

Если ваши тесты зелёные, какой наблюдаемый результат пользователя они доказывают — и кто проверил, что проверяется именно он?

Дискуссия

PRO продукты и системы | Иннокентий Бодров
IT Удильщик by евGEN
Никакого толка от тестов агентов я не увидел. Эти мудаки их переписывают ещё. Тут явно нужен подход не в лоб. Забавно было, когда он написал микросервис, отчитался, 40/40 успешно. Сервис банально не делал то, ради чего был создан. Зато все тесты проходят…
Так в том и фишка, что нужны именно end 2 end тесты, которые описывают именно результат пользователя/бизнеса
IT Удильщик by евGEN
PRO продукты и системы | Иннокентий Бодров
Так в том и фишка, что нужны именно end 2 end тесты, которые описывают именно результат пользователя/бизнеса
я для своего вайбкод-продукта сделал отдельный e2e стенд. Заранее прописываю в дизайн доке какие end2end тесты нужны (там смухлевать сложно) и все, что при приемке нахожу – заставляю закрывать доп тестами, в том числе и e2e
PRO продукты и системы | Иннокентий Бодров
IT Удильщик by евGEN
я для своего вайбкод-продукта сделал отдельный e2e стенд. Заранее прописываю в дизайн доке какие end2end тесты нужны (там смухлевать сложно) и все, что при приемке нахожу – заставляю закрывать доп тестами, в том числе и e2e
Ну да. Я так же делаю. По другому реально сложно контролировать
Георгий Беляев · лиды и конверсии
PRO продукты и системы | Иннокентий Бодров
Ну да. Я так же делаю. По другому реально сложно контролировать
Да, только e2e без нормальных тестовых данных тоже легко превращается в декорацию. У нас сценарий проходил зелёным, потому что стенд всегда возвращал пустой список, а пользователю нужен был результат с позициями.
Присоединиться к обсуждению →

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