Ho avuto un bug che era davvero difficile da rintracciare, perché tutti i test unitari erano verdi, ma l'applicazione di produzione non funzionava correttamente.
Ecco cosa è successo:
Ho avuto una classe filtro che impostava la mia applicazione in modo da ignorare i dati che non si trovavano in determinate finestre temporali.
- Il test dell'unità, che mi è sembrato approfondito, è diventato verde.
- Inoltre, i miei test di integrazione hanno prodotto risultati come previsto.
- La produzione, tuttavia, non ha funzionato.
- Come risultato dei primi due proiettili, questo problema è stato molto difficile da trovare.
È emerso che il problema era che le mie date di test utilizzavano il mio fuso orario (America / Chicago) ma i dati di produzione fornivano date in UTC, cosa che non avevo realizzato, e la logica per il filtro non era corretta per Date UTC. (Stavo usando joda time DateTime
oggetti).
-
Dove è stato interrotto il mio flusso di lavoro?
- Non sono riuscito a produrre una specifica che specificava la logica necessaria per gestire le date in qualsiasi fuso orario?
- Non sono riuscito a considerare attentamente tutti i casi a livello di test unitario?
- Non sono riuscito a garantire che il test di integrazione fosse sufficientemente simile alla produzione?
- Altro?
-
Quali modifiche posso apportare al mio flusso di lavoro per prevenire meglio questo tipo di errore in futuro?
- Come posso risolvere in modo più efficace un problema quando c'è un problema nella produzione ma non nei test?