Come testare i dati in base alle query SQL?

4

Sto provando a configurare un framework di test per dataset (SQL) che vengono aggiornati quotidianamente. Voglio scrivere asserzioni che comportano confronti tra due tabelle: ad esempio, la somma della colonna visitors nella tabella customer , raggruppata per giorno, dovrebbe essere compresa tra il 5% del totale nella tabella transactions (ma potrebbe non allineare precisamente a causa del rumore nel modo in cui ogni tabella è popolata.)

Questi test sono difficili da specificare tramite i vincoli, ma è facile eseguire query contro. Ad esempio, un'opzione potrebbe essere scrivere query che inseriscono casi non riusciti in una tabella di registrazione e disporre di test unitari che eseguono le query, quindi verificare se la tabella di registrazione è vuota.

Come ti avvicini a test come questo? Utilizzi strumenti specializzati o quadri di test unitari standard?

    
posta satvikberi 08.04.2016 - 20:16
fonte

3 risposte

9

Ci sono stato, fatto.

Per prima cosa rendiamo chiaro qualcosa:

  • Non si tratta di test delle unità. Il test delle unità riguarda il codice. Non stai eseguendo i test dopo un cambio di codice per verificare se le alterazioni del codice hanno introdotto un bug o un comportamento indesiderato. Invece, si desidera eseguire alcune routine alla fine di un giorno lavorativo per verificare se alcuni indicatori di performance aziendale hanno raggiunto un obiettivo predefinito o si trovano tra una soglia predefinita. Se i dati non sono conformi alla regola del 5%, ciò non dipende dal bug nel software.
  • Quello che stai facendo è monitorare le prestazioni della tua azienda sulla base dei record di dati.
  • Potrebbe anche essere fatto per rilevare le sospette deviazioni.

Quello che ho fatto è questo:

  • Ho programmato alcune routine (la lingua non è importante) e le ho programmate in un crontab per eseguire ogni data in un determinato momento.
  • Quelle routine popolano una tabella.
  • Quella tabella viene utilizzata da un'app Web per eseguire il rendering di un report.

Non ho usato alcun software specializzato, quindi non posso raccomandarne uno.

Puoi integrare tali rapporti in qualsiasi portale o qualsiasi Balanced Scorecard che consente ai conettori ad-hoc di personalizzare i dashboard.

    
risposta data 08.04.2016 - 20:52
fonte
0

Sembra che tu stia vivendo un malinteso sui test unitari.

I buoni test unitari rispettano i PRINCIPI principi:

Anche se questo potrebbe essere un test valido delle regole aziendali, non è chiaramente un test ripetibile poiché i dati di origine possono cambiare nel tempo. Ciò che puoi fare è scrivere test unitari per creare vari scenari di dati e controllare che le regole aziendali vengano attivate correttamente quando i dati si trovano in uno stato specifico.

NB. Ripetibile implica anche che ogni test sia responsabile della creazione, dell'interrogazione e della cancellazione dei dati in modo che il database sia lasciato in uno stato coerente. Una transazione autonoma è un modo per ottenerlo.

    
risposta data 11.04.2016 - 17:43
fonte
0

Se è facile farlo con le query, fallo con le query. Sembra che l'intera cosa dovrebbe essere una stored procedure. Come altri hanno già detto, non credo che un framework di testing unitario ti sarà di grande aiuto qui.

    
risposta data 12.04.2016 - 09:34
fonte

Leggi altre domande sui tag