Skip to content

Стратегия проверок ​

Что уже проверяется ​

Все проверки запускаются через единый реестр config/gates.json. npm run gate -- quick проверяет архитектурную политику, формат, TypeScript, lint, зависимости, сборку и unit-тесты. verify добавляет аудит зависимостей, реальную PostgreSQL/HTTP и браузер. release добавляет оба сценария 5 GiB с перезапусками. Старые npm aliases делегируют гейтам. Команды и расширение, результаты, инструкции.

Проверки по уровням ​

УровеньПроверяемое поведение
DomainИдентичность, переходы, версии, политики меток/удаления; без сети и БД
ApplicationОркестрация сценариев, ACL, идемпотентность, реакции на отказ порта
Adapter contractОдинаковые гарантии Local/Object backend, ошибки и отмена
IntegrationРеальная PostgreSQL, выбранный blob backend, leases/outbox/reconciliation
HTTP/SDKСхемы, авторизация, коды, пагинация, abort, безопасные retry
Контракт APIOpenAPI snapshot, собственные SDK/CLI и фикстуры с известным происхождением
Transfer5 ГБ, bounded memory, Range, backpressure, повтор частей, совместная нагрузка
Failure/restoreОтключение узла, потеря ответа, разделение сети, чистое восстановление

Текущие unit/fault/governance тесты находятся в tests/*.test.mjs, интеграционные — в tests/integration/**/*.test.mjs и импортируют собранный JS через Node.js test runner. Браузерные и большие сценарии перечислены в реестре явно. TS fixtures в tests/fixtures используются consumer-тестами и не являются самостоятельными входами. Новый набор подключается к реестру, verify/release и CI; неизвестные входы, only/skip/todo, пустые наборы и отсутствие инфраструктуры проваливают гейт.

Данные больших тестов генерируются потоково; не коммитим архивы 5 ГБ. Fixtures маленькие, обезличенные, с описанием происхождения и версии протокола. Контрактные записи не выполняются на рабочих репозиториях.

Часы и случайность контролируемы. Не полагаемся на sleep для гонок: используем управляемые точки синхронизации. Для асинхронных jobs проверяем повторную доставку, истечение lease и устаревшего владельца.

Приёмка первого сценария ​

  • Приём файла до 5 ГБ не накапливает всё тело в памяти.
  • До завершения и проверки файл не доступен как опубликованный.
  • GET/HEAD/Range возвращают правильные байты, размер и ETag.
  • После перезапуска промежуточная операция корректно продолжается или очищается.
  • Потеря ответа завершения не создаёт две публикации.
  • Ограничения и фактическая конфигурация стенда записаны в результатах.

Тесты должны защищать поведение и инварианты, а не повторять реализацию или проверять существование пустых экспортов. Процент покрытия сам по себе не является критерием надёжности.

Arkvory · ProAnimaStudio