Files
autotest/polygon-docs/sonnet-compare-testing-prompt.md
T

4.8 KiB
Raw Blame History

Соннет: анализ сравнительного тестирования Polygon ↔ реальный Nubes API

Адресат: Claude Sonnet 4.6 (новый чат) Режим: диалог. Задавай встречные вопросы если нужно уточнение. НЕ редактировать файлы. Только анализ и советы в чат.


Контекст

Polygon (v0.5.4) — эмулятор REST API облачной платформы Nubes. 3 стенда: dev (37 сервисов), test (37), prod (35). YAML-конфиги генерируются из терраформ-репы (~/tf_provider/generated/{dev,test,prod}/resources_yaml/).

Реальное API:

  • https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc
  • https://lk-api-gateway-test.ngcloud.ru/api/v1/svc
  • https://lk-api-gateway.ngcloud.ru/api/v1/svc

Токены в secrets/{dev,test,prod}.token.

Что сделано

Написан скрипт compare_test.py который сравнивает read-only эндпоинты полигона и реального API:

  • GET /services — список сервисов
  • GET /services/{id} — операции (svcOperationId, operation, kind, action)
  • GET /instanceOperations/default/{id} — cfsParams (id, код, dataType, isRequired)

Первый прогон показал:

  • dev: операции совпадают, но у 2 параметров dataType: None вместо "string"
  • test: аналогично
  • prod: чисто, расхождений нет

Также обнаружено что реальный API возвращает HTML-entities в dataType (integer >= 0), а полигон — чистый текст (integer >= 0). Полигон здесь правильнее реального API.

Ключевой нюанс: идеология стендов

Стенды НЕ идентичны. Dev опережает test, test опережает prod. Новые сервисы и параметры появляются сначала в dev, потом через какое-то время попадают в test, и только затем в prod. Поэтому:

  • Если в dev-полигоне и dev-реальном API есть расхождения — это может быть нормально (реальный API уже обновился, а YAML в полигоне — ещё нет)
  • Если в prod есть расхождения — скорее всего баг в генерации YAML
  • Нужно различать «допустимое отставание» и «реальный баг»

Что нужно от тебя

1. Стратегия сравнительного тестирования

Как правильно сравнивать полигон с реальным API учитывая что:

  • Стенды могут и должны отличаться
  • YAML генерируется не в реальном времени, а батчами из терраформа
  • Некоторые сервисы есть в реальном API но НЕ в терраформе (их не тестируем)

Что должно считаться PASS, а что FAIL? Какие допуски?

2. Какие ещё эндпоинты сравнивать?

Сейчас сравниваются 3 read-only эндпоинта. Какие ещё можно безопасно сравнять? Что ещё есть в реальном API такого что полигон должен повторять один-в-один?

3. Периодичность и автоматизация

Как часто запускать сравнение? При каких событиях (изменение терраформа, деплой полигона)? Должно ли это быть частью CI?

4. dataType: None

В from_stands.py для некоторых параметров dataType падает в None (хотя дефолт "string"). Где конкретно искать причину?

5. Общие советы

Что ещё мы упускаем в тестировании полигона? Какие сценарии, краевые случаи, проверки контрактов?


Формат диалога

Ты можешь:

  • Сразу дать развёрнутый ответ по всем пунктам
  • Или задать уточняющие вопросы — и тогда я отвечу, а ты продолжишь

Я хочу чтобы в итоге получился конкретный план действий: что тестировать, как часто, что считать ошибкой, что — допустимым расхождением.