Il test del database include l'esecuzione della validità dei dati, il test dell'integrità dei dati, il controllo delle prestazioni relativo al database e il test delle procedure, dei trigger e delle funzioni nel database.

Esistono diversi motivi per cui viene eseguito il test del database. È necessario eseguire l'integrità dei dati, la convalida e il controllo della coerenza dei dati sul database poiché il sistema di backend è responsabile dell'archiviazione dei dati e vi si accede per molteplici scopi.

Alcuni dei motivi comuni per cui è necessario eseguire il test del database sono i seguenti:

  • Per facilitare la complessità delle chiamate al back-end del database, gli sviluppatori aumentano l'uso di View e Stored Procedure.

  • Queste Stored procedure e Viewscontengono attività critiche come l'inserimento dei dettagli del cliente (nome, informazioni di contatto, ecc.) e dati di vendita. Queste attività devono essere testate a diversi livelli.

  • Il test black box eseguito sul front-end è importante, ma rende difficile isolare il problema. Il test nel sistema di backend aumenta la robustezza dei dati. Ecco perché il test del database viene eseguito sul sistema back-end.

  • In un database, i dati provengono da più applicazioni e c'è la possibilità che dati dannosi o errati siano memorizzati nel database. Pertanto, è necessario controllare regolarmente i componenti del database. Inoltre, l'integrità e la coerenza dei dati dovrebbero essere controllate regolarmente.

I passaggi da seguire durante l'esecuzione del test del database sono i seguenti:

  • I dati che si trovano nel database devono essere verificati.
  • Verificare se i vincoli vengono mantenuti.
  • Devono essere verificate le prestazioni delle procedure e l'esecuzione dei trigger.
  • È necessario verificare il rollback e il commit della transazione.

Sulla base della funzione e della struttura di un database, il test DB può essere classificato nelle seguenti categorie:

  • Structural Database testing - Si occupa di test di tabelle e colonne, test di schemi, stored procedure e test di viste, controllo di trigger, ecc.

  • Functional Testing- Implica il controllo della funzionalità del database dal punto di vista dell'utente. I tipi più comuni di test funzionali sono i test white box e black box.

  • Nonfunctional Testing - Comprende test di carico, test di rischio nel database, stress test, requisiti minimi di sistema e si occupa delle prestazioni del database.

Gli strumenti più comuni utilizzati per eseguire il test delle stored procedure sono LINQ, SP Test tool e così via.

I join vengono utilizzati per connettere due o più tabelle in qualche modo logico. I tipi comuni di join includono: Inner join, Non equijoin, Outer join, Self-join e Cross join.

Puoi unire un singolo tavolo a se stesso. In questo caso, stai usando la stessa tabella due volte.

Step 1 - Connettiti al database

db_connect(query1 DRIVER {drivername};SERVER server_name;UID uidname;
   PWD password;DBQ database_name );

Step 2 - Esegui la query del database -

db_excecute_query (write the required query that is to execute); Specify the appropriate condition

Step 3 - Scollegare la connessione al database utilizzando

db_disconnect(query);

Utilizzando i punti di controllo del database di output, è necessario selezionare le opzioni delle query manuali SQL. Qui è possibile scrivere la query di selezione.

Innanzitutto, controlla i requisiti della stored procedure. Il passaggio successivo consiste nel verificare se indici, join, eliminazioni e aggiornamenti sono corretti rispetto alle tabelle menzionate nella procedura memorizzata.

Successivamente, esegui le seguenti attività:

  • Convalidare il nome della procedura chiamante, i parametri di chiamata e le risposte previste per diversi set di parametri di input.

  • Esegui la procedura con TOAD o MySQL o Query Analyzer.

  • Rieseguire le procedure disponibili inviando diversi parametri e controllare i risultati rispetto ai valori attesi.

  • Concludendo il processo, automatizza i test con WinRunner.

Il tester dovrebbe chiamare la procedura memorizzata nel database utilizzando il comando EXEC. Se sono richiesti parametri, devono essere passati. È necessario passare diversi valori di parametri per confermare se la stored procedure viene eseguita o meno. Alla chiamata di questo comando deve controllare e verificare la natura e il comportamento del database.

Example - Se la stored procedure viene scritta per popolare una tabella, i valori della tabella devono essere controllati.

Abbiamo tre tipi di istruzioni SQL:

  • Data Manipulation Language (DML)
  • Data Definition Language (DDL)
  • Data Control Language (DCL)

Le istruzioni DDL vengono utilizzate per definire la struttura o lo schema del database. Alcuni esempi -

  • CREATE - per creare oggetti nel database

  • ALTER - altera la struttura del database

  • DROP - elimina gli oggetti dal database

Gli operatori vengono utilizzati per specificare le condizioni in un'istruzione SQL e per fungere da congiunzioni per più condizioni in un'istruzione.

  • Operatori aritmetici
  • Operatori di confronto / relazionali
  • Operatori logici
  • Imposta operatori
  • Operatori utilizzati per negare le condizioni

