Dove dovrebbero essere implementati test e verifiche in un processo di modellazione matematica?

1

Ho un modello matematico con due "stadi" principali 1. caricamento dei dati (solo pochi KB di dati) e 2. esecuzione di un modello sui dati. Voglio implementare alcuni test e controlli per garantire che i dati inseriti nel modello siano validi (tipi corretti, valori corretti, ecc.) Per garantire che l'output del modello sia corretto.

In quale fase dell'intero processo è il momento migliore per implementare questi test, quando carichi i dati o quando esegui il modello sui dati? Oppure i test dovrebbero essere eseguiti in entrambe le fasi?

L'esecuzione dei test solo nella fase di caricamento dei dati riduce l'overhead complessivo e garantisce il corretto output del modello. L'esecuzione di test sulla fase del modello comporta una duplicazione del codice (oltre a un sovraccarico aggiuntivo se i test sono già stati implementati nella fase di caricamento dei dati).

Questo modello verrà eseguito solo una volta alla settimana dagli utenti interni, quindi non ci sono applicazioni esterne o passività / parti dipendenti. Tuttavia, l'oggetto del modello è disponibile all'utente senza dover utilizzare l'oggetto di caricamento dei dati (separato) (quindi, di nuovo, i dati possono, ma non dovrebbero, essere passati al modello dall'utente senza passare attraverso la fase di caricamento dei dati ).

C'è una buona pratica qui? Potrebbe esserci un modo migliore per strutturare il codice per implementare i test?

    
posta killerT2333 21.12.2018 - 18:06
fonte

2 risposte

4

At what stage in the whole process is the best time to implement these tests - when loading the data or when running the model on the data?

Nessuno .

Invece, separa il processo in 3 fasi:

  1. Caricamento dati

  2. La convalida

  3. Esecuzione del modello sui dati

Ciò rende la validazione indipendente da 1 e 3, che consente di riutilizzare la convalida anche in altri contesti. Consente inoltre forme di convalida che sono più facili da impiantare quando tutti i dati sono disponibili e che possono essere più difficili da implementare in una fase di caricamento sequenziale.

Se sono necessarie alcune convalide che sono specifiche per il modello, il passaggio 2 può utilizzare il modello per questo. Tuttavia è spesso una buona idea tenere separati i 2 e i 3.

Immagino che l'unica duplicazione di codice che si verificherà sia un codice per iterare sui dati nei passaggi 1 e 2, il che è abbastanza accettabile, poiché in genere non si ripete alcuna logica in questi passaggi. Ma senza sapere nulla dei dettagli (come le strutture dati coinvolte), questo è solo un colpo al buio.

    
risposta data 21.12.2018 - 21:37
fonte
0

La convalida appartiene al modello. Se i dati sono cattivi o meno dipende dal modello che alla fine è stato alimentato e in fase di caricamento questo non è ancora noto. OK, al momento hai un solo modello ma da una prospettiva di ingegneria del software che potrebbe cambiare. Quindi, proprio come si prova per null prima di utilizzare un oggetto si prova per la sanità dei dati prima di eseguire un calcolo. La fase di caricamento non ha bisogno e non dovrebbe avere conoscenza (== dipendenza) del modello.

    
risposta data 22.12.2018 - 08:40
fonte

Leggi altre domande sui tag