CSR

Unit Testing for Critical Software: Methodology, Standards, and Tools

During the development of critical software, unit testing is a key step in detecting defects throughout the development lifecycle. It ensures software quality, the absence of dead code, and compliance with both regulatory requirements and software design specifications.

At SERMA Safety and Security, unit testing is based on multi-standard and multi-domain expertise. We use qualified in-house tools and a sovereign approach, enabling us to carry out activities compatible with the most demanding sectors, such as defense.

Unit Testing: Overview and Regulatory Requirements

Unit testing consists of testing software modules/components independently from one another. It has two main objectives:

  • Functional coverage objective: ensuring that the detailed design of software modules has been correctly implemented during the coding phase.
  • Structural coverage objective, depending on the software integrity level (criticality): ensuring that tests are sufficiently thorough and rigorous for the required integrity level (e.g., statement coverage, branch coverage, Modified Condition/Decision Coverage – MC/DC), as well as the absence of dead code (code that cannot be executed).

To achieve this, the inputs of each module/component are simulated with precise values (based on the detailed design), and the obtained results are compared against the expected results.

Unit testing is an essential step in the development process of critical software, enabling:

  • Reduction of failure risks
  • Improvement of overall software reliability
  • Compliance with functional safety standards

At SERMA Safety and Security, we perform multi-sector unit testing:

  • IEC 61508-3 – Functional safety of electrical/electronic/programmable electronic safety-related systems – Part 3: Software requirements
  • EN 50716 (or EN 50128) – Railway applications – Software development requirements
  • IEC 62304 – Medical device software – Software lifecycle process requirements

We adapt to the specific requirements of each standard and to the integrity level of the software under test.

A Unit Testing Methodology for Critical Software

Software unit testing activities rely on a proven methodology structured into several steps:

  • Definition of a strategy based on requirements and regulatory constraints
  • Preparation of a unit test plan
  • Writing of test cases using a clear template
  • Execution of test cases and collection of results
  • Analysis of results
  • Preparation of unit test reports

Qualified Tools

Functional safety standards (IEC 61508-3, EN 50716, etc.) impose requirements on the tools used during the development of critical software. Tools used for unit testing are classified as T2 tools (they cannot introduce errors into the final executable code but may prevent their detection). As such, they require associated documentation and qualification of their level of confidence.

At SERMA Safety and Security, we use a certified commercial tool for executing unit test cases and generating results. In addition, we have developed an instrumentation tool: ARTUR (Assistant for Unit Test Execution), which interfaces with the execution tool. The use of ARTUR significantly reduces both costs and timelines for unit testing campaigns.

ARTUR automates test template generation, execution of unit tests via the certified tool, results collection, and completion of unit test reports.

The purpose of ARTUR is to optimize repetitive steps in a unit testing campaign in order to improve reliability and productivity. It was developed following the V-model lifecycle, with all the documentation required for T2 qualification in accordance with applicable standards.

A Sovereign, End-to-End Expertise

Beyond technical skills, we claim sovereign expertise in unit testing and functional safety. Our methods, tools, and know-how are fully mastered in-house, within our facilities in France.

This technological sovereignty is a major challenge for sensitive sectors such as transportation, energy, defense, and critical infrastructure. It ensures solution sustainability, data control, and strategic independence for projects.

Conclusion

Our multi-sector and multi-standard expertise, combined with proven and structured methodologies, qualified tools, and a sovereign approach, enables us to support our clients not only in the unit testing phase but across all stages of the development lifecycle.

Unit testing is not merely a verification step—it is a fundamental pillar of quality, safety, and trust in the development of critical software.

LAST PUBLICATIONS

Unit Testing for Critical Software: Methodology, Standards, and Tools

During the development of critical software, unit testing is a ...

Cyber Resilience Act: How to Finance and Successfully Achieve Compliance for Your Digital Products Before 2027

Cybersecurity for digital products is becoming a regulatory priority in ...

Behind the scenes of a Hardware penetration test: The audit report and results communication

Blog post 2 #5 Chaque campagne d’audit matériel se conclut ...