tdd a piccoli passi
TRANSCRIPT
![Page 1: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/1.jpg)
Ferdinando Santacroce
@JesusWasRasta
TDD a piccoli passi
![Page 2: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/2.jpg)
All’inizio le mie applicazioni le testavo così...
![Page 3: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/3.jpg)
Vediamo un po’ come funziona...
![Page 4: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/4.jpg)
mmm, pensavo fossemeno complicato...
![Page 5: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/5.jpg)
Ho capito, devo usare i mock!
![Page 6: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/6.jpg)
Sì, ma che fatica!
![Page 7: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/7.jpg)
Driven!!
![Page 8: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/8.jpg)
Cos’è TDD?
Scrivi dei test
Scrivi codice fino a farli passare tutti
Fai un po’ di pulizia
![Page 9: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/9.jpg)
The Three Laws of TDD
1. “You aren’t allowed to write any production code until you have written a failing unit test”.
2. “You aren’t allowed to write more of a unit test than is sufficient to fail. And not compiling is failing.”
3. “You aren’t allowed to write more production code than is sufficient to pass the currently failing unit test.”
![Page 10: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/10.jpg)
Ecco cos’è TDD!Write a single test
that fails
Write code to make the test pass
Improve the code base
![Page 11: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/11.jpg)
The Three Laws of TDD1.“You aren’t allowed to write any production code until you have
written a failing unit test”.
2.“You aren’t allowed to write more of a unit test than is sufficient to fail. And not compiling is failing.”
3.“You aren’t allowed to write more production code than is sufficient to pass the currently failing unit test.”
![Page 12: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/12.jpg)
Proviamoci!
See the code on Github: https://github.com/jesuswasrasta/SmallStepsTDD.git
![Page 13: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/13.jpg)
• Nell’algoritmo non v’è espresso il concetto di numero primo• Brainlessness (2 -> n)• I cicli sono una generalizzazione delle if• Passo dei test nuovi senza modificare codice• Se immaginiamo i test come feature, che bello sarebbe aggiungere
funzionalità al nostro software con questa facilità?!• Refactoring: rimuovere duplicazione, rimuovere codice
Cosa si nota?
![Page 14: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/14.jpg)
({}–>nil) no code at all->code that employs nil(nil->constant)(constant->constant+) a simple constant to a more complex constant(constant->scalar) replacing a constant with a variable or an argument(statement->statements) adding more unconditional statements.(unconditional->if) splitting the execution path(scalar->array)(array->container)(statement->recursion)(if->while)(expression->function) replacing an expression with a function or algorithm(variable->assignment) replacing the value of a variable.
Transformations
![Page 15: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/15.jpg)
https://8thlight.com/blog/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html
https://en.wikipedia.org/wiki/Transformation_Priority_Premise
https://www.youtube.com/watch?v=B93QezwTQpI
https://vimeo.com/97516288
https://vimeo.com/60561303
Transformations Priority Premise
Robert C. Martin (Uncle Bob)
![Page 16: TDD a piccoli passi](https://reader035.vdocuments.site/reader035/viewer/2022062904/587c18cc1a28abb5068b4bf3/html5/thumbnails/16.jpg)
@JesusWasRasta
DOmande?
@JesusWasRasta