What you will learn
- Distinguish software integration, software system testing and complete-device verification.
- Build an integration sequence around architecture, interfaces and risk controls.
- Specify objective tests for faults, recovery, timing and persistent state.
- Select environments that support the claims being tested.
- Connect controlled test evidence with FDA submission documentation.
Start with MTL-330 — Software Unit Verification and Testing. This lesson uses IEC 62304:2006+A1:2015. The standard summary, FDA recommendations and practical teaching examples are labelled separately. The examples are engineering suggestions, not additional normative clauses.
Different levels answer different questions
| Level | Question | Example evidence |
|---|---|---|
| Unit verification | Does this unit meet its specified design and requirements? | Conversion boundaries, local state transitions and error handling |
| Software integration testing | Do connected software items interact as designed? | Parser-to-application data, acknowledgements, retries and shared resources |
| Software system testing | Does the assembled software fulfil its software requirements? | End-to-end workflows, performance and required fault responses |
| Complete-device verification and validation | Does the device meet design inputs and support intended use and user needs? | Physical delivery performance, device risk controls and representative use |
Define the system boundary explicitly: firmware, application, cloud and supporting services may be separate software systems with interfaces between them. A test spanning several systems needs a clear requirement allocation. A software-system pass does not establish physical delivery accuracy or clinical suitability.
See MTL-116 — Verification and Validation for the wider evidence strategy.
Integration and software-system testing have different scope
Clause 5.6 addresses software integration and integration testing for Classes B and C. In summary, integrate according to the integration plan, verify the integration, test the assembled items, evaluate test adequacy, retain results and address problems. Regression testing considers whether integration has introduced defects into previously integrated software.
Clause 5.7 addresses software-system testing for Classes A, B and C. Establish tests that cover the software requirements, record results, handle discovered problems and evaluate the testing. Following changes, repeat affected tests and perform appropriate testing to demonstrate that unintended effects have not been introduced.
The absence of Class A applicability in clause 5.6 does not remove clause 5.7 or justify leaving important interfaces unverified. Allocate verification to the actual requirements and risks.
These are summaries, not a clause-by-clause compliance matrix. Use the controlled licensed standard for exact obligations, class applicability and records. Integration and system testing may be organised together where appropriate, while keeping their objectives and coverage identifiable. MTL-312 — IEC 62304 Software Lifecycle provides the wider process context.
Make the integration sequence deliberate
Begin with the architecture and identify which interactions could defeat a requirement or risk control. Introduce important interfaces early enough to expose incompatible assumptions. Connecting everything at the end makes fault isolation difficult and leaves little time to correct architecture.
- Identify the items, versions, interfaces and dependencies in each increment.
- Set entry conditions: accepted units, controlled interface definitions and a usable environment.
- Specify normal and abnormal interactions with objective expected outcomes.
- Record which dependencies are real and which remain simulated.
- Define exit criteria and the regression set before adding the next increment.
A useful increment might connect acquisition firmware to the communication parser before adding storage and presentation. Another might integrate authentication and authorisation before exposing clinical data. The right sequence follows the architecture and project risks; no single sequence suits every device.
Test the assumptions at each boundary
Data and meaning
Challenge units, scaling, signed values, field lengths, timestamps, version identifiers and optional fields. Syntactically valid data may still have the wrong meaning.
Sequence and state
Try duplicate, stale, missing and out-of-order messages; concurrent requests; restart during a transaction; and reconnect after partial completion.
Timing and resources
Exercise specified deadlines, queue limits, storage exhaustion, sustained load and dependency timeouts. Verify the defined response and recovery, not merely absence of a crash.
Fault containment
Inject a failed service, corrupt record or unavailable sensor at the appropriate boundary. Observe alarms, status, persistence and permitted operations.
Derive acceptance criteria from approved requirements. “Reconnects successfully” is incomplete when reconnection can lose a record, duplicate an action or display stale information. Record the expected state before, during and after the fault. Cybersecurity tests complement these checks where malicious manipulation changes the threat or acceptance objective.
Match the environment to the claim
| Environment | Useful for | Limit to address |
|---|---|---|
| Host with mocks or stubs | Repeatable faults and rapid functional checks | May conceal real protocol, scheduling and hardware behaviour |
| Protocol simulator | Malformed traffic, delays and version combinations | Validate the simulator assumptions against the actual interface |
| Target hardware with controlled peripherals | Drivers, resource limits, interrupts and target timing | May not reproduce the complete physical device or use environment |
| Representative complete configuration | End-to-end software requirements and interactions | Control versions, network conditions, accessories and test data |
Maintain a record of deviations from the intended configuration and explain which conclusions each deviation affects. A simulated sensor may support an alarm-logic test but cannot establish sensor accuracy. Keep final evidence tied to the release candidate or justify its applicability to that baseline.
Test requirements as observable behaviour
Build a coverage view linking each software requirement to tests and results. Include normal workflows, boundary conditions, required fault responses and non-functional requirements. Separate “not executed”, “blocked”, “failed” and “passed”; a test existing in the repository does not establish execution.
For each test, define initial state, configuration, inputs, actions, expected outcomes and objective acceptance limits. Use independent measurements where feasible. If the implementation and expected result use the same faulty calculation, both can agree while the requirement is violated.
Risk controls deserve explicit verification of their effectiveness. A displayed warning alone may be insufficient if the requirement also prohibits an operation or preserves a safe state. Check the whole specified response and its dependencies.
The record was saved, but the acknowledgement was lost
A fictional connected injection device sends a completed-injection event to an app. The app forwards it to a service. This telemetry path does not command drug delivery. The device retains the event until acknowledgement. Each component passes its unit tests, but the service stores duplicate records when a lost acknowledgement causes a retry.
For this teaching example, approved requirements specify: one logical record per event identifier; retries preserve that identifier; pending events survive restart; the app distinguishes pending from synchronised data; and synchronisation completes within 60 seconds after a stable connection returns under the defined test load. These are illustrative product decisions, not universal medical-device requirements.
| Test | Expected result | Evidence |
|---|---|---|
| Store event, suppress acknowledgement, then retry | One logical record; retry receives confirmation of the same event | Injected fault trace, stable identifier and database query |
| Restart the app while the event is pending | Event retained; no false synchronised status | Persistent queue state and status observations |
| Restore stable connectivity under specified load | Record reconciled within 60 seconds; status updated | Time-stamped end-to-end trace and independent timer |
| Replay an earlier event after synchronisation | No additional logical record | Record count and identifier audit |
Integration tests expose the retry and deduplication contract. Software-system tests show that the complete workflow meets persistence, timing and status requirements. Device-level testing must separately establish that this communication failure cannot compromise device functions. Passing telemetry tests does not prove a dose was physically delivered.
The fix might introduce idempotent handling of event identifiers. Review identifier uniqueness, retention and collision behaviour, then test the changed service and all affected clients. Do not close the defect after testing only the new server branch.
Keep evidence reproducible and regression justified
- Identify requirements, interfaces, risk controls and test objectives.
- Record software builds, firmware, dependencies, hardware, settings and test-tool versions.
- Retain procedures, expected outcomes, actual results, logs and reviewer conclusions.
- Link failures to anomaly records, corrective changes and repeat testing.
- Explain remaining limitations and unresolved anomalies before acceptance.
Choose regression from the impact assessment: changed behaviour, shared dependencies, affected interfaces and risk controls. Include unaffected functions where a common resource or configuration could cause an unintended effect. A database-library change can affect record integrity without changing application requirements.
Keep a rationale for tests not repeated. Retesting only changed source lines is usually an inadequate analysis of interaction risk. Preserve automated evidence beyond routine CI retention and ensure a reviewer can reconstruct which configuration produced each result.
Submission detail and development evidence are distinct
Section VI.H of FDA’s June 2023 guidance recommends summaries of unit, integration and system testing for Basic documentation, together with system-level protocols and reports. Enhanced documentation adds unit and integration protocols and reports. Present expected and observed results and pass/fail conclusions, with failures and their disposition explained.
Basic and Enhanced are submission documentation levels, not IEC 62304 safety classes. A shorter submission does not justify inadequate engineering records. This lesson addresses testing evidence; MTL-318 — FDA Device Software Functions — Premarket Submissions covers the broader package. FDA guidance is generally nonbinding; applicable regulatory and QMS obligations still apply.
Review a test report that says “all interfaces passed”
The team tested a single event over a stable connection, used a mock service that always acknowledges immediately, and recorded “pass” without identifying the app build. The report concludes that no records can be lost or duplicated and that no further tests are needed because the FDA submission is Basic.
- Identify four unsupported conclusions or evidence gaps.
- Write three fault tests with objective expected outcomes.
- Allocate those tests to integration or software-system testing and explain the environment needed.
- Propose a regression set after changing the retry logic.
Worked answer and discussion
The evidence covers only one normal exchange. The mock conceals lost acknowledgements, deduplication and restart behaviour; the baseline is unknown; and Basic does not remove the need for adequate records.
First, suppress acknowledgement after storage and verify one logical record after retry. Second, restart while pending and verify persistence and accurate status. Third, restore the defined connection and load and measure the 60-second requirement. Exercise the real persistence and deduplication implementation; use controlled fault injection to make each interruption repeatable.
The first test primarily targets an integration contract. The restart and recovery workflow also needs system-level evidence. One controlled run may support both objectives if its traceability, environment and observations justify both claims. Regression should cover ordinary synchronisation, duplicates, out-of-order events, identifier handling, repeated restart and supported client/service combinations affected by the change.
Can the evidence support the release decision?
- System boundaries and interface responsibilities are explicit.
- Tests address software requirements and important interaction risks.
- Fault and recovery outcomes have objective acceptance criteria.
- Target-specific claims have suitable target evidence.
- Configuration, execution and results are traceable.
- Failures, unresolved anomalies and regression decisions are evaluated.
- Submission summaries accurately reflect the underlying records.
Correct units are necessary evidence, but successful interactions and complete software behaviour need their own verification objectives.
References and further learning
- IEC 62304:2006+A1:2015, particularly clauses 5.6 and 5.7; consult your controlled licensed copy. ISO catalogue.
- FDA — Content of Premarket Submissions for Device Software Functions, June 2023, section VI.H.
- MTL-129 — Configuration and Change Management.
- MTL-401 — Connected Injection Device.