Slide 1

Slide 1 text

Test-Driven Development su Codice Esistente Andrea Francia TDD Milano @ Mikamai (6 dicembre 2016)

Slide 2

Slide 2 text

Kent Beck. 1999. Extreme Programming Explained: Embrace Change (Senza Test)
 Legacy Code (TDD) Clean Code

Slide 3

Slide 3 text

Il Test-Driven Development

Slide 4

Slide 4 text

Perché TDD funziona?

Slide 5

Slide 5 text

Refactor • Fare refactor(def): Ristrutturare il software per renderlo più facile da capire o modificare senza cambiarne il comportamento osservabile.

Slide 6

Slide 6 text

Design semplice Un pezzo di codice è semplice quando:
 1. Fa passare tutti i test 2. Non contiene duplicazione 3. È chiaro ed esprime l’intento per cui è scritto 4. Non contiene parti superflue

Slide 7

Slide 7 text

Design Incrementale • Prima di implementare una feature si fa refactor per renderne più semplice l’inserimento. • Dopo aver inserito la feature si fa refactor per rimuovere ogni duplicazione.

Slide 8

Slide 8 text

Qual’è il problema con il codice non testato? chiedere al pubblico

Slide 9

Slide 9 text

The conservative approach No automatic tests leads to Manual testing that leads to High risk of introduce bugs that leads to Fear of change so You prefer add more mess instead cleaning up the existing code and the code get worse, the cost/time of adding features increases If it ain't broke don't fix it

Slide 10

Slide 10 text

Come far splendere il codice non testato

Slide 11

Slide 11 text

TDD su codice esistente 0. Metti la classe sotto test 1. scrivi un test che fallisce (red) 3. fallo passare (green) 4. rimuovi la duplicazione (refactor) 5. ripeti Test Driven Development: By Example by Beck, Kent

Slide 12

Slide 12 text

Trip Service Kata • Sandro Mancuso (@sandromancuso) • https://github.com/sandromancuso/trip-service- kata • http://www.slideshare.net/MozaicWorks/sandro- mancuso-testing-and-refactoring-legacy-code

Slide 13

Slide 13 text

Social Network per Viaggiatori • Requisiti: • Devi essere locato per vedere i contenuti del sito. • Puoi vedere i viaggi degli altri utenti che sono tuoi “amici”

Slide 14

Slide 14 text

Dipendenze TripService) +findTripsByUser(User)0:0List0 <>) UserSession) +getInstance()0:0UserSession0 +getLoggedUser()0:0User0 TripDAO) +findTripsByUser(User)0:0List0 http://www.slideshare.net/MozaicWorks/sandro-mancuso-testing-and-refactoring-legacy-code/7

Slide 15

Slide 15 text

Riferimenti per approfondimenti

Slide 16

Slide 16 text

Grazie Andrea Francia @andreafrancia