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 PlanSTP: 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
Highseverity 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 inRTM.