Per iniziare, non penso che questo sia un ripetizione di < a href="https://stackoverflow.com/questions/3045553/manual-testing-vs-automated-testing"> altre domande su test dell'unità . Quello che sto cercando di aiutare è articolare il suo valore per un team di programmatori, analisti, manager e tester. Con test automatici, non penso di dover fare una distinzione tra test unitari (es. JUnit), BDD (es. JBehave, Fitness) e UI (Selenium, Watir) perché penso che tutti forniscano un valore simile (ma sentitevi liberi di scrivi una risposta che non è d'accordo :))
Quello che segue è un elenco che ho identificato, sto cercando risposte che aiutano a espandere o perfezionare:
- Risparmio di tempo / costi : la scrittura di test automatici può richiedere più tempo rispetto ai casi di test scritti. Tuttavia, considerando che i test vengono eseguiti più volte, il lavoro marginale (ad esempio costo / tempo) per eseguire test automatici è di diversi ordini di grandezza in meno. Il fatto che i test automatici siano economici per eseguire facilita la modifica del sistema nel tempo.
- Documentazione : non esiste un modo più efficace per sapere come funziona un sistema rispetto ai suoi test. Qualsiasi altra documentazione di solito non è aggiornata nel momento in cui è stata scritta, ma i test (almeno quelli che superano) rivelano come funzionano effettivamente le cose. Questo è vero sia per la documentazione dell'API per l'utente finale che per quella dell'API.
-
Qualità del codice : la scrittura del test ti costringe a:
- considera i client perché i test sono un client
- interrompe le dipendenze dove rendere il codice testabile spesso significa capire come rendere quel codice non richiede che sia disponibile un altro sistema di grandi dimensioni