SlideShare a Scribd company logo
1 of 45
Introduction to TDD
2Confidential
First thingfirst
3Confidential
Whythis session?
• Understand the basics around TDD
• Be able building a software starting with tests
• Enjoy the benefits of building code covered
by tests
• Code a bit (and probably) learn something
new from your colleagues
• … so do not run away please! 😉
Confidential 4
NachoCougil
• Senior Software Engineerat Dynatrace
• TDD &cleancode fan
• Founderof the Barcelona Java Users Group &
the Javaand JVMBarcelona Conference (JBCNConf)
• Father, formermountain marathonrunner 😅
@icougil
WhoamI?
Confidential 5
• Raise yourhand at anymoment!
• Also, join ourSlack for any questions, suggestions or ideas you mayhave!
• http://bit.ly/slack-bcnjug
Askquestions atanytime,please!
6Confidential
Warning
Basedon my*personal*experience
7Confidential
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Break
• Kata 3
• Final Recap
Agenda
8Confidential
• A bitof history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Kata 3
• Final Recap
Agenda
Confidential 9
• Kent Beck “rediscovered” TDD whenwriting first
testing framework SUnitin1994.
“Taketheinputtape,manuallytypeintheoutput
tapeyouexpect, then programuntiltheactual
outputtapematches the expected output.”
• TDD became part of Extreme Programmingbook
in1999.
Abit of history
Confidential 10
• Find defectsearlier(whenrunningordesigningyourtests).
Easilydetect regressionerrors
• Yoursoftwarewillbe easiertorefactorbecauseof ✅ green
(safetynet)
• Guidesyoudoing smallsteps
• Guidesyouhow aconsumerwould useyourcomponent
• Testsarelivingdocumentation
• The softwareyouwillwriteitislikely tohavelessbugs(
references:Test-drivendevelopmentasadefect-reduction
practice(IEEE) , Guest Editors'Introduction:TDD--The Artof
FearlessProgramming(computer.org))
• Developmentcostswillbe lower
Why?
Confidential 11
How it is?
• Youlearnedhow to write code time ago,…and now you’dmay
learn a different way of writing software… Likedriving a
“different” bike
• Youhaveto kindof "break"yourrules and think outsideyour
comfort zone
Confidential 12
• A bit of history and why
• Process &rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Kata 3
• Final Recap
Agenda
Confidential 13
Theprocess
Confidential 14
 Focus on building tests first that will help us demonstrate the
behaviour we want.
 Wewill start writing tests and we can’t writeverymuchapart
from a unittest. Tests are first class citizens
 No overengineering, simple code, simple solution: makethe test
