Test di integrazione della logica SQL

3

Nel mio lavoro quotidiano, utilizzo molta logica SQL (procedure memorizzate Oracle e funzioni SQL). Per limitare la regressione del codice sul codice implementato, faccio ciò che chiamo "script di integrazione": script C # che chiamano l'SP con determinati parametri e confrontano il risultato con quello voluto e mi avvisano se il risultato non è quello desiderato. Eseguo questi script dopo ogni modifica per convalidare che non ho infranto tutto.

Funziona piuttosto bene, meglio di niente, ma sembra un lavoro di fortuna.

Esiste qualche pratica migliore di questa per convalidare il codice basato su SQL?

    
posta eka808 18.02.2015 - 10:01
fonte

2 risposte

1

Se un test unitario si rompe, di solito sai esattamente cosa è andato storto; quando un test di integrazione si rompe, è un suggerimento che un pezzo del tuo processo abbia qualcosa di sbagliato in esso. Se sei a tuo agio con questo e il tuo SP non è incredibilmente complesso, i test di integrazione di C # dovrebbero andare bene.

Alcune cose da considerare:

Utilizza un framework di test unitario. Chiamarli "C # Scripts" mi chiedo se stai facendo questi test senza un adeguato framework di test unitario.

Esaminare il rollback dei risultati di eventuali modifiche al database dopo l'esecuzione del test. Ecco un esempio precedente ma dovrebbe funzionare in qualsiasi runner di test

    
risposta data 18.02.2015 - 15:43
fonte
1

In parole povere, sembra un test unitario. I tuoi "script C #" sono le unità di pass / fallimento.

Is there any practice better than this one to validate SQL based code ?

Non dovresti preoccuparti di convalidare il codice SQL reale. Tutto ciò che veramente dovrebbe interessare è la validità dei dati e il risultato. Dovresti disaccoppiare i tuoi test unitari dall'effettivo meccanismo sottostante (un RDBMS in questo caso), in modo che il test dell'unità sia intercambiabile se l'origine dati sottostante diventa diversa o anche di un tipo diverso (pensa: file flat, richiesta di servizio, API chiama, ecc.).

Un esempio

Una casa automobilistica non dovrebbe preoccuparsi delle proprietà molecolari e dei test del metallo che usano per le loro auto. Dovrebbero preoccuparsi dei numeri e della decelerazione durante un test d'impatto della macchina. Pensa in grande.

Quindi la domanda migliore qui non dovrebbe essere "come faccio a testare la mia logica SQL", ma dovrebbe essere "come faccio a testare e convalidare la mia logica e i miei dati".

    
risposta data 18.02.2015 - 15:12
fonte

Leggi altre domande sui tag