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

What's hot

Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect coupleStephen Tucker
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & Where
Daniel Davis
 
Journey of atdd
Journey of atddJourney of atdd
Journey of atdd
Devesh Maheshwari
 
Test driven development
Test driven developmentTest driven development
Test driven development
Nascenia IT
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in Practice
Steven Mak
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
Mike Douglas
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven developmenttoteb5
 
The View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsThe View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsBill Buchan
 
Introduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentIntroduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven Development
Steven Mak
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven Development
Viraf Karai
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD intro
Vitaliy Kulikov
 
Test driven development
Test driven developmentTest driven development
Test driven developmentShalabh Saxena
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Sachithra Gayan
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Orbit One - We create coherence
 
Unit testing
Unit testingUnit testing
Unit testing
Adam Birr
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpec
Ben Mabey
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
Yann Malet
 

What's hot (19)

Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect couple
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & Where
 
Journey of atdd
Journey of atddJourney of atdd
Journey of atdd
 
ATDD in practice
ATDD in practiceATDD in practice
ATDD in practice
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in Practice
 
Simple testable code
Simple testable codeSimple testable code
Simple testable code
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
 
The View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tipsThe View - 30 proven Lotuscript tips
The View - 30 proven Lotuscript tips
 
Introduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentIntroduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven Development
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven Development
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD intro
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Unit testing
Unit testingUnit testing
Unit testing
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpec
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
 

Viewers also liked

An agile introduction to DevOps
An agile introduction to DevOpsAn agile introduction to DevOps
An agile introduction to DevOps
Gil Zilberfeld
 
From crappy and classy
From crappy and classyFrom crappy and classy
From crappy and classy
Gil Zilberfeld
 
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012Agilbee (Patrice Petit)
 
Unit testing on embedded target with C++Test
Unit testing on embedded  target with C++TestUnit testing on embedded  target with C++Test
Unit testing on embedded target with C++Test
Engineering Software Lab
 
CppUnit using introduction
CppUnit using introductionCppUnit using introduction
CppUnit using introduction
Iurii Kyian
 
Agile And Lean Practices - The Mobile Academy
Agile And Lean Practices - The Mobile AcademyAgile And Lean Practices - The Mobile Academy
Agile And Lean Practices - The Mobile Academy
strongandagile.co.uk
 
A Horror Story
A Horror StoryA Horror Story
A Horror Story
Gil Zilberfeld
 
Cpp unit
Cpp unit Cpp unit
Cpp unit
mudabbirwarsi
 

Viewers also liked (8)

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

Similar to Agile Testing Days

Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated Testing
Lars Thorup
 
Introduction to-automated-testing
Introduction to-automated-testingIntroduction to-automated-testing
Introduction to-automated-testingBestBrains
 
Topic production code
Topic production codeTopic production code
Topic production code
Kavi Kumar
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
BSGAfrica
 
How to become a testing expert
How to become a testing expertHow to become a testing expert
How to become a testing expertgaoliang641
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
Martijn van der Kamp
 
Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...
Achim D. Brucker
 
Can we induce change with what we measure?
Can we induce change with what we measure?Can we induce change with what we measure?
Can we induce change with what we measure?
Michaela Greiler
 
ProdSec: A Technical Approach
ProdSec: A Technical ApproachProdSec: A Technical Approach
ProdSec: A Technical Approach
Jeremy Brown
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedLB Denker
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
Ambientia
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptx
Amna Ch
 
Code Quality - Security
Code Quality - SecurityCode Quality - Security
Code Quality - Security
sedukull
 
Continuous testing for continuous delivery
Continuous testing for continuous deliveryContinuous testing for continuous delivery
Continuous testing for continuous delivery
David Hart
 
Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.
Malinda Kapuruge
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0
Ganesh Kondal
 
Quality metrics and angular js applications
Quality metrics and angular js applicationsQuality metrics and angular js applications
Quality metrics and angular js applicationsnadeembtech
 
The QA/Testing Process
The QA/Testing ProcessThe QA/Testing Process
The QA/Testing Process
Synerzip
 
How to test a Mainframe Application
How to test a Mainframe ApplicationHow to test a Mainframe Application
How to test a Mainframe Application
Michael Erichsen
 
Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016
Vladislav Fedorischev
 

Similar to Agile Testing Days (20)

Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated Testing
 
Introduction to-automated-testing
Introduction to-automated-testingIntroduction to-automated-testing
Introduction to-automated-testing
 
Topic production code
Topic production codeTopic production code
Topic production code
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
 
How to become a testing expert
How to become a testing expertHow to become a testing expert
How to become a testing expert
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...
 
Can we induce change with what we measure?
Can we induce change with what we measure?Can we induce change with what we measure?
Can we induce change with what we measure?
 
ProdSec: A Technical Approach
ProdSec: A Technical ApproachProdSec: A Technical Approach
ProdSec: A Technical Approach
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptx
 
Code Quality - Security
Code Quality - SecurityCode Quality - Security
Code Quality - Security
 
Continuous testing for continuous delivery
Continuous testing for continuous deliveryContinuous testing for continuous delivery
Continuous testing for continuous delivery
 
Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.Understanding TDD - theory, practice, techniques and tips.
Understanding TDD - theory, practice, techniques and tips.
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0
 
Quality metrics and angular js applications
Quality metrics and angular js applicationsQuality metrics and angular js applications
Quality metrics and angular js applications
 
The QA/Testing Process
The QA/Testing ProcessThe QA/Testing Process
The QA/Testing Process
 
How to test a Mainframe Application
How to test a Mainframe ApplicationHow to test a Mainframe Application
How to test a Mainframe Application
 
Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016Functional Tests. PHP Unconf 2016
Functional Tests. PHP Unconf 2016
 

Recently uploaded

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 

Recently uploaded (20)

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 

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.