pass
• You are not allowed to writeany production code unless it is to
makea failing unit test pass.
• Youare not allowed to write any more of a unit test than is
sufficient to fail.
• Youare not allowed to write any
more production code than is
sufficient topass the one failing
unit test.
Robert C. Martin
(uncleBob)
Therules
Confidential 15
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Break
• Kata 3
• Final Recap
Agenda
Confidential 16
• Before you write production code,
check that your test is failing 🔴!
• Each test has only 1 reason to fail
• Write the assertion first
Goodhabits
Confidential 17
Tests namingconvention
Ending the class name
with Should will “force “
you to start describing
an action for every test
you may create
Describe the
expected
behaviour, not
the internals.
Our tests
should describe
behaviour in
plain english
Confidential 18
• Our tests methods will onlydescribe behavior.
Thereforewewill havea better understanding on
what this class does
• Ourtest will bemore clear
• If some tests fails, we can havea look and see
easily which case is failing
• Wedon’t need to get into details on anyparticular
test if wedon’t need it
Theresult will befocusedonthe business
Confidential 19
Test creation order
1) Name the class
2) Name the method
3) Define what you want to check
4) Trigger the code
5) Do the setup
Confidential 20
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Break
• Kata 3
• Final Recap
Agenda
21Confidential
Questions?
Confidential 22
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo/ Kata1
• Pair programming
• Kata 2
• Break
• Kata 3
• Final Recap
Agenda
Confidential 23
Demo/ Kata 1:FizzBuzz
• https://kata-log.rocks/fizz-buzz-kata • Write a program that prints one linefor each numberfrom 1 to
100
• For multiples of 3 print Fizzinstead of the number
• For the multiples of 5 print Buzzinstead of thenumber
• For numberswhich are multiples of both 3 and 5
print FizzBuzzinstead of thenumber
Confidential 24
Warning –Live coding!
Confidential 25
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Break
• Kata 3
• Final Recap
Agenda
Confidential 26
• An ExtremeProgramming(XP)Practicein which2 developersparticipate inone
developmenteffort at one workstation.
• One,the driver,writescode whilethe other, the navigator orobserver,reviewsthe
code as it istyped in. The 2engineersswitchrolesfrequently.
• While reviewing,the observeralso considers the "strategic"direction of the work,
coming up with ideas for improvementsand likelyfuture problemsto address.This is
intended to freethe driverto focus all of their attention on the"tactical" aspectsof
completingthe currenttask, using theobserveras a safety netand guide.
Pair programming
Confidential 27
• Theprocess is:
1. One person (A) writes a newtest and verifies that it fails 🔴
2. Theother developer (B) implements the code needed to pass the test ✅
3. (optional) -Theother developer (B) decides to refactor part of the code
4. Theother developer (B) writes thenext test and verifies that it fails 🔴
5. Thefirst developer (A) implements thecode needed to pass thetest ✅
Ping-pongpairprogramming
Confidential 28
Thinkaboutcraftmanship
• Be patience, don’t rush.
• Tryto learn as muchas you can from yourcolleague
• No pair pressure -> negotiation for the win!
• Write code youwill be proud of 😃👍
Confidential 29
Be kind and respectful
Confidential 30
Are youready?
Confidential 31
Let’s play!
Confidential 32
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata2
• Kata 3
• Final Recap
Agenda
Confidential 33
Kata2:Leap year
• As a user, I want to know if a yearis a leap yearor not. • All yearsdivisible by400are leap years (so, for example, 2000
was indeed a leap year),
• All yearsdivisible by100but not by 400 are NOTleap years (so,
for example, 1700,1800,and 1900were not leap years, NORwill
2100bea leap year),
• All yearsdivisible by 4but not by100are leap years (e.g., 2008,
2012,2016),
• All yearsnot divisible by4 are NOT leap years (e.g. 2017,2018,
2019).
Confidential 34
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Kata3
• Final Recap
Agenda
Confidential 35
Kata3:String calculator
• Createa simple String calculator with a method signature:
int Add(string numbers)
• Themethod can takeup to two numbers, separated by commas,
and will returntheir sum.
Examples:
• “” or “1” or “1,2” as inputs.
• For an empty string it will return0.
Confidential 36
Kata3:String calculator
• Iteration 1
Allow theAdd method to handle an unknownamountof
numbers.
Confidential 37
Kata3:String calculator
• Iteration 2
Allow theAdd method to handle newlinesbetween numbers
(instead of commas).
Examples:
• Thefollowing input is ok: “1n2,3”(will equal 6)
• Thefollowing input is NOTok: “1,n” (not need to proveit -just
clarifying)
Confidential 38
Kata3:String calculator
• Iteration 3
Support different delimiters:
• To change adelimiter, the beginning ofthe string will contain a
separate line that looks like this: “//[delimiter]n[numbers…]” for
example “//;n1;2” should return three where the default delimiter
is‘;’.
• The firstline is optional. All existing scenarios should still be
supported.
Confidential 39
Kata3:String calculator
• Iteration 4
Calling Add with a negative numberwill throw an
exception “negatives not allowed” -and the negative that was
passed.
• If there are multiple negatives, show all of them in the exception
message.
Confidential 40
Kata3:String calculator
• Iteration 5
Numbersbigger than 1000should be ignored.
• Ifyou want more,you can playmore!See: https://kata-
log.rocks/string-calculator-kata
Example:
• 2+ 1001= 2
Confidential 41
• A bit of history and why
• Process & rules
• Good habits
• Questions?
• Demo / Kata 1
• Pair programming
• Kata 2
• Kata 3
• Final Recap
Agenda
Confidential 42
• Martin Fowler (main concepts around testing)
• https://www.martinfowler.com/bliki/TestDouble.html
• https://martinfowler.com/articles/mocksArentStubs.html
• https://martinfowler.com/articles/practical-test-
pyramid.html
• JamesShore(JS practices)
• https://www.youtube.com/user/jdlshore/videos
• Jason Gorman(Java practices)
• https://www.youtube.com/user/parlezuml/videos
Recommendedcontent
Confidential 43
• What this yourfirst experience using TDD?
• Was it somehow useful?
• Did youlearn something today?
• Did you enjoythe session?
• Would youlike to haveanother (more advanced) session?
FinalRecap
44Confidential
• nacho@cougil.com /nacho@barcelonajug.org
• https://nacho.cougil.com
• @icougil
Questions?
I need yourfeedback, please:
https://bit.ly/intro-to-tdd-feedback
45Confidential

