In un grande progetto software tipizzato staticamente con istruzioni SQL manuali non dinamiche al suo interno, come si verifica tutta la sintassi sql?

2

Una delle cose che mi sembra difficile da gestire è la necessità di distribuire un'applicazione software per testare l'interazione del database. Più spesso di quanto vorrei, ho un errore di sintassi o errore di battitura nella mia istruzione sql che attiva un errore di runtime quando viene richiamata l'istruzione. In alcuni di questi progetti, esiste un numero molto elevato di query sql (> 100), il che rende molto dispendioso in termini di tempo se è necessario controllare ciascuno di essi. Inoltre, i passaggi di implementazione e runtime possono essere così lunghi che mi rallenta quando eseguo il controllo di sql che ho modificato.

La maggior parte delle volte dopo aver esaminato una basebase sconosciuta o una che non ho toccato da tempo, si è convinti che tutto lo sql funzioni correttamente.

Quali sono le pratiche standard per la verifica dell'interazione del database nelle applicazioni in modo non automatico \ manuale?

    
posta Peter Smith 25.07.2014 - 21:46
fonte

4 risposte

4

Dovresti scrivere casi di test per tutte le interazioni del database. Dato che il controllo della sintassi è un problema, è necessario eseguirli su un database di test che esegue lo stesso software di database utilizzato dall'applicazione. Se riesci a ottenere un buon campione rappresentativo di dati, allora questo offre anche l'opportunità di verificare le tue richieste di prestazioni.

    
risposta data 25.07.2014 - 23:00
fonte
1

Puoi rifattorizzare le tue applicazioni per usare Hibernate, o qualche altro framework che genera automaticamente query, ma sembra che questo sia un codice legacy che non è stato scritto pensando a queste strutture.

L'ho trovato su SO: link .. .anche questo: link

Un link sembra essere un formattatore che controlla anche la sintassi: link e una versione online: link

Sfortunatamente, sembra che sia un'applicazione desktop o un componente aggiuntivo VS, quindi potrebbe fare solo MS SQL. Per quello che stai suggerendo, sarebbe meglio avere uno strumento che può essere eseguito dalla riga di comando come parte del processo di compilazione. La cosa più vicina a cui riesco a pensare sarebbe quella di tentare di ottenere un piano di esecuzione per ogni query, perché questo ti farebbe sapere se c'è qualche errore di sintassi, ma il tuo processo di compilazione dovrebbe fare una connessione al database per ottenere effettivamente la query piano.

Dai link qui sopra, ho trovato uno strumento online qui: link Si convalida con gli standard ANSI SQL.

Trovato anche uno strumento online per MySQL: link

Per MS SQL c'è questo: link

E c'è anche link che è molto più di un validatore.

    
risposta data 25.07.2014 - 22:27
fonte
1

E quando verifichi che la sintassi è corretta, come prevedi di verificare che le tue query siano corrette e restituisca i dati previsti ?. È perfettamente possibile, anzi il più consueto, che le tue domande siano sintatticamente corrette ma logicamente scorrette.

Verifica la tua applicazione, se il test manuale richiede tempo e non è pratico (e ovviamente è in ogni sistema non banale) fai test automatici.

    
risposta data 25.07.2014 - 23:45
fonte
0

Per espandere la risposta di TMN, è molto importante estrarre la logica del database nel proprio livello. Dovresti avere classi che avvolgono ogni chiamata al database. Questo rende l'unità testare le tue classi di database molto più facilmente. Una volta verificato che tutte le classi di livello di accesso ai dati funzionano correttamente con i test di unità THEIR, è possibile prenderne in giro i test di unità di altre classi perché non si verifica più l'accesso ai dati in quel particolare test.

    
risposta data 26.07.2014 - 06:32
fonte

Leggi altre domande sui tag