SlideShare a Scribd company logo
Test Driven
Development of
Embedded Systems
Marcin Czenko
Martijn Gelens
Wim van de Goor
Agile Testing Days, 14 october 2009, Berlin
• Test Consultancy at VIIQ.
• Agile Test Team leader at Philips CareServant.
• 10 years of experience in the Testing Field (7 years
V-Model, 3 years Agile).
• Some experience with coding.
• Bachelor degree in Information Technics.
• Married to Jeanne, has a dog (Sasha) and 2 cats.
Martijn Gelens
• Currently, Philips Software Engineering Services,
MiPlaza, Software Designer.
• Ph.D. in Computer Security from University of
Twente, Enschede, The Netherlands.
• M.Sc. in Software Engineering at Warsaw University
of Technology.
• 7 years of experience as an embedded software
developer (SterKom (Poland) and freelancer).
• Modelling Languages: my master thesis + one year
internship at Institute National des
Télécomunications (INT), Evry, Cedex, France.
• Agile, test-invected since one year.
• Married to Beata and also has two cats (Mufasa and
Ursus).
Marcin Czenko, Ph.D.
Wim van de Goor
• Agile Software Team Leader at Philips Software
Engineering Services, Philips MiPlaza.
• 8 years experience with eXtreme Programming.
• Agile mentor and Coach.
• Advised us on Agile Principles.
Contents
• Agile Testing
What Do we want to do?
• Constraints
What can we do?
• Agile Embedded Testing
How do we test?
• Conclusions
What do we want ?
• Prerequisites
• Test Strategy
• Acceptance Criteria
• Continuous Integration
• Testing
Prerequisites
• Testing is integrated in the team's Way of
Working.
• Acceptance Criteria are defined, discussed and
explored beforehand.
• Test Driven Development.
• Continuous Build and Integration.
• Testing is structured (specify, verify, report).
Test Strategy
• Product risks and mitigation.
• Tester-role.
• Definition of Done.
• Quality gates.
• Testing is structured (specify,
verify, report).
Test Strategy (cont.)
• Deliverables from outside (also HW).
• Issue procedure and attendees.
• Reporting (test reports, PMI, ...).
• Emergency scenarios.
Test Strategy (cont.)
The test strategy is build around the iterations and
hardware deliveries.
Acceptance Criteria
• Defined upfront
• Based upon Quality Attributes; functionality,
usability, efficiency, maintainability, reliability,
portability, etc...
• Definition of Done:
Tested and accepted, Code reviewed, documents
written, yellow sticker on the note, ...
• Quality Gate:
Acceptance tests passed, smoke test passed, ...
Continuous Integration
Automate your:
• Build procedure.
• Release package creation.
• Deployment to simulator.
• Deployment to Board Support Package.
Continuous Integration
Continuous Integration
Test Driven Development
• Means: “Write unit tests
before code”.
• Integrate with your
Continuous Integration
environment.
• Automate the Acceptance
Tests.
This is your framework
Constraints
Light to Heavy
Light Heavy
Light
• No cross-compilation required.
• Usually mainstream OS (Windows/Linux).
• Wide range of testing/mocking
frameworks available.
• Standard hardware - no or very limited
hardware level programming required.
• No dependence on a particular vendor
(supplier).
Heavy
• Small memory (no OS), limited performance,
limited debugging possibilities.
• Limited cross–compilers: often only C, and
Embedded (Extended) C++ available.
• Vendor specific.
• Difficult to find a testing/mocking framework.
• Custom hardware (ramp-up).
Hardware design
challenges
Using Evaluation Boards
Getting There (1)
Getting There (2)
Getting There (3)
Getting
There (4)
Getting There (5)
Getting There (6)
Getting There (7)
Development Board
• Selecting the right board can be
challenging (expensive ?).
• Chip selection driven by the availability
of the right board.
• The board selection driven by the
availability of the BSP and OS.
Is there a more lean
solution ?
Are we lean ?
Queue 1
Queue 2
Queue 3
The effect on Agile
Principles
• Longer ramp-up time.
• Resistance to modify hardware
(introduces up-front design).
• Limited response to changes.
• Higher risk.
How to proceed ?
• Often we cannot remove queues &
batches in HW development (are we
going to be able doing so in any
predictable future ?).
• Reducing the queue size is also often not
an option.
• Is there a lean solution ?
Getting There (7)
Fix in between...
Fix in between...
How do we test ?
Our experiences
What do we need
• Testing Strategy.
• Hardware to work with.
• Tool chain (compiler).
• Testing Framework.
• Mocking Framework.
Compiler
ISO C++
ANSI C
Testing Framework
Keep it simple !
Do-It-Yourself !
Testing Framework (C)
• Many frameworks are simple ports of
the frameworks for PC-based
development.
• Increased stack consumption.
• Dynamic memory allocation.
CMock
• Easy to understand. Easy to customise.
Lightweight.
• Comes with Supporting Ruby-based
Mocking Framework.
• Ready For “Heavy Embedded” - tests
executed in batches.
Testing Frameworks (C++)
• Run-Time Type
Information
(RTTI).
• Exceptions.
• ISO C++ compiler
needed.
• Gnu or Microsoft
are preferred.
Testing Frameworks (C++)
• We could not find a framework that
compiles on GreenHills and WindRiver
C++ compilers (forget IAR Extended
Embedded C++).
• It was cheaper and more effective to
come with your own simple testing
frameworks.
yaffut
• Our choice for unit testing in C++.
• Just one header file.
• Not meant for embedded: needs RTTI,
and C++ exceptions.
• Easy to understand and customise. We
made an RTTI and Exception-free
version.
Mocking
• We did not succeed in using existing
frameworks. Our best candidate
GoogleMock does not even compile and
it is quite complex.
• Does it mean that no one is doing TDD
on embedded ? Probably not.
Mocking - way to go
• Think of your own framework.
• We needed three “evenings” to create
our own mocking framework.
Educate your customer
Educate your customer
Conclusions
• Agile in Heavy Embedded is a challenge: we cannot change it, but
we can understand it and try to reduce its impact on agile software
development.
• The tester should be experienced in working with hardware,
perhaps even more than a developer.
• There is no one way: what you can do depends on the constraints
you have (e.g. light to heavy).
• Hardware development is far from being lean - and there is not
that much we can change.
• Development and support tools are far behind the needs of the
agile teams.
• Let your agile testing framework grow with your code.
Conclusions
• Agile in Heavy Embedded is a challenge: we cannot change it, but
we can understand it and try to reduce its impact on agile software
development.
• The tester should be experienced in working with hardware,
perhaps even more than a developer.
• There is no one way: what you can do depends on the constraints
you have (e.g. light to heavy).
• Hardware development is far from being lean - and there is not
that much we can change.
• Development and support tools are far behind the needs of the
agile teams.
• Let your agile testing framework grow with your code.
Be agile.
Questions

