1 of 26

TDD Workshop

Luca Piccinelli

26/09/2020

2 of 26

Chi Sono

Luca Piccinelli

  • programmatore dal 2004
  • in Studiofarma/CGM dal 2010

3 of 26

Perché siamo qui?

  • Introduzione al Tdd
  • Consapevolezza (il Tdd e’ difficile!)
  • Quali sono i reali benefici?
  • Con che approccio abbasso il costo?
  • Cosa testo? (kick-off)

4 of 26

Cos’é Tdd?

5 of 26

Cos’é Tdd? (Test Driven Development)

public class MathTests

{

[Test]

public void SumTest()

{

Math math = new Math();

Assert.AreEqual(2, math.Sum(1,1));

}

}

public class Math

{

public int Sum(int x, int y)

{

return x + y;

}

}

6 of 26

Cos’é Tdd?

7 of 26

Cos’é Tdd?

  1. select the simplest feature
  2. Write a test that don’t compile
  3. Make it compile
  4. Watch it fail
  5. Make it run
  6. Refactor
  7. introduce a new change (by writing a new test)

8 of 26

A cosa serve?

9 of 26

A cosa serve?

Coverage al 100%?

NO!!!

10 of 26

A cosa serve?

Miglior design?

meglio… ma no

11 of 26

A cosa serve?

Automatizzare?

Si

12 of 26

Domande?

13 of 26

Qualche nozione

14 of 26

Qualche nozione

Tipologie di test

  • Unit
  • Integration
  • Acceptance/functional
  • E2E/UI
  • (Contract testing)

15 of 26

Qualche nozione

Terminologie

  • Fake
  • Stub
  • mock/SPY

Test doubles

}

16 of 26

Qualche nozione

Scuole di pensiero

  • inside-out / classic / detroit / chicago school
  • outside-in / mockist / london school

17 of 26

Domande?

18 of 26

Quali sono i reali benefici?

19 of 26

Quali sono i reali benefici?

  • Più feedback, e più rapidamente
  • Possibilità di posticipare le decisioni
  • Miglior design
  • Copertura di test
  • Possibilità di refactoring (minor costo di manutenzione)

20 of 26

Con che approccio abbasso il costo?

21 of 26

Con che approccio abbasso il costo?

  • Costo di creazione dei test
  • Costo di manutenzione dei test
  • costo di sviluppo
  • Costo di manutenzione
  • Bilancio con approccio iterativo incrementale
  • Testo le funzionalità
  • approccio iterativo incrementale
  • Simple design

Quale costo?

22 of 26

Quindi?

23 of 26

Quindi? - la triade

tdd

approccio iterativo incrementale

Simple design

Protegge valore

velocizza feedback

Posticipare decisioni

Abbassa il costo di sviluppo

Abbassa il costo di evoluzione / manutenzione

permette

migliora

24 of 26

Quindi? - ricapitolando

  • Approccio outside-in (ma non mockist)
  • Protezione del valore di business
  • che è dato dalle Funzionalità (hanno bassa frequenza di cambiamento)
  • testo ciò che ha bassa frequenza di cambiamento
  • I test non fanno frizione al cambiamento

25 of 26

Domande?

26 of 26

Esempio