Files
gps-denied-onboard/_docs/04_refactoring/01-testability-refactoring/testability_assessment.md
T
Oleksandr Bezdieniezhnykh 6869aed602 [AZ-240] [AZ-241] [AZ-242] Refresh testability assessment
Record that the remediated runtime remains directly testable and
advance autodev to test decomposition.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 06:09:21 +03:00

3.3 KiB

Code Testability Assessment

Date: 2026-05-05 Autodev step: Greenfield Step 8 — Code Testability Revision Outcome: Code is testable — no changes needed

Scope Reviewed

  • Test specifications in _docs/02_document/tests/
  • Traceability matrix in _docs/02_document/tests/traceability-matrix.md
  • Runtime source under src/
  • Existing unit tests under tests/
  • Product implementation report _docs/03_implementation/implementation_report_product_runtime_cycle1.md
  • Product completeness report _docs/03_implementation/implementation_completeness_cycle1_report.md

Testability Result

The implemented product runtime can support the planned tests without a testability-focused refactor.

  • Runtime components expose public package-level APIs through __init__.py, types.py, and interfaces.py.
  • Component behavior is expressed through data models and class/protocol boundaries that can be constructed directly in tests.
  • External systems are represented as boundary objects or planned black-box fixtures, not hardwired network calls.
  • VIO engine, local VPR descriptor index, and anchor matcher paths are injectable through protocol/class boundaries.
  • The only runtime filesystem read found in src/ is LocalVprIndexPackage.from_json_file(package_path), which accepts a caller-supplied path and is directly testable with temporary fixture files.
  • No direct environment, subprocess, socket, HTTP, global singleton, or non-configurable heavy dependency construction was found in src/ that would block deterministic tests.
  • Planned hardware, SITL, Jetson, and dataset dependencies belong in test harness tasks and can report blocked when prerequisites are unavailable.

Scenario Review

Scenario Area Testability Assessment
Unit/component tests Current public classes and DTOs are directly constructible and already covered by 58 passing tests.
Black-box replay The planned harness can drive public frame, telemetry, cache, MAVLink, status, and FDR boundaries without importing runtime internals.
VIO and anchor replay Heavy BASALT, FAISS, and matcher dependencies can be represented by test harness fixtures or backend boundaries in test tasks.
SITL/MAVLink tests The MAVLink/GCS gateway exposes validation and status behavior without requiring live hardware for unit-level coverage.
Jetson/resource tests Hardware-specific release gates are environment-dependent and do not require runtime refactoring before test-task implementation.
Security/cache tests Cache, freshness, no-fetch, and generated-tile trust behavior is exposed through public component methods.

Reviewed Test Artifacts

  • _docs/02_document/tests/blackbox-tests.md
  • _docs/02_document/tests/e2e-test-suite.md
  • _docs/02_document/tests/environment.md
  • _docs/02_document/tests/performance-tests.md
  • _docs/02_document/tests/resilience-tests.md
  • _docs/02_document/tests/resource-limit-tests.md
  • _docs/02_document/tests/security-tests.md
  • _docs/02_document/tests/test-data.md
  • _docs/02_document/tests/traceability-matrix.md

Verification

  • python3 -m pytest passed: 58 tests.
  • python3 -m black ... and python3 -m ruff ... could not run because those optional dev tool modules are not installed in the current interpreter.

Next Step

Proceed to Greenfield Step 9, Decompose Tests.