More Related Content

PPTX
Test Driven Development & CI/CD
PPTX
A Brief Introduction to Test-Driven Development
PDF
Improving Test Team Throughput via Architecture by Dustin Williams
PPTX
Test Driven Development - a Practitioner’s Perspective
PPTX
Type mock isolator
PDF
Test Driven Development
PPTX
Test-Driven Development
PPT
TDD In Practice
Test Driven Development & CI/CD
A Brief Introduction to Test-Driven Development
Improving Test Team Throughput via Architecture by Dustin Williams
Test Driven Development - a Practitioner’s Perspective
Type mock isolator
Test Driven Development
Test-Driven Development
TDD In Practice

What's hot (19)

PPTX
Agile and ATDD the perfect couple
PDF
TDD vs. ATDD - What, Why, Which, When & Where
PPTX
Journey of atdd
PPTX
ATDD in practice
PPTX
Test driven development
KEY
ATDD in Practice
PPT
Simple testable code
PPTX
Acceptance Test Driven Development
PPT
Scrum and Test-driven development
PDF
The View - 30 proven Lotuscript tips
KEY
Introduction to Acceptance Test Driven Development
PDF
Agile Test Driven Development
PDF
Agile Programming Systems # TDD intro
PDF
Test driven development
PPT
Test Driven Development
PPTX
Test Driven Development
PPTX
Unit testing
PDF
The WHY behind TDD/BDD and the HOW with RSpec
PDF
Building a custom cms with django
Agile and ATDD the perfect couple
TDD vs. ATDD - What, Why, Which, When & Where
Journey of atdd
ATDD in practice
Test driven development
ATDD in Practice
Simple testable code
Acceptance Test Driven Development
Scrum and Test-driven development
The View - 30 proven Lotuscript tips
Introduction to Acceptance Test Driven Development
Agile Test Driven Development
Agile Programming Systems # TDD intro
Test driven development
Test Driven Development
Test Driven Development
Unit testing
The WHY behind TDD/BDD and the HOW with RSpec
Building a custom cms with django
Ad

Viewers also liked (8)

PPTX
An agile introduction to DevOps
PPTX
From crappy and classy
PPT
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
PDF
Unit testing on embedded target with C++Test
PDF
CppUnit using introduction
PDF
Agile And Lean Practices - The Mobile Academy
PPTX
A Horror Story
PPTX
Cpp unit
An agile introduction to DevOps
From crappy and classy
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Unit testing on embedded target with C++Test
CppUnit using introduction
Agile And Lean Practices - The Mobile Academy
A Horror Story
Cpp unit
Ad

