Ha senso avere due test identici con dati diversi?


Al seminario sul TDD e il pair programming che ho tenuto all'Università dell'Insubria di Varese uno studente mi ha domandato:
"Ho fatto il test T1 del metodo X poi è saltato fuori che con dati di input diversi, nonostante il test fosse verde, il comportamento non era più coerente...Allora ho scritto il test T2 uguale al test T1 ma con dati diversi...Ha senso avere due test identici con dati diversi?"
Io ho provato a rispondere con un esempio banale in pseudolinguaggio:

test sum
result = sum 1, 6
assert result is 7

sum a, b
return 7

----------


test another sum
result = sum 2, 6
assert result is 8

sum a, b
return a + b

La mie domande al ragazzo sono state: "Ho fatto TDD?" e "Il secondo test è stato utile anche se uguale al primo?"... risposta "Certo!"

Bene: in una domanda tanto banale e nella mio esempio forse ancor più banale, si nascondono alcuni retroragionamenti:
- il primo test testa la somma, il secondo testa che il metodo sum sia generico
- il comportamento è (a volte) influenzato dai dati, il test mi documentano come si comporta con dati particolari (sum supporterà i numeri negativi? i numeri romani? ec...)
- bene avere i due test uguali a meno dei dati ma la duplicazione? Beh lì basta un po' di impegno e la duplicazione si toglie via che è un piacere ;)
- se non fosse stato un esempio ma fosse stata la vita reale "avrei mai scritto il primo test?".. La mia risposta è NO, quindi devo migliorare il mio TDD

Comments

Popular posts from this blog

"Back to values" agile retrospective format

Contracts: diagonal saber vs. agile

ScuolaXP 2017 - Com'è andata?