Sto lavorando con il seguente sistema:
Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern
Recentemente abbiamo avuto un problema in cui ho aggiornato la versione della libreria che stavo usando, che, tra le altre cose, ha causato timestamp (che la libreria di terze parti restituisce come long
), da cambiare da millisecondi dopo l'epoca a nanosecondi dopo l'epoca.
Il problema:
Se scrivo test che prendono in giro gli oggetti della libreria di terze parti, il mio test sarà sbagliato se ho fatto un errore sugli oggetti della libreria di terze parti. Ad esempio, non mi sono reso conto che i timestamp hanno cambiato la precisione, il che ha comportato la necessità di cambiare il test dell'unità, perché la mia simulazione ha restituito i dati sbagliati. Questo è non un bug nella libreria , è successo perché ho perso qualcosa nella documentazione.
Il problema è che non posso essere sicuro dei dati contenuti in queste strutture dati perché I non può generare quelli reali senza un vero feed di dati. Questi oggetti sono grandi e complicati e hanno molti differenti pezzi di dati in loro. La documentazione per la libreria di terze parti è scadente.
La domanda:
Come posso impostare i miei test per testare questo comportamento? Non sono sicuro di poter risolvere questo problema in un test unitario, perché il test stesso può facilmente essere sbagliato. Inoltre, il sistema integrato è ampio e complicato ed è facile perdere qualcosa. Ad esempio, nella situazione precedente, ho regolato correttamente la gestione del timestamp in diversi punti, ma ho perso uno di essi. Sembra che il sistema stia facendo le cose giuste per lo più nel mio test di integrazione, ma quando l'ho distribuito alla produzione (che ha molti più dati), il problema è diventato evidente.
Al momento non ho un processo per i miei test di integrazione. I test sono essenzialmente: prova a mantenere buoni i test unitari, aggiungi altri test quando si verificano problemi, quindi esegui l'implementazione sul mio server di test e assicurati che le cose sembrino sensate, quindi distribuite in produzione. Questo problema di timestamp ha superato i test unitari perché i mock sono stati creati in modo errato, quindi ha superato il test di integrazione perché non causava alcun problema immediato e ovvio. Non ho un dipartimento QA.