Database e server CI

8

Ho un server CI (Hudson) che costruisce allegramente, esegue test unitari e distribuisce nell'ambiente di sviluppo, ma ora mi piacerebbe farlo funzionare con i test di integrazione.

I test di integrazione colpiranno un database e quel database verrà costantemente modificato per contenere i dati rilevanti per il test in questione. Ciò tuttavia porta ad un problema: come posso assicurarmi che il database non venga splattato con i dati per un test e che i dati vengano sovrascritti da un secondo progetto prima del completamento della prima serie di test?

Attualmente uso il metodo "speranza", che al momento non sta funzionando male, ma soprattutto perché abbiamo un piccolo numero di test di integrazione impostati su CI.

Come lo vedo ho le seguenti opzioni:

  • Database test-local (in memoria)
    Non sono sicuro che nessun database in memoria gestisca tutta la paura dei trigger e dei pacchetti di Oracle ecc. e qualsiasi cosa di meno non ritenga che valga la pena di essere testata .
  • Database dell'esecutore CI locali - Sarebbe necessaria una buona quantità di lavoro per impostare questo e tenerli aggiornati, ma con aria di sfida un'opzione (la maggior parte del lavoro è già stato fatto per mantenere attivo il database degli attuali elementi di configurazione) -to-date).
  • Esecutore singolo "test di integrazione"
    Probabilmente il più semplice da implementare, ma significherebbe che i test di integrazione potrebbero essere un po 'indietro.
  • Blocco del database (o set di tabelle)

Sono sicuro di aver perso alcuni modi (per favore aggiungili). Come si eseguono test di integrazione basati su database sul server CI? Quali problemi hai avuto e quale metodo mi consigliate? (Nota: mentre utilizzo Hudson, sono felice di accettare le risposte per qualsiasi server CI, le idee che sono sicuro saranno portatili, anche se i dettagli non lo sono).

Saluti,
MLK

    
posta mlk 16.02.2011 - 15:14
fonte

2 risposte

1

Solo un'idea, dal momento che non l'ho mai fatto, ma potresti impostare un'attività per ottenere il DDL per lo schema del database su cui stai eseguendo il test e ricrearlo in memoria o su un altro database. Sembra che sia abbastanza semplice in Oracle. Quindi puoi generare automaticamente il nuovo database ogni volta che cambia.

Sembra che Oracle abbia un database in memoria chiamato TimesTen . Potrebbe valere la pena guardare. Definitivamente preferirei utilizzare un database in memoria se possibile, dal momento che è solitamente più veloce dell'hard disk.

    
risposta data 16.02.2011 - 16:31
fonte
1

Eseguiamo test di integrazione basati su database posizionandoci su un server di database per lavorare con la casella di configurazione e ospitare l'istanza di configurazione. Un po 'come la staging e la produzione hanno ciascuno il proprio server di database.

    
risposta data 16.02.2011 - 16:51
fonte