More Related Content

What's hot

Tdd practices
Tdd practicesTdd practices
Tdd practicesaxykim00
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy CodeAdam Culp
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentLim Chanmann
 
Test Driven Development Part 1
Test Driven Development Part 1Test Driven Development Part 1
Test Driven Development Part 1Gamal Shaban
 
Working Effectively With Legacy Code
Working Effectively With Legacy CodeWorking Effectively With Legacy Code
Working Effectively With Legacy CodeExcella
 
Test driven development vs Behavior driven development
Test driven development vs Behavior driven developmentTest driven development vs Behavior driven development
Test driven development vs Behavior driven developmentGallop Solutions
 
Pair programming and introduction to TDD
Pair programming and introduction to TDDPair programming and introduction to TDD
Pair programming and introduction to TDDArati Joshi
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentConsulthinkspa
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summaryJan de Vries
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
 
How to become a testing expert
How to become a testing expertHow to become a testing expert
How to become a testing expertgaoliang641
 
Adopting tdd in the workplace
Adopting tdd in the workplaceAdopting tdd in the workplace
Adopting tdd in the workplaceDonny Wals
 
Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect coupleStephen Tucker
 

What's hot (20)

Tdd practices
Tdd practicesTdd practices
Tdd practices
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
 
TDD = bra design?
TDD = bra design?TDD = bra design?
TDD = bra design?
 
Tdd
TddTdd
Tdd
 
TDD and Getting Paid
TDD and Getting PaidTDD and Getting Paid
TDD and Getting Paid
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Tdd com Java
Tdd com JavaTdd com Java
Tdd com Java
 
Test drive on driven development process
Test drive on driven development processTest drive on driven development process
Test drive on driven development process
 
Test Driven Development Part 1
Test Driven Development Part 1Test Driven Development Part 1
Test Driven Development Part 1
 
Tdd
TddTdd
Tdd
 
Test driven development(tdd)
Test driven development(tdd)Test driven development(tdd)
Test driven development(tdd)
 
Working Effectively With Legacy Code
Working Effectively With Legacy CodeWorking Effectively With Legacy Code
Working Effectively With Legacy Code
 
Test driven development vs Behavior driven development
Test driven development vs Behavior driven developmentTest driven development vs Behavior driven development
Test driven development vs Behavior driven development
 
Pair programming and introduction to TDD
Pair programming and introduction to TDDPair programming and introduction to TDD
Pair programming and introduction to TDD
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summary
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
How to become a testing expert
How to become a testing expertHow to become a testing expert
How to become a testing expert
 
Adopting tdd in the workplace
Adopting tdd in the workplaceAdopting tdd in the workplace
Adopting tdd in the workplace
 
Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect couple
 

Similar to Introduction to TDD

An Introduction To Software Development - Test Driven Development, Part 1
An Introduction To Software Development - Test Driven Development, Part 1An Introduction To Software Development - Test Driven Development, Part 1
An Introduction To Software Development - Test Driven Development, Part 1Blue Elephant Consulting
 
Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)wolframkriesing
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Danny Preussler
 
Kata Your Way to SW Craftsmanship
Kata Your Way to SW CraftsmanshipKata Your Way to SW Craftsmanship
Kata Your Way to SW CraftsmanshipCamille Bell
 
Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)Peter Kofler
 
Outside-in Test Driven Development - the London School of TDD
Outside-in Test Driven Development - the London School of TDDOutside-in Test Driven Development - the London School of TDD
Outside-in Test Driven Development - the London School of TDDPeter Kofler
 
Coderetreat @Sibiu 2012 08 18
Coderetreat @Sibiu 2012 08 18Coderetreat @Sibiu 2012 08 18
Coderetreat @Sibiu 2012 08 18Adi Bolboaca
 
