Immagina una discussione tra quattro persone: uno uno sviluppatore, uno un manager, uno un tester e uno un tipo di implementazione / operazioni.
Il Gestore è molto arrabbiato quando un sistema è caduto dopo che una nuova versione di codice è stata implementata nella produzione. Sta cercando di puntare le dita.
La persona delle operazioni difende l'ignoranza - ha seguito esattamente i passaggi della distribuzione.
Il tester invoca l'ignoranza: ha un codice funzionalmente testato e ha funzionato correttamente nell'ambiente di test.
La persona di sviluppo difende l'ignoranza - ha fornito un buon codice e afferma che il sistema è configurato male.
Questa situazione può sembrare familiare ad alcuni. C'è sempre una scusa, qualche errore commesso lungo la catena, dalla progettazione alla distribuzione, che consente di aggiornare un sistema ma non funziona come previsto.
Quali sono i pro e i contro dei test di diagnosi: i test vengono eseguiti all'interno dell'applicazione (magari tramite un'API della riga di comando o qualcosa del genere) che consentono a un sistema di verificare le sue connessioni interne (database, middleware, file system, ecc.) e confermare che tutto ciò che si aspetta che funzioni è corretto?
Questo è piuttosto che affidarsi a un sistema di monitoraggio esterno che potrebbe non essere configurato allo stesso modo dell'applicazione? (nuova versione, proprietà differenti, ricerca del database sbagliato ecc.)
Un esempio:
Sto scrivendo una classe che interagisce con un database. All'interno di questa classe, creo un metodo che interagisce con il database senza influenzarlo, diciamo una semplice query di selezione.
Nel costruttore di questa classe, passo ad un osservatore un test basato sugli argomenti passati nel costruttore. Questo osservatore può essere chiamato per eseguire tutti i test che ha in qualsiasi momento in modo da verificare la validità della connessione, anche mentre il sistema è in esecuzione.