Similar to Agile Testing Days (20)

PPTX
Automatic Test 2019-07-25
PDF
Staroletov testing TDD BDD MBT
ZIP
Becoming Indie
PDF
Enter the mind of an Agile Developer
PPT
Automated Regression Testing for Embedded Systems in Action
PDF
Agile Java Testing With Open Source Frameworks
PDF
Agile Acceptance testing with Fitnesse
PPTX
Qt test framework
 
PDF
Building Quality In in SAFe – The Testing Organization’s Perspective
PPTX
Test Driven Development
PDF
SoftwareAssemblyLineOverview
PPTX
Unit test
PDF
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar
PDF
What CS Class Didn't Teach About Testing
PDF
Testing in Agile Development
PDF
CBDW2014 - Behavior Driven Development with TestBox
PDF
Insights and Lessons Learned Verifying the QoS Engine of a Network Processor
PDF
Boston 2009 q1_kappler_chris
PDF
Test and Behaviour Driven Development (TDD/BDD)
PPTX
Bootstrapping Quality
Automatic Test 2019-07-25
Staroletov testing TDD BDD MBT
Becoming Indie
Enter the mind of an Agile Developer
Automated Regression Testing for Embedded Systems in Action
Agile Java Testing With Open Source Frameworks
Agile Acceptance testing with Fitnesse
Qt test framework
 
Building Quality In in SAFe – The Testing Organization’s Perspective
Test Driven Development
SoftwareAssemblyLineOverview
Unit test
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar
What CS Class Didn't Teach About Testing
Testing in Agile Development
CBDW2014 - Behavior Driven Development with TestBox
Insights and Lessons Learned Verifying the QoS Engine of a Network Processor
Boston 2009 q1_kappler_chris
Test and Behaviour Driven Development (TDD/BDD)
Bootstrapping Quality

Recently uploaded (20)

PDF
Approach and Philosophy of On baking technology
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
MYSQL Presentation for SQL database connectivity
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Encapsulation theory and applications.pdf
PPTX
Spectroscopy.pptx food analysis technology
PDF
KodekX | Application Modernization Development
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Electronic commerce courselecture one. Pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
Approach and Philosophy of On baking technology
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Dropbox Q2 2025 Financial Results & Investor Presentation
MYSQL Presentation for SQL database connectivity
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Encapsulation theory and applications.pdf
Spectroscopy.pptx food analysis technology
KodekX | Application Modernization Development
Unlocking AI with Model Context Protocol (MCP)
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Electronic commerce courselecture one. Pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Big Data Technologies - Introduction.pptx
Understanding_Digital_Forensics_Presentation.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectral efficient network and resource selection model in 5G networks
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Programs and apps: productivity, graphics, security and other tools

