Embedded Software Testing and Debugging Masterclass
Duration: 3 or 4 days
Number of participants: recommended optimum 15, maximum 25
The primary goal of this course is to give the participant the skills necessary to systematically identify and correct defects in software for real-time computer systems developed with or without an RTOS. This is a very practical, results-oriented course that will provide knowledge and skills that can be applied immediately.
This Masterclass examines the activities involved in testing and debugging errors, flaws, faults and failures in real-time and embedded systems software.
Testing and debugging are two distinct activities with the shared goal of extracting defects from software and systems. Testing uses systematic, engineering-style methods, while debugging uses investigative, research-style methods.
The class begins with a presentation of the main concepts and principles for systematic testing of embedded systems software. Emphasis is placed on uniquely embedded 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. High-level testing approaches are discussed for advanced stages of system development and integration, including security testing, stress testing and independent verification and validation. Techniques and tools are presented to support these approaches.
The debugging portion of the course starts with a survey of the wide range of categories of bugs from which embedded and real-time software can suffer. It then focuses on a detailed discussion of the “top 5” kinds of bugs that can be “project killers” or “product killers”, including stack overflows, race conditions, deadlocks, timing problems, and re-entrancy conditions. Emphasis is placed on multitasking and timing behaviours. The class continues with an examination of debugging tools that are helpful in real-time software development. ‘Liveness’ issues including deadly embrace, lockout, memory starvation and CPU starvation are discussed in depth. As are the particular sorts of bugs that tend to create problems in multi-tasking software when using real-time operating systems. Emphasis then focuses on the unique sorts of bugs that plague Interrupt Service Routines (ISRs), such as interrupt overflow.
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 and debugging skills.
This course is not a general course about software testing and debugging, but rather it is highly focused on the testing and debugging of embedded, time-constrained, resource-constrained multitasking software that may run under the control of a modern real-time operating system (RTOS).
This course is intended for practicing real-time and embedded systems software designers, software developers, project managers, testers and quality engineers who have responsibility for planning, implementing, testing and debugging the software for real-time and embedded computer systems.
Course participants are expected to have practical knowledge of coding for real-time and embedded systems, plus some familiarity with at least one RTOS. This knowledge can also be gained by attending one of our prerequisite introductory courses “Introduction to Embedded Systems and Software” or “Introduction to Real-Time Operating Systems”. Additional knowledge useful for attendees of this course can be obtained at the co-requisite advanced course “Architectural Design of Real-Time Software”. For on-site presentation, both courses can be combined in a 4-or 5-day format.
The course is based on lectures, discussions, design examples, exercises.