Sto lavorando su un algoritmo che è suddiviso in più parti, ognuna delle quali svolge compiti diversi ma è più o meno separata dalle altre, con cui intendo l'unica interazione tra le parti è il passaggio di un singolo pezzo di dati da una parte all'altra come un nastro trasportatore. Stavo facendo alcuni test unitari per l'algoritmo e mi stavo chiedendo, è una cattiva idea utilizzare gli stessi casi di test per testare ogni parte dell'algoritmo?
All'inizio pensavo che sarebbe stata una buona idea, dal momento che mi ha risparmiato dover riscrivere un intero nuovo set di casi di test per ogni passo dell'algoritmo, ma man mano che mi sono approfondito ho capito che alcune parti dell'algoritmo erano più specifico di certi compiti rispetto ad altri.
Ad esempio, un passo dell'algoritmo legge un file e sputa un insieme di stringhe, che viene poi utilizzato da un passo successivo nell'algoritmo per produrre un altro insieme di oggetti completamente diversi. Dovrebbero essere progettati test separati per testare specificamente l'integrità di questo primo passo?
Un'altra cosa che mi ha spinto all'idea di utilizzare gli stessi casi di test per più passaggi nell'algoritmo è che l'output di un passaggio potrebbe essere completo e privo di senso per il passo che lo procede. Quindi un caso di test potrebbe passare per un passo nell'algoritmo, ma fallire nel passaggio successivo perché, nonostante il fatto che il passaggio precedente sia stato in grado di analizzare correttamente i dati di input, l'output non è utilizzabile per il passaggio successivo.
tl; dr dovrebbero essere usati gli stessi test per tutti i passaggi di un algoritmo?
EDIT (In risposta a possibili duplicati ): Da quello che posso dire, quella domanda non sembra essere una domanda su un algoritmo lineare (come il modello di nastro trasportatore che ho descritto sopra), sembra invece di parlare della combinazione di dati provenienti da più componenti individuali non contigue. Inoltre, non chiede se gli stessi test debbano essere utilizzati per tutti i passaggi.