How to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebaseHow to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebaseNelis Boucké
 
An Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven DevelopmentAn Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven DevelopmentBlue Elephant Consulting
 
Coderetreat @Sofia 2012 10 27
Coderetreat @Sofia 2012 10 27Coderetreat @Sofia 2012 10 27
Coderetreat @Sofia 2012 10 27Adi Bolboaca
 
Test Driven Development - a gentle introduction
Test Driven Development - a gentle introductionTest Driven Development - a gentle introduction
Test Driven Development - a gentle introductionSergei Kukharev
 
Unit Testing Best Practices
Unit Testing Best PracticesUnit Testing Best Practices
Unit Testing Best PracticesTomaš Maconko
 
Software testing and quality assurance
Software testing and quality assuranceSoftware testing and quality assurance
Software testing and quality assuranceBenjamin Baumann
 
Bank OCR Coding Dojo
Bank OCR Coding DojoBank OCR Coding Dojo
Bank OCR Coding Dojocfolie
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)Peter Kofler
 
Asufe juniors-training session2
Asufe juniors-training session2Asufe juniors-training session2
Asufe juniors-training session2Omar Ahmed
 
Coderetreat @Turku 2012 10 20
Coderetreat @Turku 2012 10 20 Coderetreat @Turku 2012 10 20
Coderetreat @Turku 2012 10 20 Adi Bolboaca
 
Coderetreat @AgileWorks Bucharest 2012 07 06
Coderetreat @AgileWorks Bucharest 2012 07 06 Coderetreat @AgileWorks Bucharest 2012 07 06
Coderetreat @AgileWorks Bucharest 2012 07 06 Adi Bolboaca
 
Deliberate Practice, New Learning Styles (2015)
Deliberate Practice, New Learning Styles (2015)Deliberate Practice, New Learning Styles (2015)
Deliberate Practice, New Learning Styles (2015)Peter Kofler
 
Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)Peter Kofler
 

Similar to Introduction to TDD (20)

An Introduction To Software Development - Test Driven Development, Part 1
An Introduction To Software Development - Test Driven Development, Part 1An Introduction To Software Development - Test Driven Development, Part 1
An Introduction To Software Development - Test Driven Development, Part 1
 
Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)Day1 - TDD (Lecture SS 2015)
Day1 - TDD (Lecture SS 2015)
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 
Kata Your Way to SW Craftsmanship
Kata Your Way to SW CraftsmanshipKata Your Way to SW Craftsmanship
Kata Your Way to SW Craftsmanship
 
Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)
 
Outside-in Test Driven Development - the London School of TDD
Outside-in Test Driven Development - the London School of TDDOutside-in Test Driven Development - the London School of TDD
Outside-in Test Driven Development - the London School of TDD
 
Coderetreat @Sibiu 2012 08 18
Coderetreat @Sibiu 2012 08 18Coderetreat @Sibiu 2012 08 18
Coderetreat @Sibiu 2012 08 18
 
How to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebaseHow to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebase
 
An Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven DevelopmentAn Introduction To Software Development - Test Driven Development
An Introduction To Software Development - Test Driven Development
 
Coderetreat @Sofia 2012 10 27
Coderetreat @Sofia 2012 10 27Coderetreat @Sofia 2012 10 27
Coderetreat @Sofia 2012 10 27
 
Test Driven Development - a gentle introduction
Test Driven Development - a gentle introductionTest Driven Development - a gentle introduction
Test Driven Development - a gentle introduction
 
Unit Testing Best Practices
Unit Testing Best PracticesUnit Testing Best Practices
Unit Testing Best Practices
 
Software testing and quality assurance
Software testing and quality assuranceSoftware testing and quality assurance
Software testing and quality assurance
 
Bank OCR Coding Dojo
Bank OCR Coding DojoBank OCR Coding Dojo
Bank OCR Coding Dojo
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
Asufe juniors-training session2
Asufe juniors-training session2Asufe juniors-training session2
Asufe juniors-training session2
 
Coderetreat @Turku 2012 10 20
Coderetreat @Turku 2012 10 20 Coderetreat @Turku 2012 10 20
Coderetreat @Turku 2012 10 20
 