L'unione viene utilizzata per combinare i risultati di due o più istruzioni Select. Tuttavia eliminerà le righe duplicate. L'unione è un operatore di gruppo.

Unionviene utilizzato per combinare i risultati di due o più istruzioni Select. Tuttavia eliminerà le righe duplicate

Union All l'operazione è simile a Union, ma mostra anche le righe duplicate.

I trigger vengono utilizzati per mantenere l'integrità del database. Per verificare che il trigger sia attivato o meno, puoi archiviare i log di controllo.

I trigger non possono essere richiamati su richiesta. Vengono richiamati quando un'azione associata (inserimento, eliminazione e aggiornamento) avviene sulla tabella su cui sono definiti. I trigger vengono utilizzati per applicare le regole aziendali, l'auditing e anche per i controlli di integrità referenziale.

Innanzitutto, ottieni il requisito funzionale. Quindi, comprendere la struttura della tabella, i join, i cursori e i trigger, la stored procedure utilizzata e altri parametri. Successivamente, puoi scrivere un test-case con valori diversi come input per questi oggetti.

Il test DB implica il test di componenti di back-end che non sono visibili agli utenti. Include componenti di database e sistemi DBMS come MySQL e Oracle.

Il test front-end implica il controllo delle funzionalità di un'applicazione e dei suoi componenti come moduli, grafici, menu, report, ecc. Questi componenti vengono creati utilizzando strumenti di sviluppo front-end come VB.net, C #, Delphi, ecc.

Il processo per eseguire il test del database è simile al test di altre applicazioni. Il test del DB può essere descritto con i seguenti processi chiave:

  • Predisporre l'ambiente
  • Esegui un test
  • Controlla il risultato del test
  • Convalida in base ai risultati attesi
  • Riferire i risultati alle rispettive parti interessate

Varie istruzioni SQL vengono utilizzate per sviluppare i casi di test. L'istruzione SQL più comune utilizzata per eseguire il test DB è l'istruzione select. Oltre a queste varie istruzioni DDL, DML, DCL possono essere utilizzate anche.

Example - Crea, Inserisci, Seleziona, Aggiorna, ecc.

Una vista è una tabella che non esiste realmente di per sé ma è invece derivata da una o più tabelle di base. In altre parole, non esiste un file memorizzato che rappresenti direttamente la vista, invece una definizione di vista è memorizzata nel dizionario dei dati.

La crescita e la ristrutturazione dei tavoli di base non si riflettono nelle viste. In questo modo la vista può isolare gli utenti dalle modifiche nel database. Quindi tiene conto dell'indipendenza logica dei dati.

Specifica le viste utente e le relative mappature allo schema concettuale.

È un processo di scomposizione di una tabella in più tabelle senza perdere alcuna informazione. La normalizzazione viene eseguita per raggiungere i seguenti obiettivi:

  • Per ridurre al minimo la ridondanza.
  • Per ridurre al minimo l'inserimento, la cancellazione e l'aggiornamento delle anomalie.

L'indicizzazione è una tecnica per determinare la velocità con cui è possibile trovare dati specifici. Viene utilizzato per l'ottimizzazione delle prestazioni delle query. L'indicizzazione può essere dei seguenti tipi:

  • Indicizzazione in stile di ricerca binaria
  • Indicizzazione B-Tree
  • Indicizzazione di elenchi invertiti
  • Tabella residente in memoria
  • Indicizzazione delle tabelle

SQL è un linguaggio di query strutturato progettato specificamente per le operazioni di accesso ai dati su strutture di database relazionali normalizzate.

La differenza principale tra SQL e altri linguaggi di programmazione convenzionali è che le istruzioni SQL specificano quali operazioni sui dati devono essere eseguite piuttosto che come eseguirle.

Le stored procedure vengono utilizzate per eseguire un'operazione definita dall'utente. Una procedura memorizzata può avere una serie di istruzioni SQL composte. Una procedura memorizzata esegue i comandi SQL e restituisce il risultato al client.

PL / SQL utilizza i cursori per tutte le istruzioni di accesso alle informazioni del database. Il linguaggio supporta l'uso di due tipi di cursori: implicito ed esplicito.

Cold Backup- Il backup a freddo è noto come eseguire il backup di file di database, registri di ripristino e file di controllo quando l'istanza viene arrestata. Questa è una copia di file, di solito dal disco direttamente al nastro. È necessario arrestare l'istanza per garantire una copia coerente.

Se viene eseguito un backup a freddo, l'unica opzione disponibile in caso di perdita di file di dati è il ripristino di tutti i file dall'ultimo backup. Tutte le modifiche eseguite dopo la perdita dell'ultimo backup.

Hot Backup- Alcuni database non possono essere arrestati mentre si effettua una copia di backup dei file, quindi il backup a freddo non è un'opzione disponibile. Per questi tipi di database utilizziamo il backup a caldo.

