Book review --Testing Embedded Software

from The Rational Edge: This favorable review examines a book that provides comprehensive information about embedded software testing techniques, tools, process, and people, and that gives readers the practical details they need to accomplish successful testing.


Gary Pollice, Professor of Practice, Worcester Polytechnic Institute

Author photoGary Pollice is a professor of practice at Worcester Polytechnic Institute, in Worcester, Massachusetts. He teaches software engineering, design, testing, and other computer science courses, and also directs student projects. Before entering the academic world, he spent more than thirty-five years developing various kinds of software, from business applications to compilers and tools. His last industry job was with IBM Rational Software, where he was known as "the RUP Curmudgeon" and was also a member of the original Rational Suite team. He is the primary author of Software Development for Small Teams: A RUP-Centric Approach, published by Addison-Wesley in 2004. He holds a B.A. in mathematics and an M.S. in computer science.

30 January 2004

by Bart Broekman and Edwin Notenboom
Addison-Wesley, 2002
ISBN: 0-321-15986-1
Cover price: US$49.99
368 pages

I do not test embedded software. But, if I were given such a task, I would feel confident about succeeding if I could supplement my basic knowledge of software testing with this book. Broekman and Notenboom have included everything I might want from any software engineering text: comprehensive information about techniques, tools, process, and people. They have put together a clear, well-planned exposition of the discipline that goes beyond a survey. Their book gives readers the details they need to help them succeed with testing embedded software systems.

There are five primary sections and five appendices in the book. The sections introduce readers to the material and describe in detail how to conduct testing. The appendices provide examples that reflect key ideas from the other sections. In the following paragraphs, I will provide a brief synopsis of each section.

The first section is an Introduction that sets the context for the remainder of the book. In a four-page first chapter the authors clearly establish the aims of testing, define embedded systems, and identify their approach to testing embedded systems. They follow this with a description of TEmb, a method for assembling a test approach suitable for specific embedded systems, using generic elements. The approach is based on the four cornerstones of structural testing: Lifecycle, Techniques, Infrastructure, and Organization. These cornerstones are the subjects of subsequent sections.

Most testers are familiar with the V-model of development that promotes validation and verification at several levels of product development, from requirements though build and integration. The authors begin the Lifecycle section by exploring variations of this model that conform to an appropriate lifecycle for testing embedded systems. They then describe in detail the different types of testing required for embedded systems, focusing on three areas: master test planning, testing by developers, and testing by independent test teams.

The largest section in the book is the Techniques section, with six chapters offering a menu of best practices for the embedded systems tester. I especially liked the chapters on risk-based test strategy and safety analysis; many of the techniques in these chapters, such as the strategy matrix, are appropriate for any type of testing effort. Safety analysis is a key factor in testing embedded systems, but most texts on testing either ignore this concern or provide just a cursory overview. The authors also include a discussion of evolutionary (genetic) algorithms applied to testing, something I also have not seen in any other text.

The Infrastructure section offers advice on selecting the right tools and creating the proper structured test environment for embedded systems. It includes information on the types of environments required at different stages in the lifecycle. One chapter provides an overview of different types of tools and their use. The section concludes with a chapter on dealing with digital and analog signals.

As with any type of software development effort, people are the most important factor in testing embedded systems effectively, and the final section on Organization addresses people and organizational issues. The first chapter in this section carefully details the roles involved in embedded software testing and the skills required to fill them successfully. The next chapter takes on human issues, including ways for testers to improve their careers and professional status. Although the chapter is testing-specific, many of these ideas are applicable to other technical disciplines.

The examples in the appendices are not exhaustive, but offer information that can be particularly useful to embedded system testers. The first appendix describes an appropriate risk classification strategy for testing embedded systems. If you have not done any embedded systems testing, this is a must-read to get you started on the right track. The appendix I found most interesting describes the blueprint for an automated test suite. I have worked with automated testing tools for several years, implementing some simple test harnesses along the way. The authors' description of constructing an automated suite was right in line with my approach, and I learned some new things to add to my test suites.

If you are a quality professional who works on embedded software systems -- or who will work on such systems in the future -- I highly recommend this book. Any member of a development team working on embedded software systems will take away something useful from it. I hope that the next time I fly, the software controlling the airplane's systems has been tested by someone who took the advice in this book to heart.


developerWorks: Sign in

Required fields are indicated with an asterisk (*).

Need an IBM ID?
Forgot your IBM ID?

Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.


All information submitted is secure.

Dig deeper into Rational software on developerWorks

ArticleTitle=Book review --Testing Embedded Software