16
Ferdinando Santacroce @JesusWasRasta passi

TDD a piccoli passi

Embed Size (px)

Citation preview

Page 1: TDD a piccoli passi

Ferdinando Santacroce

@JesusWasRasta

TDD a piccoli passi

Page 2: TDD a piccoli passi

All’inizio le mie applicazioni le testavo così...

Page 3: TDD a piccoli passi

Vediamo un po’ come funziona...

Page 4: TDD a piccoli passi

mmm, pensavo fossemeno complicato...

Page 5: TDD a piccoli passi

Ho capito, devo usare i mock!

Page 6: TDD a piccoli passi

Sì, ma che fatica!

Page 7: TDD a piccoli passi

Driven!!

Page 8: TDD a piccoli passi

Cos’è TDD?

Scrivi dei test

Scrivi codice fino a farli passare tutti

Fai un po’ di pulizia

Page 9: TDD a piccoli passi

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

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

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

Proviamoci!

See the code on Github: https://github.com/jesuswasrasta/SmallStepsTDD.git

Page 13: TDD a piccoli passi

• 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

({}–>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://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

@JesusWasRasta

DOmande?

@JesusWasRasta