Domanda

Il nostro software gestisce molti feed di dati provenienti da varie fonti: database replicati in tempo reale, file inviati automaticamente tramite FTP, esecuzione pianificata di stored procedure di database per memorizzare nella cache istantanee di dati dai server collegati e numerosi altri metodi di acquisizione dei dati.

Dobbiamo verificare e convalidare questi dati:

  • è avvenuta anche un'importazione
  • è ragionevole i dati (valori null, numero di righe, ecc.)
  • i dati si riconciliano con altri valori (forse abbiamo più fonti per dati simili)
  • ha esaurito i dati e l'importazione deve essere richiesta manualmente

In molti modi questo è come Unit Testing: ci sono molti tipi di controllo da effettuare, basta aggiungere un nuovo controllo all'elenco e rieseguire ogni classe di test in risposta a un evento particolare. Esistono già belle GUI per l'esecuzione dei test, forse anche per poterli pianificare.

È un buon approccio? Esistono modelli migliori, similmente generalizzati, per la convalida dei dati?

Siamo un negozio .NET, Windows Workflow (WF) sarebbe una soluzione migliore e più flessibile?

È stato utile?

Soluzione

Il test unitario non è analogo a quello che devi fare. È più sulla falsariga di test di integrazione o test di accettazione. Ma questo è il punto.

Il tuo sistema ha un forte requisito per la convalida dei dati che entrano nel sistema. I dati entrano nel sistema in vari modi e suppongo che debbano essere verificati in diversi modi.

Il flusso di lavoro è utile per progettare e controllare i processi di business (logica) che possono cambiare o richiedono un intervento umano. È agnostico quando si tratta di validazione. Tuttavia, l'hosting del processo di convalida come flusso di lavoro può essere una buona idea, poiché i flussi di lavoro sono progettati per essere flessibili, di lunga durata e capaci di intervento umano. L'hosting del processo di convalida all'interno di un framework di macchine a stati del flusso di lavoro consentirebbe di definire strategie di convalida per diversi tipi di importazione dei dati in fase di esecuzione.

Devi progettare un framework di validazione che si basa fortemente sulla composizione piuttosto che sull'eredità per la sua logica. Suddividere tutti i diversi modi in cui i dati possono essere importati nel sistema e convalidati in passaggi atomici. Raggruppare tali passaggi in base alla responsabilità e creare interfacce con le proprietà e i metodi minimi e minimi necessari affinché un oggetto di implementazione esegua ciascuno di essi. Creare classi di base composte da queste diverse interfacce. Da questo framework è possibile combinare e implementare implementazioni adatte al particolare passaggio di importazione o convalida.

Un'ultima cosa. I flussi di lavoro sono serializzati su xaml per l'archiviazione a lungo termine. Le tue classi dovrebbero essere anche xaml serializzabili per rendere il passaggio dall'attività al repository e viceversa il più fluido e semplice possibile.

Altri suggerimenti

Test di validità di questi dati sembra ragionevole. Puoi o meno chiamarlo Unit Testing, questa è la tua scelta. Non lo farei. Usa lo strumento che trovi meglio per questo lavoro: non so che cosa intendi con WF (WebForms?).

Il massimo beneficio si ottiene testando questo automaticamente. Qualunque cosa sia automatica e funzioni per te, è buona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top