Files
ss-tools/docs/semantics-testing-audit.md
busya 6162fc824f docs: semantics-testing compliance audit — 433 test files analyzed
OVERALL: C+ (good structure, documentation gaps)

STRENGTHS:
- 99.3% files with #region anchors (430/433)
- 0 logic mirrors (tautology) — all hardcoded fixtures
- 90.1% with @RELATION BINDS_TO (390/433)

GAPS:
- Only 58.2% with @TEST_EDGE (252/433) — 181 files missing edge declarations
- Only 49% test functions have @BRIEF (908/1855)
- 38 files > 600 lines (8 > 1000 lines)
- 3 files missing module-level anchors

PRIORITY FIXES:
1. Add @TEST_EDGE to 181 files (coverage campaign agents skipped this)
2. Add @BRIEF to 947 test functions (agents generated anchors without BRIEF)
3. Split 8 files > 1000 lines (test_assistant_tools 1893, llm_analysis 1662, etc)
2026-06-16 11:46:11 +03:00

8.4 KiB
Raw Permalink Blame History

Аудит соответствия тестов semantics-testing

Дата: 2026-06-16 Файлов проверено: 433 (.py в backend/tests/) Тестов: 7778 unit + 175 integration + 2442 frontend


Сводка

Критерий Порог Факт Статус
Якоря #region 100% 99.3% (430/433) 🟢
@RELATION BINDS_TO 100% 90.1% (390/433) 🟡
@TEST_EDGE (≥3) 100% 58.2% (252/433) 🔴
@BRIEF на тестах 100% 49% (908/1855) 🔴
Размер файла <600 строк 100% 91.2% (38 >600) 🟡
Logic mirrors 0 0 🟢
ADR regression defense 100% Частично 🟡

1. Якоря #region/#endregion🟢 99.3%

430 из 433 файлов имеют корректный #region на уровне модуля.

Нарушения (3 файла):

Файл Причина
test_smoke_plugins.py Нет якоря — создан до стандартизации
api/test_tasks.py Нет якоря — создан до стандартизации
services/git/conftest.py conftest без якоря

2. @RELATION BINDS_TO🟡 90.1%

390 из 433 файлов связывают тестовый модуль с production-контрактом.

43 файла без BINDS_TO — в основном старые тесты (до внедрения semantics-testing), а также несколько edge/coverage-файлов, созданных агентами во время кампании покрытия:

Файл Комментарий
test_datasets.py Старый тест
test_db_executor.py Старый тест
test_core_timezone_edge.py Edge-файл без BINDS_TO
test_schemas_edge.py Edge-файл без BINDS_TO
test_connection_service.py Старый тест
test_orchestrator_direct_db.py Старый тест
services/dataset_review/test_semantic_resolver_edge.py Edge-файл
services/dataset_review/test_superset_matrix.py Специфичный файл
services/dataset_review/test_helpers_edge.py Edge-файл
core/test_defensive_guards.py Старый тест

Рекомендация: добавить @RELATION BINDS_TO -> [TargetModule] во все 43 файла.


3. @TEST_EDGE🔴 58.2%

Только 252 из 433 файлов декларируют edge-кейсы в заголовке модуля.

Требование skills: минимум 3 edge-кейса: missing_field, invalid_type, external_fail.

181 файл без @TEST_EDGE — это крупнейший пробел.

Причины:

  • ~120 файлов созданы до внедрения semantics-testing skill
  • ~40 coverage/edge-файлов созданы агентами во время кампании — агенты не добавляли @TEST_EDGE в заголовки
  • ~20 integration-файлов (включая новый TLS Custom CA)

Рекомендация: целевая кампания по добавлению @TEST_EDGE в заголовки 181 файла. Приоритет: файлы >300 строк и coverage-файлы от агентов.


4. @BRIEF на тестовых функциях — 🔴 49%

Из 1855 тестовых функций с #region [C:2] [TYPE Function] только 908 имеют @BRIEF.

947 функций без @BRIEF — большинство созданы агентами, которые генерировали якоря без @BRIEF (формат: #region test_name [C:2] [TYPE Function] без следующей строки # @BRIEF ...).

Рекомендация: автоматизированное добавление @BRIEF (можно сгенерировать из docstring или имени теста).


5. Размер файлов — 🟡 91.2%

38 файлов > 600 строк (порог semantics-testing §II.5).

Диапазон Количество Файлы
600700 16 Умеренное превышение
7001000 14 Значительное превышение
10001900 8 Критическое превышение

Худшие нарушители (>1000 строк):

Строк Файл Рекомендация
1893 api/test_assistant_tools.py Разделить по tool-классам
1662 plugins/test_llm_analysis_service_coverage.py Разделить на 3 файла
1613 plugins/test_llm_analysis_service.py Разделить по классам сервиса
1459 plugins/test_llm_analysis_plugin.py Выделить PathA/PathB в отдельные файлы
1347 api/test_dataset_review_routes_extended.py Разделить по endpoint-группам
1278 api/test_dataset_review_deps_unit.py Разделить по dependency-классам
1042 test_datasets.py Разделить по операциям (CRUD, filters, preview)
975 test_core/test_async_network.py Разделить по протоколам

Исключение (integration, до 800 строк): 2 файла в пределах нормы.

Рекомендация: приоритетно разделить 8 файлов >1000 строк.


6. Logic Mirrors (анти-таутология) — 🟢 0

Нарушений не обнаружено. Тесты используют hardcoded fixtures и не вычисляют expected через вызовы production-кода.

Это сильная сторона кодбазы — агенты последовательно применяли паттерн expected = {"id": "dash_1", ...} вместо expected = production_fn(x).


7. ADR Regression Defense — 🟡 Частично

Проверка наличия @REJECTED в production-коде и соответствующих @TEST_EDGE в тестах:

  • ADR-0009 (TLS/SSL): test_superset_tls_custom_ca.py проверяет rejected-путь (certifi не доверяет custom CA)
  • ADR-0013 (coverage reporting): ортогональный аудит в docs/orthogonal-test-report.md
  • Остальные ADR требуют точечной проверки — не автоматизировано

8. Тесты без #region на функциях

Многие тестовые функции (особенно в старых файлах) не имеют #region/#endregion вообще. Они используют plain def test_*() без семантической разметки. Точное количество не подсчитано, но по оценке ~40% тестовых функций не имеют персональных якорей.


Итоговая оценка

Измерение Оценка Комментарий
Структурная целостность B+ 99% файлов с якорями, но много oversized
Трассируемость C+ 90% BINDS_TO, но только 58% TEST_EDGE
Документированность D 49% @BRIEF на тестах — агенты не добавляли
Анти-таутология A 0 logic mirrors — сильная сторона
Размер файлов C 38 файлов >600 строк, 8 >1000 строк

Общая оценка: C+ — базовая структура заложена, но документация тестов (@TEST_EDGE, @BRIEF) и размеры файлов требуют значительных улучшений.


Приоритеты исправления

  1. 🔴 Добавить @TEST_EDGE в 181 файл без него
  2. 🔴 Добавить @BRIEF на 947 тестовых функций
  3. 🟡 Разделить 8 файлов >1000 строк
  4. 🟡 Добавить @RELATION BINDS_TO в 43 файла
  5. 🟢 Добавить якоря в 3 файла без них