Sono relativamente nuovo a TDD e ho riflettuto molto su come gestire il pool di test perpetuamente in crescita che ne deriva.
Una delle mie maggiori preoccupazioni riguarda i falsi positivi.
Nella mia esperienza, non è affatto raro che una funzionalità subisca modifiche abbastanza massicce nel tempo. Per implementare una modifica, dovremmo prima scrivere un test (o molti test) per il nuovo comportamento e quindi codificare la modifica. Idealmente, tutti i test passerebbero una volta che la modifica della funzione è stata implementata correttamente.
Ma per quanto riguarda i test che hanno riguardato la prima incarnazione della funzione? Non c'è alcuna garanzia che:
- sono ancora pertinenti;
- passano ancora;
- il loro stato pass / fail è anche corretto.
Revisione / aggiornamento / eliminazione di questi test in un pool di test relativamente piccolo può essere gestibile, ma per quanto riguarda quando si hanno migliaia o decine di migliaia di test? Mi sembra che ci sia un grosso rischio che la tua collezione di test finisca per contenere molti falsi positivi. E, considerando che questi test sono una forma di documentazione di sistema, questo è piuttosto brutto!
Domanda: come si riduce il rischio di accumulare test falsi positivi quando si applica TDD o BDD (o qualsiasi cosa che alla fine porta ad avere una vasta collezione di test)?