Agile Testing Days

  • 1. Test Driven Development of Embedded Systems Marcin Czenko Martijn Gelens Wim van de Goor Agile Testing Days, 14 october 2009, Berlin
  • 2. • Test Consultancy at VIIQ. • Agile Test Team leader at Philips CareServant. • 10 years of experience in the Testing Field (7 years V-Model, 3 years Agile). • Some experience with coding. • Bachelor degree in Information Technics. • Married to Jeanne, has a dog (Sasha) and 2 cats. Martijn Gelens
  • 3. • Currently, Philips Software Engineering Services, MiPlaza, Software Designer. • Ph.D. in Computer Security from University of Twente, Enschede, The Netherlands. • M.Sc. in Software Engineering at Warsaw University of Technology. • 7 years of experience as an embedded software developer (SterKom (Poland) and freelancer). • Modelling Languages: my master thesis + one year internship at Institute National des Télécomunications (INT), Evry, Cedex, France. • Agile, test-invected since one year. • Married to Beata and also has two cats (Mufasa and Ursus). Marcin Czenko, Ph.D.
  • 4. Wim van de Goor • Agile Software Team Leader at Philips Software Engineering Services, Philips MiPlaza. • 8 years experience with eXtreme Programming. • Agile mentor and Coach. • Advised us on Agile Principles.
  • 5. Contents • Agile Testing What Do we want to do? • Constraints What can we do? • Agile Embedded Testing How do we test? • Conclusions
  • 6. What do we want ? • Prerequisites • Test Strategy • Acceptance Criteria • Continuous Integration • Testing
  • 7. Prerequisites • Testing is integrated in the team's Way of Working. • Acceptance Criteria are defined, discussed and explored beforehand. • Test Driven Development. • Continuous Build and Integration. • Testing is structured (specify, verify, report).
  • 8. Test Strategy • Product risks and mitigation. • Tester-role. • Definition of Done. • Quality gates. • Testing is structured (specify, verify, report).
  • 9. Test Strategy (cont.) • Deliverables from outside (also HW). • Issue procedure and attendees. • Reporting (test reports, PMI, ...). • Emergency scenarios.
  • 10. Test Strategy (cont.) The test strategy is build around the iterations and hardware deliveries.
  • 11. Acceptance Criteria • Defined upfront • Based upon Quality Attributes; functionality, usability, efficiency, maintainability, reliability, portability, etc... • Definition of Done: Tested and accepted, Code reviewed, documents written, yellow sticker on the note, ... • Quality Gate: Acceptance tests passed, smoke test passed, ...
  • 12. Continuous Integration Automate your: • Build procedure. • Release package creation. • Deployment to simulator. • Deployment to Board Support Package.
  • 15. Test Driven Development • Means: “Write unit tests before code”. • Integrate with your Continuous Integration environment. • Automate the Acceptance Tests.
  • 16. This is your framework
  • 19. Light • No cross-compilation required. • Usually mainstream OS (Windows/Linux). • Wide range of testing/mocking frameworks available. • Standard hardware - no or very limited hardware level programming required. • No dependence on a particular vendor (supplier).
  • 20. Heavy • Small memory (no OS), limited performance, limited debugging possibilities. • Limited cross–compilers: often only C, and Embedded (Extended) C++ available. • Vendor specific. • Difficult to find a testing/mocking framework. • Custom hardware (ramp-up).
  • 30. Development Board • Selecting the right board can be challenging (expensive ?). • Chip selection driven by the availability of the right board. • The board selection driven by the availability of the BSP and OS.
  • 31. Is there a more lean solution ?
  • 36. The effect on Agile Principles • Longer ramp-up time. • Resistance to modify hardware (introduces up-front design). • Limited response to changes. • Higher risk.
  • 37. How to proceed ? • Often we cannot remove queues & batches in HW development (are we going to be able doing so in any predictable future ?). • Reducing the queue size is also often not an option. • Is there a lean solution ?
  • 41. How do we test ? Our experiences
  • 42. What do we need • Testing Strategy. • Hardware to work with. • Tool chain (compiler). • Testing Framework. • Mocking Framework.
  • 44. Testing Framework Keep it simple ! Do-It-Yourself !
  • 45. Testing Framework (C) • Many frameworks are simple ports of the frameworks for PC-based development. • Increased stack consumption. • Dynamic memory allocation.
  • 46. CMock • Easy to understand. Easy to customise. Lightweight. • Comes with Supporting Ruby-based Mocking Framework. • Ready For “Heavy Embedded” - tests executed in batches.
  • 47. Testing Frameworks (C++) • Run-Time Type Information (RTTI). • Exceptions. • ISO C++ compiler needed. • Gnu or Microsoft are preferred.
  • 48. Testing Frameworks (C++) • We could not find a framework that compiles on GreenHills and WindRiver C++ compilers (forget IAR Extended Embedded C++). • It was cheaper and more effective to come with your own simple testing frameworks.
  • 49. yaffut • Our choice for unit testing in C++. • Just one header file. • Not meant for embedded: needs RTTI, and C++ exceptions. • Easy to understand and customise. We made an RTTI and Exception-free version.
  • 50. Mocking • We did not succeed in using existing frameworks. Our best candidate GoogleMock does not even compile and it is quite complex. • Does it mean that no one is doing TDD on embedded ? Probably not.
  • 51. Mocking - way to go • Think of your own framework. • We needed three “evenings” to create our own mocking framework.
  • 54. Conclusions • Agile in Heavy Embedded is a challenge: we cannot change it, but we can understand it and try to reduce its impact on agile software development. • The tester should be experienced in working with hardware, perhaps even more than a developer. • There is no one way: what you can do depends on the constraints you have (e.g. light to heavy). • Hardware development is far from being lean - and there is not that much we can change. • Development and support tools are far behind the needs of the agile teams. • Let your agile testing framework grow with your code.
  • 55. Conclusions • Agile in Heavy Embedded is a challenge: we cannot change it, but we can understand it and try to reduce its impact on agile software development. • The tester should be experienced in working with hardware, perhaps even more than a developer. • There is no one way: what you can do depends on the constraints you have (e.g. light to heavy). • Hardware development is far from being lean - and there is not that much we can change. • Development and support tools are far behind the needs of the agile teams. • Let your agile testing framework grow with your code. Be agile.