Coderetreat @AgileWorks Bucharest 2012 07 06
Coderetreat @AgileWorks Bucharest 2012 07 06 Coderetreat @AgileWorks Bucharest 2012 07 06
Coderetreat @AgileWorks Bucharest 2012 07 06
 
Deliberate Practice, New Learning Styles (2015)
Deliberate Practice, New Learning Styles (2015)Deliberate Practice, New Learning Styles (2015)
Deliberate Practice, New Learning Styles (2015)
 
Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)
 

More from Nacho Cougil

TDD - Seriously, try it! - Opensouthcode
TDD - Seriously, try it! - OpensouthcodeTDD - Seriously, try it! - Opensouthcode
TDD - Seriously, try it! - OpensouthcodeNacho Cougil
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekNacho Cougil
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)Nacho Cougil
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)Nacho Cougil
 
BarcelonaJUG at GDG summit
BarcelonaJUG at GDG summitBarcelonaJUG at GDG summit
BarcelonaJUG at GDG summitNacho Cougil
 
Be clean, my friend (Clean code review by BarcelonaJUG)
Be clean, my friend (Clean code review by BarcelonaJUG)Be clean, my friend (Clean code review by BarcelonaJUG)
Be clean, my friend (Clean code review by BarcelonaJUG)Nacho Cougil
 
Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...
Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...
Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...Nacho Cougil
 

More from Nacho Cougil (8)

TDD - Seriously, try it! - Opensouthcode
TDD - Seriously, try it! - OpensouthcodeTDD - Seriously, try it! - Opensouthcode
TDD - Seriously, try it! - Opensouthcode
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
BarcelonaJUG at GDG summit
BarcelonaJUG at GDG summitBarcelonaJUG at GDG summit
BarcelonaJUG at GDG summit
 
Be clean, my friend (Clean code review by BarcelonaJUG)
Be clean, my friend (Clean code review by BarcelonaJUG)Be clean, my friend (Clean code review by BarcelonaJUG)
Be clean, my friend (Clean code review by BarcelonaJUG)
 
Gencat Notifier
Gencat NotifierGencat Notifier
Gencat Notifier
 
Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...
Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...
Seghismed - Disseny i desenvolupament d'un esquema criptogràfic per gestionar...
 

Recently uploaded

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 

Recently uploaded (20)

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 

