Le tre regole del Test Driven Developement sono:
-
non si può scrivere codice di produzione finché non si è scritto un test che fallisce
-
non si può scrivere più test di quanto sia sufficiente a far fallire il compilatore
-
non si può scrivere più codice di produzione di quanto sia sufficiente per far passare il test che correntemente fallisce
I test hanno la funzione di tenere il codice pulito e mantenibile, in quanto forniscono un check immediato per qualsiasi bug si venisse a creare durante un'eventuale riscrittura.
Ogni test dovrebbe essere composto dalle seguente parti:
-
costruzione dei dati di test
-
operazione sui suddetti dati
-
confronto fra il valore restituito dall'operazione e il valore previsto
ogni test deve rappresentare un singolo concetto
Inoltre ogni test per essere pulito deve rispettare i seguenti cinque requisiti:
-
Fast
deve runnare velocemente per incoraggiare gli sviluppatori ad eseguirlo più volte
-
Indipendent
non deve dipendere da altri test (un test non deve settare le condizioni per l'esecuzione di un altro test) per non offuscare il processo di debugging
-
Repeatable
ripetibile in ogni ambiente, che sia quello di produzione o di qa etc.
-
Self-validating
deve avere un output booleano: fallire o passare, non devono esserci ulteriori operazioni da eseguire per verificare che il test sia passato o meno
-
Timely
devono essere scritti prima del codice di produzione necessario a farli passare, altrimenti il codice di produzione non verrà disegnato appositamente per essere testabile