La sottoquery SQL è un mezzo per interrogare due o più tabelle contemporaneamente. La sottoquery stessa è un'istruzione SQL SELECT contenuta nella clausola WHERE di un'altra istruzione SQL SELECT e separata da parentesi. Alcune sottoquery hanno strutture di join SQL equivalenti, ma le sottoquery correlate non possono essere duplicate da un join

In tal caso, è necessario testare i seguenti aspetti:

  • Dipendenze multivalore
  • Dipendenze funzionali
  • Chiavi candidate
  • Chiavi primarie
  • Chiavi esterne

È possibile accedere al database ed eseguire una query SQL pertinente. In WinRunner, puoi utilizzare la funzione checkpoint del database. Se l'applicazione fornisce la funzione di visualizzazione, è possibile verificare la stessa dal front-end.

Il test basato sui dati è definito come un processo di test di automazione in cui l'applicazione verrà testata con più dati di test. È semplice e facile che ripetere il test in cui il tester si siede davanti al sistema e inserisce manualmente nuovi valori di input diversi dall'interfaccia front-end.

Dopo aver eseguito i casi di test e trovato i difetti che sono stati già rilevati e corretti. La riesecuzione dello stesso test con valori di input diversi per confermare che il difetto originale è stato rimosso con successo si chiama Re-testing.

Il nuovo test è anche chiamato Data Driven Testing con una piccola differenza:

  • Retesting - È un processo di test manuale mentre il test delle applicazioni viene eseguito con un intero nuovo set di dati.

  • Data-driven Testing- È un processo di test di automazione in cui l'applicazione verrà testata con più dati di test. È semplice e facile che ripetere il test in cui il tester si siede davanti al sistema e inserisce manualmente nuovi valori di input diversi dall'interfaccia front-end.

Esistono quattro tipi di test basati sui dati:

  • Invio dinamico dei dati di prova tramite tastiera
  • Test basati sui dati tramite file flat .txt, .doc
  • Test basati sui dati tramite oggetti front-end
  • Test basati sui dati tramite foglio Excel

Il test delle prestazioni è una tecnica di test del software per determinare le prestazioni di un sistema in termini di velocità, sensibilità e stabilità sotto un carico di lavoro pesante.

I seguenti punti chiave devono essere considerati durante l'esecuzione del test di ripristino del database:

  • Intervallo di tempo in cui si verificano cambiamenti o modifiche nel sistema di database.

  • Il periodo entro il quale desideri che venga eseguito il tuo piano di recupero.

  • La sensibilità dei dati nel sistema di database. Più i dati sono critici, più regolarmente sarà necessario testare il software.

I seguenti strumenti vengono utilizzati per generare dati di test:

  • Data Factory
  • Generatore di dati DTM
  • Dati Turbo

Esistono due tipi di backup che possono essere utilizzati:

  • Physical Backups- Il backup fisico include l' esecuzione del backup utilizzando strumenti di backup di terze parti come Veritas net back, IBM Tivoli Manager o backup del gestore utente utilizzando le utilità del sistema operativo.

  • Logical Backups - Il backup logico del database include il backup di oggetti logici come tabelle, indici, procedure, ecc.

Uno strumento comune per eseguire il backup dei dati è Oracle Recovery Manager (RMAN), un'utilità Oracle per eseguire il backup del database.

Le seguenti azioni vengono eseguite nel test di ripristino del database:

  • Test del sistema di database
  • Test dei file SQL
  • Test di file parziali
  • Test del backup dei dati
  • Test dello strumento di backup
  • Verifica dei backup del registro

Il test di sicurezza del database viene eseguito per trovare i buchi nei meccanismi di sicurezza e anche per trovare le vulnerabilità o le debolezze del sistema di database.

Il test di sicurezza del database viene eseguito per verificare i seguenti aspetti:

  • Authentication
  • Authorization
  • Confidentiality
  • Availability
  • Integrity
  • Resilience

La minaccia SQL Injection è il tipo più comune di attacco in un sistema di database in cui le istruzioni SQL dannose vengono inserite nel sistema di database ed eseguite per ottenere informazioni critiche dal sistema di database. Questo attacco sfrutta le scappatoie nell'implementazione delle applicazioni utente. Per evitare che ciò avvenga, i campi di input dell'utente devono essere gestiti con cura.

I seguenti strumenti possono essere utilizzati per eseguire i test di sicurezza del database: Zed Attack Proxy, Paros, Social Engineer Toolkit, Skipfish, Vega, Wapiti e Web Scarab.

Le sfide comuni che si devono affrontare durante l'esecuzione del test del database sono le seguenti:

  • L'ambito del test è troppo ampio
  • Database di test ridimensionato
  • Cambiamenti nella struttura del database
  • Piani di test complessi
  • Buona conoscenza di SQL