Introduction to TDD

  • 3. 3Confidential Whythis session? • Understand the basics around TDD • Be able building a software starting with tests • Enjoy the benefits of building code covered by tests • Code a bit (and probably) learn something new from your colleagues • … so do not run away please! 😉
  • 4. Confidential 4 NachoCougil • Senior Software Engineerat Dynatrace • TDD &cleancode fan • Founderof the Barcelona Java Users Group & the Javaand JVMBarcelona Conference (JBCNConf) • Father, formermountain marathonrunner 😅 @icougil WhoamI?
  • 5. Confidential 5 • Raise yourhand at anymoment! • Also, join ourSlack for any questions, suggestions or ideas you mayhave! • http://bit.ly/slack-bcnjug Askquestions atanytime,please!
  • 7. 7Confidential • A bit of history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Break • Kata 3 • Final Recap Agenda
  • 8. 8Confidential • A bitof history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Kata 3 • Final Recap Agenda
  • 9. Confidential 9 • Kent Beck “rediscovered” TDD whenwriting first testing framework SUnitin1994. “Taketheinputtape,manuallytypeintheoutput tapeyouexpect, then programuntiltheactual outputtapematches the expected output.” • TDD became part of Extreme Programmingbook in1999. Abit of history
  • 10. Confidential 10 • Find defectsearlier(whenrunningordesigningyourtests). Easilydetect regressionerrors • Yoursoftwarewillbe easiertorefactorbecauseof ✅ green (safetynet) • Guidesyoudoing smallsteps • Guidesyouhow aconsumerwould useyourcomponent • Testsarelivingdocumentation • The softwareyouwillwriteitislikely tohavelessbugs( references:Test-drivendevelopmentasadefect-reduction practice(IEEE) , Guest Editors'Introduction:TDD--The Artof FearlessProgramming(computer.org)) • Developmentcostswillbe lower Why?
  • 11. Confidential 11 How it is? • Youlearnedhow to write code time ago,…and now you’dmay learn a different way of writing software… Likedriving a “different” bike • Youhaveto kindof "break"yourrules and think outsideyour comfort zone
  • 12. Confidential 12 • A bit of history and why • Process &rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Kata 3 • Final Recap Agenda
  • 14. Confidential 14  Focus on building tests first that will help us demonstrate the behaviour we want.  Wewill start writing tests and we can’t writeverymuchapart from a unittest. Tests are first class citizens  No overengineering, simple code, simple solution: makethe test pass • You are not allowed to writeany production code unless it is to makea failing unit test pass. • Youare not allowed to write any more of a unit test than is sufficient to fail. • Youare not allowed to write any more production code than is sufficient topass the one failing unit test. Robert C. Martin (uncleBob) Therules
  • 15. Confidential 15 • A bit of history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Break • Kata 3 • Final Recap Agenda
  • 16. Confidential 16 • Before you write production code, check that your test is failing 🔴! • Each test has only 1 reason to fail • Write the assertion first Goodhabits
  • 17. Confidential 17 Tests namingconvention Ending the class name with Should will “force “ you to start describing an action for every test you may create Describe the expected behaviour, not the internals. Our tests should describe behaviour in plain english
  • 18. Confidential 18 • Our tests methods will onlydescribe behavior. Thereforewewill havea better understanding on what this class does • Ourtest will bemore clear • If some tests fails, we can havea look and see easily which case is failing • Wedon’t need to get into details on anyparticular test if wedon’t need it Theresult will befocusedonthe business
  • 19. Confidential 19 Test creation order 1) Name the class 2) Name the method 3) Define what you want to check 4) Trigger the code 5) Do the setup
  • 20. Confidential 20 • A bit of history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Break • Kata 3 • Final Recap Agenda
  • 22. Confidential 22 • A bit of history and why • Process & rules • Good habits • Questions? • Demo/ Kata1 • Pair programming • Kata 2 • Break • Kata 3 • Final Recap Agenda
  • 23. Confidential 23 Demo/ Kata 1:FizzBuzz • https://kata-log.rocks/fizz-buzz-kata • Write a program that prints one linefor each numberfrom 1 to 100 • For multiples of 3 print Fizzinstead of the number • For the multiples of 5 print Buzzinstead of thenumber • For numberswhich are multiples of both 3 and 5 print FizzBuzzinstead of thenumber
  • 25. Confidential 25 • A bit of history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Break • Kata 3 • Final Recap Agenda
  • 26. Confidential 26 • An ExtremeProgramming(XP)Practicein which2 developersparticipate inone developmenteffort at one workstation. • One,the driver,writescode whilethe other, the navigator orobserver,reviewsthe code as it istyped in. The 2engineersswitchrolesfrequently. • While reviewing,the observeralso considers the "strategic"direction of the work, coming up with ideas for improvementsand likelyfuture problemsto address.This is intended to freethe driverto focus all of their attention on the"tactical" aspectsof completingthe currenttask, using theobserveras a safety netand guide. Pair programming
  • 27. Confidential 27 • Theprocess is: 1. One person (A) writes a newtest and verifies that it fails 🔴 2. Theother developer (B) implements the code needed to pass the test ✅ 3. (optional) -Theother developer (B) decides to refactor part of the code 4. Theother developer (B) writes thenext test and verifies that it fails 🔴 5. Thefirst developer (A) implements thecode needed to pass thetest ✅ Ping-pongpairprogramming
  • 28. Confidential 28 Thinkaboutcraftmanship • Be patience, don’t rush. • Tryto learn as muchas you can from yourcolleague • No pair pressure -> negotiation for the win! • Write code youwill be proud of 😃👍
  • 29. Confidential 29 Be kind and respectful
  • 32. Confidential 32 • A bit of history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata2 • Kata 3 • Final Recap Agenda
  • 33. Confidential 33 Kata2:Leap year • As a user, I want to know if a yearis a leap yearor not. • All yearsdivisible by400are leap years (so, for example, 2000 was indeed a leap year), • All yearsdivisible by100but not by 400 are NOTleap years (so, for example, 1700,1800,and 1900were not leap years, NORwill 2100bea leap year), • All yearsdivisible by 4but not by100are leap years (e.g., 2008, 2012,2016), • All yearsnot divisible by4 are NOT leap years (e.g. 2017,2018, 2019).
  • 34. Confidential 34 • A bit of history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Kata3 • Final Recap Agenda
  • 35. Confidential 35 Kata3:String calculator • Createa simple String calculator with a method signature: int Add(string numbers) • Themethod can takeup to two numbers, separated by commas, and will returntheir sum. Examples: • “” or “1” or “1,2” as inputs. • For an empty string it will return0.
  • 36. Confidential 36 Kata3:String calculator • Iteration 1 Allow theAdd method to handle an unknownamountof numbers.
  • 37. Confidential 37 Kata3:String calculator • Iteration 2 Allow theAdd method to handle newlinesbetween numbers (instead of commas). Examples: • Thefollowing input is ok: “1n2,3”(will equal 6) • Thefollowing input is NOTok: “1,n” (not need to proveit -just clarifying)
  • 38. Confidential 38 Kata3:String calculator • Iteration 3 Support different delimiters: • To change adelimiter, the beginning ofthe string will contain a separate line that looks like this: “//[delimiter]n[numbers…]” for example “//;n1;2” should return three where the default delimiter is‘;’. • The firstline is optional. All existing scenarios should still be supported.
  • 39. Confidential 39 Kata3:String calculator • Iteration 4 Calling Add with a negative numberwill throw an exception “negatives not allowed” -and the negative that was passed. • If there are multiple negatives, show all of them in the exception message.
  • 40. Confidential 40 Kata3:String calculator • Iteration 5 Numbersbigger than 1000should be ignored. • Ifyou want more,you can playmore!See: https://kata- log.rocks/string-calculator-kata Example: • 2+ 1001= 2
  • 41. Confidential 41 • A bit of history and why • Process & rules • Good habits • Questions? • Demo / Kata 1 • Pair programming • Kata 2 • Kata 3 • Final Recap Agenda
  • 42. Confidential 42 • Martin Fowler (main concepts around testing) • https://www.martinfowler.com/bliki/TestDouble.html • https://martinfowler.com/articles/mocksArentStubs.html • https://martinfowler.com/articles/practical-test- pyramid.html • JamesShore(JS practices) • https://www.youtube.com/user/jdlshore/videos • Jason Gorman(Java practices) • https://www.youtube.com/user/parlezuml/videos Recommendedcontent
  • 43. Confidential 43 • What this yourfirst experience using TDD? • Was it somehow useful? • Did youlearn something today? • Did you enjoythe session? • Would youlike to haveanother (more advanced) session? FinalRecap
  • 44. 44Confidential • nacho@cougil.com /nacho@barcelonajug.org • https://nacho.cougil.com • @icougil Questions? I need yourfeedback, please: https://bit.ly/intro-to-tdd-feedback

