Dalla tua domanda:
We want to be able to keep a record of these test results, so we can go back and run the same test again with the same Inputs and verify the results – @user3711455
Dal tuo commento:
The .CSV changes daily. The test script's input is the output of a legacy system. It takes that, gets equivalent data from New system, and then compares to see if they both match. Resulting with a CSV that has: Legacy System Results, New System Results Total Differences: – @user3711455
Questi non sono lo stesso test. Eseguire lo stesso test, con gli stessi input, contro lo stesso codice dovrebbe essere un esercizio ridondante. Se ciò non produce sempre lo stesso risultato hai permesso la magia nel tuo sistema.
Questo è utile solo per verificare che non stia accadendo nulla di magico. Più tipicamente riesegui questi test assicurandoti che solo una cosa sia cambiata. Di solito il codice refactored. In questo modo quando il test si rompe sai cosa incolpare, l'unica cosa che è cambiata.
L'esecuzione di due sistemi affiancati alla duplicazione del lavoro per il confronto non è un test. È un sistema di voto. Quando non sono d'accordo, devi decidere a chi credere. Il sistema legacy non dovrebbe essere considerato affidabile per essere perfetto per quanti anni ha sotto la cintura. In effetti, più è vecchio il più probabile che alcuni errori facciano così bene che tutti li ignorano da quando sono attesi e potrebbero non averti mai detto a nessuno di loro, dato che tutti lo sanno. Potresti ricavarne un valore in tal senso, a dimostrazione che il nuovo sistema è pronto per la transizione, ma questi non sono test poiché richiedono che il vecchio sistema esista.
Tuttavia, immetti l'input nel vecchio sistema e registra l'output e disponi di un output di base. Ma solo per quell'input e solo per quella versione del sistema legacy. Che si spera non sia bacato da solo. Da questo puoi costruire un test sul nuovo sistema. Ma se i tuoi input non esercitano ogni caso d'uso e ogni bit di codice, speri solo di essere fortunato.
Se, come sospetto, il tuo custom written test cases
che causa i casi di test a change daily
sta semplicemente facendo funzionare entrambi i sistemi dallo stesso feed di input operativo, non ho molta fiducia che tu abbia una buona copertura del codice .
Se, tuttavia, il tuo input viene modificato manualmente per esercitare diverse parti del tuo codice, allora quegli input e il codice che automatizza il test e il confronto dei loro output dovrebbero essere organizzati in maniera strutturalmente simile al codice che testano in questo modo che è molto facile navigare da uno all'altro. Fallo e mantieni la versione controllata e avrai un bel sistema di sviluppo.