Quali modelli / architetture applicare per "Importa dati, dati di processo, risultati di esportazione"

6

Mi chiedevo quale architettura / pattern scegliere per il seguente problema diviso in tre passaggi:

  1. Importa la descrizione TestScript da file (ad esempio .xls, .txt)
  2. TestScript descrittivo
  3. Esporta descrizione con risultati elaborati come .xml

Ecco cosa ho ottenuto finora:

  • Importatore che legge in xls e crea una struttura gerarchica di oggetti
  • Parser che crea un Abstract Syntax Tree (If, then, else, end, command) dalla struttura dell'oggetto
  • Un processore (VisitorPattern) di AST. Questo processore istanzia l'implementazione del comando, esegue il comando, raccoglie i risultati e controlla il flusso (se, allora, altrimenti)

Attualmente la struttura dell'oggetto importata contiene già un campo per il risultato e può essere serializzato come xml. Ma a mio parere non è molto elegante avere un campo risultato negli oggetti di input.

La ragione principale per cui non mi piace è che non riesco a riutilizzare la struttura dell'oggetto importata per elaborarla più volte. Vorrei dividere l'intero componente anche in tre parti:

  1. Importa, che crea una struttura gerarchica dell'oggetto che descrive il TestScript (contenente un filepumper e un preprocessore)
  2. Process, che crea un AST e lo elabora
  3. Esporta, che prende i risultati e le descrizioni e li scrive

Ecco alcune altre condizioni:

  • Non tutti i nodi AST rappresentano un oggetto nella struttura dell'oggetto (descrizione)
  • Ma ogni oggetto risultato è connesso a un oggetto descrizione
  • Descrizione e risultati sono gerarchici
posta kaeLum 31.07.2014 - 10:29
fonte

1 risposta

1

L'output dei risultati incorporati nella descrizione di TestScript sembra eccessivo. Se i risultati così scritti impediscono il riutilizzo della descrizione di TestScript senza una modifica per rimuoverli, l'architettura è stupida.

Le specifiche di output appartengono alla descrizione. Il tipico schema di test che ho visto per tutta la vita è che il test ha un nome, quel nome è incluso nell'output per identificare ciò che fa il test. Un risultato del test individuale dovrebbe identificare cosa è stato fatto, cosa era previsto, cosa è stato effettivamente trovato. Il nome del test di solito è sufficiente per ciò che è stato fatto, ma il valore atteso, l'intervallo accettato e il valore effettivo sono cose buone da vedere nell'output.

Se c'è dubbio o incertezza sul fatto che l'installazione prevista dalla descrizione abbia come risultato gli oggetti giusti, una modalità di output molto dettagliata potrebbe causare la scrittura di Abstract Syntax Tree nell'output. Pause-on-fail o una modalità single step che si interrompe al punto in cui viene effettuata la valutazione pass / fail può bloccare il sistema al momento della decisione e consentire allo sviluppatore o ad un altro sviluppatore o manutentore di test, ecc. Di guardarsi intorno ed essere sicuro che la configurazione della descrizione sia stata correttamente assemblata.

Riprodurre la descrizione, verbatum, nell'output, salva un utente putativo dal dover aprire una finestra di modifica / visualizzazione per la descrizione e l'output. Sento la buona volontà, ma desideri inespressi.

    
risposta data 22.05.2015 - 12:56
fonte

Leggi altre domande sui tag