Skip to content

Software Verification and Validation Plan (SVVP)

Status: Draft v0.1
Owner: BionicLoop engineering

1. Test Document Acronyms

Common structure used here:

  • SVVP: Software Verification and Validation Plan
  • STP: Software Test Protocol (test procedures and expected results)
  • STR: Software Test Report (actual execution evidence)

2. Verification Strategy

Verification is split into:

  • Unit tests (core logic, algorithm mapping, policy gates)
  • Integration tests (runtime + adapters + persistence)
  • System/manual tests (real-device behavior, BLE reconnection, onboarding flows)

3. Test Environments

  • iOS Simulator for deterministic unit/integration tests.
  • Physical iPhone + Dexcom G7 + OmniPod DASH for connection/cadence and delivery behavior.

4. Entry and Exit Criteria

Entry:

  • SRS and SDD IDs updated for proposed change.
  • Risk impacts reviewed for affected paths.

Exit:

  • All planned TV-* tests pass or deviations documented.
  • Traceability matrix updated with evidence links (STR-* artifacts, logs, screenshots).
  • No unresolved High severity regressions.

5. Seed Test Inventory

Test ID Level Purpose SRS Link
TV-RUN-001 Unit Expected step math anchored to first successful run SRS-RUN-001, SRS-RUN-002
TV-RUN-002 Integration Duplicate step prevention (stepNotDue) SRS-RUN-002
TV-CGM-001 Unit Out-of-range CGM -> unavailable (-1) mapping SRS-CGM-001
TV-CGM-002 Unit Step-0 fresh/in-range gating SRS-CGM-002
TV-CGM-003 Unit Step>0 degraded run with unavailable CGM SRS-CGM-003
TV-PUMP-001 Unit Pump unavailable -> run step, block command application SRS-PUMP-001
TV-PUMP-002 Integration Signal-loss policy persistence and clear behavior SRS-PUMP-001, SRS-UI-002
TV-PUMP-003 Integration Delivery reconciliation and min-dose quantization behavior SRS-PUMP-003
TV-PUMP-004 System Home pod card updates on connect/disconnect without entering settings SRS-PUMP-004
TV-PUMP-005 Integration/System Delivery-state clears from delivering via auto-refresh without opening Pump settings SRS-PUMP-005
TV-MEAL-001 Unit Meal announce borrow-window gating SRS-MEAL-001
TV-MEAL-002 Unit Meal announce blocked when pump delivering/unknown SRS-MEAL-002
TV-MEAL-003 Unit/Integration Meal announce executes on current due step when slot is already due/missed (pending team sign-off) SRS-MEAL-004
TV-MEAL-004 Unit Meal announce rejected before first successful anchored step SRS-MEAL-005
TV-STATE-001 Integration Relaunch restores cadence and algorithm state SRS-STATE-001
TV-STATE-002 Integration Reset clears all session state and starts fresh SRS-STATE-002
TV-LOG-001 Unit Step telemetry contains input/output/command fields SRS-LOG-001
TV-LOG-002 Integration CSV export schema and row append behavior SRS-LOG-002
TV-LOG-003 Unit/Integration Async export avoids main-actor blocking SRS-LOG-003
TV-UI-001 UI/System Home loop-state precedence rendering SRS-UI-001
TV-UI-002 UI/System Availability messaging matches runtime outcomes SRS-UI-002
TV-UI-003 UI/System CGM/Pod setup modal Cancel dismisses directly and does not force settings on no-active-pod startup SRS-UI-003
TV-UI-004 Unit/UI Meal announcement composer auto-cancels on app background transition SRS-UI-004
TV-ALERT-001 Unit Alert normalization maps Omni/G7/runtime events to canonical model fields SRS-ALERT-001, SRS-ALERT-002
TV-ALERT-002 Unit/Integration Alert precedence keeps critical alert visible when lower-severity alerts coexist SRS-ALERT-003
TV-ALERT-003 Integration Transient reconnect events are debounced/coalesced without suppressing persistent faults SRS-ALERT-004
TV-ALERT-004 Integration/System Alert clear/ack rules behave per alert type and update UI state correctly SRS-ALERT-005
TV-ALERT-005 System/Manual Protocol-required alerts and wording are present and actionable in app flows SRS-ALERT-006
TV-SEC-001 Integration Local export controls and file handling behavior SRS-SEC-002
TV-SEC-002 Integration/System Cloud telemetry upload control path (future) SRS-SEC-001

6. Evidence

Expected evidence package per change:

  • test command output (xcodebuild, swift test)
  • failing/passing test IDs
  • device test logs where applicable
  • screenshots for UI safety behavior
  • link to changed requirement and risk IDs

7. Deferred/Planned Validation

  • Extended overnight cadence reliability runs.
  • Real hardware fault-injection scenarios (disconnects, stale CGM, unavailable pump).
  • Formal usability/human-factors sessions for meal announcement and safety messaging.

8. Xcode Automated UI Testing Strategy

Purpose: - Use XCTest UI automation as repeatable verification evidence for deterministic UI behavior and requirement conformance.

Best leverage areas: - Navigation and modal routing correctness. - Presence/enabled-state of safety-critical controls. - State-to-message rendering for known inputs. - Regression checks for setup flows and dismiss paths. - Non-hardware-dependent interaction logic (for example meal sheet presentation/cancel behavior).

Not a primary tool for: - BLE transport reliability and reconnect behavior. - Background wake cadence and overnight timing reliability. - Real pump delivery confirmation and physical device alert timing.

Execution model: - Run UI tests on Simulator with deterministic launch fixtures. - Use app launch arguments/environment to force reproducible runtime states. - Use stable accessibility identifiers for controls, labels, and state badges. - Keep one fast smoke suite as release gate; keep extended suite for nightly runs.

9. UI Automation Verification Mapping

  • Automated UI evidence is acceptable for [SRS-UI](SoftwareRequirementsSpecification.md#srs-ui)-* and portions of [SRS-MEAL](SoftwareRequirementsSpecification.md#srs-meal)-* and [SRS-ALERT](SoftwareRequirementsSpecification.md#srs-alert)-* where behavior is deterministic and fixture-driven.
  • Hardware-coupled requirements still require integration/system evidence from real-device runs.
  • Preferred command:
  • xcodebuild -scheme BionicLoop -destination 'platform=iOS Simulator,name=iPhone 17' -only-testing:BionicLoopUITests test
  • Evidence artifacts:
  • test logs, pass/fail results, captured screenshots/attachments, and linked TV-* IDs in RTM.