Testing of Embedded Software
|
|
|
| |
|
|
Course Highlights:
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.
Objective of the course:
The primary goal of this course is to give the participant the skills necessary to systematically plan, develop and
implement test cases for software in embedded and real-time computer systems. This is a very practical,
results-oriented course that will provide knowledge and skills that can be applied immediately.
Who Should Attend:
This course is intended for practicing real-time and embedded systems software testers, designers, developers and
quality engineers who have responsibility for testing, planning and implementing the software for embedded and
real-time computer systems. Those with up to 2 years of experience in embedded software and testing will derive the
most benefit from this course.
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. [This
knowledge can be gained at one of our introductory courses "Introduction to Embedded Systems and Software" or "Introduction to Real-Time Operating Systems".]
Course Outline:
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
INSTRUCTOR: Dr. David Kalinsky
Dr David Kalinsky has more than thirty years of experience in the design and construction of real-time and embedded
computer systems software. He is a popular lecturer and seminar leader on technologies for embedded software
development, appearing before audiences of professional engineers in North America, Europe and Israel. David
regularly presents classes at the Embedded Systems Conferences on topics such as "Architectural Design of Device
Drivers" and "Principles of High Availability Embedded Systems Design".
He has built and managed high-tech training programs on aspects of software engineering for the development of
real-time and embedded systems for a number of Silicon Valley companies. He has also been involved in the design
of many embedded medical and aerospace systems. In addition, he has in the past developed and taught training
courses on a number of major real-time operating systems (RTOSs), including VRTX, pSOS, VxWorks, OSEK / VDX,
Nucleus, OSE and others. With his broad experience, he has trained thousands of embedded systems software
engineers and architectural designers throughout the world.
|
We are a professional organisation providing training services to companies. We offer a comprehensive range of training courses, workshops and seminars covering every aspects relating to engineering.
We provide various training programs that meet the immediate and future needs of engineers. The training is organised through seminar style, hands-on workshop, project-based tutorial or a mixture to bring the maximum learning benefits to the enginners. |
|
We have a quality pool of leading authorities, worldwide experts and fully trained up professionals who are constantly striving to uncover the pitfalls and best practices of modern technology development. |
 |
|