Editor's Notes

  1. Nacho
  2. Nacho
  3. Nacho & Hermann
  4. Nacho
  5. Nacho - Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins - share the link of the presentation in the zoom
  6. Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  7. Hermann - Kent Beck’s book… Developed XP during his work at Chrysler
  8. Hermann -
  9. Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  10. Specify what you want to code to do Create just enough code to satisfy the desired behaviour (just make it work!) Clean your code and test / remove duplication / make it better
  11. Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  12. Nacho -
  13. Nacho - (copy the image in the Slack Channel ?)
  14. Nacho -
  15. Nacho -
  16. Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  17. Nacho -
  18. Nacho - Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  19. Nacho – we have to be here at 35 - 40’ as MAXIMUM <<<<
  20. Nacho -
  21. Nacho - Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  22. Nacho – This back-and-forth between test and code, driver and navigator, can offer better/richer feedback when building a system.
  23. Nacho – (copy the image in the Slack Channel ?)
  24. Nacho -
  25. Nacho -
  26. Nacho -
  27. Nacho -
  28. Hermann – 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  29. Bootstrap templates https://github.com/swkBerlin/kata-bootstraps
  30. Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  31. Around 2hs: Theorical content - 35mins 1st practice (demo) - 15mins 2nd practice (by attendees) – 50’ – 20-25mins 3rd practice (by attendees) – 1:10 – 25-30mins Final recap – 1:40 - 15-20mins
  32. XP explained – 1st time TDD appeared – nice intro to XP practices TDD by example – basic intro, idealised situation… The art of unit testing – easy to read TDD a practical guide – some examples with GUI & real examples
  33. Nacho
  34. Herman & Nacho