Testing of Embedded Software (Deutsch)/(English)


This course examines the activities and methods involved in systematically testing for errors, flaws, faults and failures in embedded and real-time software as it undergoes development.

The class begins with a presentation of the main concepts and principles for systematic testing of embedded systems software. General techniques are touched upon quickly, including equivalence partitioning, boundary value testing, and code coverage criteria. Emphasis is placed on uniquely embedded testing issues such as flaws in interfacing, multitasking and timing, rather than on general data processing issues.

The class continues with an examination of approaches important in embedded software testing, such as input / protocol testing, state machine model testing, testing of functional pair interactions, and simulation of unexpected interactions with the world outside the embedded system. High-level testing approaches are discussed for advanced stages of system development and integration, including security testing, stress testing and independent verification and validation. Disciplined techniques and tools are presented to support these approaches.

Participants are asked to do detailed exercises on many of the techniques presented, so that the concepts and methods taught are reinforced and absorbed into the participant's arsenal of testing skills.

This course is not a general course about software testing, but rather it is highly focused on the testing of embedded, time-constrained, resource-constrained software. Multitasking and real-time operating system ("RTOS") testing issues will be emphasized if relevant for course participants.


  • Day 1 Morning: Embedded Testing Fundamentals
    • Realities of Testing Embedded Software
    • 8 Principles of Testing
    • Static vs. Dynamic Testing
    • Black Box Approaches: Equivalence Partitioning, Boundary Condition Testing
    • White Box Approaches: Stubs and Drivers
    • Code Coverage Levels
    • High Payoff White, Gray, and Black Box Tests
    • Unique Issues in Embedded Testing
    • Exercise: DO-178B "Modified Condition / Decision Coverage"
    • Real-Time Correctness: 'Liveness', Race Conditions
  • Day 1 Afternoon: Embedded Testing Techniques
    • Input Data Testing
    • Exercise: Backus-Naur Form of a Protocol
    • State Testing: State Transition Diagrams and Harel StateCharts
    • Testing Other Kinds of Diagrams
    • Exercise: State Transitions of High-Availability Switchover
    • Pairwise Testing
    • Orthogonal Arrays
    • Exercise: Pairwise Test Design
    • Fault Injection Testing
  • Day 2 Morning: Life Cycle for Embedded Software Testing
    • Top-Down vs. Bottom-Up Integration
    • Embedded Testbeds
    • System & Acceptance Testing
    • Security Testing
    • Latent Data
    • Stress Testing
    • Case Studies: NASA Spacecraft
    • Cause-Effect Graphing
    • Decision Tables
    • Exercise: Cause-Effect Test Design for a Temperature Display
    • Independent Verification and Validation
    • When to Stop Testing ?
  • Day 2 Afternoon: Static and Dynamic Testing Tools
    • Programming Language Disciplines and Static Testing
    • Exercise: C-Language Shenanigans
    • Update on Static Analysis for Embedded Software
    • Metrics Predict Software Errors
    • Exercise: Cyclomatic Complexity
    • Taxonomy of Embedded Testing Tools
    • Invasive vs. Non-Invasive Tools


This course is intended for practicing real-time and embedded systems software testers, designers, developers andquality engineers who have responsibility for testing, planning and implementing the software for embedded and real-time computer systems.

Course participants are expected to have some background in coding for real-time and embedded systems. It would

be helpful, although it is not required, for course participants to have some familiarity with at least one RTOS.

Additional knowledge useful for attendees of this course can be obtained at the co-requisite advanced course

"Debugging Real-Time Software".


This course is intended for practicing real-time and embedded systems software designers, software developers, project managers and quality engineers who have responsibility for planning, implementing and debugging the software for real-time and embedded computer systems.

Begleitendes Kursmaterial

  • course notes

FlexyTrain: Unsere Flexibilität – Ihr Plus

Keinen passenden Termin gefunden? Kein Problem: Bei der Planung unserer Kurstermine bieten wir Ihnen ein Höchstmaß an Flexibilität. Im Klartext: Gemeinsam mit Ihnen finden wir einen geeigneten Termin. Sprechen Sie uns an!