Files
crank/docs/testing-strategy.md
T
github-ops 9331ee1d89
Deploy / deploy (push) Successful in 37s
CI / Rust Checks (push) Successful in 27m22s
CI / UI Checks (push) Successful in 6s
CI / Deployment Manifests (push) Successful in 3s
CI / Frontend E2E (push) Successful in 20m44s
Complete markdown documentation
2026-06-21 12:49:56 +00:00

4.0 KiB
Raw Blame History

Стратегия тестирования

1. Назначение документа

Этот документ фиксирует, как проект должен тестироваться с самого начала разработки, чтобы архитектура не осталась "только на бумаге".

Цель:

  • проверять доменную модель отдельно от транспорта;
  • ловить регрессии в mapping;
  • не дать адаптерам начать вести себя по-разному;
  • обеспечить воспроизводимость для демонстрации и регрессионных проверок.

2. Уровни тестов

2.1. Unit tests

Покрывают:

  • crank-schema
  • crank-mapping
  • небольшие части crank-core

Что проверять:

  • валидацию схем;
  • JSONPath parsing;
  • применение input/output mapping;
  • генерацию чернового mapping;

2.2. Integration tests

Покрывают:

  • crank-registry с реальной БД;
  • crank-runtime с реальными adapter contracts;
  • admin-api на поднятом приложении;
  • publish flow и YAML import/export.

Что проверять:

  • создание operation и новой version;
  • publish и reload published tools;
  • тестовый вызов draft;
  • экспорт в YAML и повторный импорт;
  • связность БД между operations, operation_versions, published_operations.

2.3. Adapter tests

Отдельно для Community-протокола:

  • REST adapter;

Что проверять:

  • сборку request;
  • нормализацию response;
  • обработку ошибок;
  • стабильность mapping context.

2.4. End-to-end tests

Минимально нужны сценарии:

  • создать REST operation -> протестировать -> опубликовать -> вызвать как MCP tool;

3. Что должно быть покрыто обязательно

Обязательно с первого этапа

  • schema validation;
  • mapping execution;
  • YAML import/export roundtrip;
  • versioning logic registry;
  • publish flow.

Обязательно до первого демо

  • хотя бы один end-to-end сценарий для REST;
  • negative tests на invalid JSONPath;

4. Формат тестовых данных

Рекомендуется использовать:

  • JSON fixtures для sample input/output;
  • YAML golden files для export/import;
  • snapshot tests для generated draft.

5. Техническая стратегия

Для Rust-части:

  • unit/integration tests через cargo test;
  • тестовые фикстуры в tests/fixtures/;
  • golden files для YAML;
  • отдельные integration suites для registry и admin-api.

Для frontend:

  • unit tests для form helpers и schema rendering;
  • integration tests для critical user flows;
  • отдельная проверка mapping editor и sample upload flows.
  • отдельный regression checklist для post-integration smoke pass: manual-regression-checklist.md.

6. Что нельзя оставлять без тестов

  • version increment logic;
  • publish semantics;
  • YAML import как create|upsert;
  • auth profile resolution;
  • generated draft application;
  • MCP tool execution path.

7. Практический итог

Перед активной разработкой проект должен исходить из правила:

  • доменная логика тестируется отдельно;
  • adapters тестируются отдельно;
  • registry и admin-api тестируются на реальной БД;
  • минимум один полный end-to-end сценарий должен быть воспроизводим автоматически.