Il testing dei database consiste in test di tipo black box, white box e ACID (atomicità, coerenza, isolamento e durabilità). In questa guida ti fornirò definizioni, spiegazioni pratiche ed esempi.
Cos'è il Database Testing?
Il database testing, o testing del backend o testing dei dati, si differenzia dal suo omologo dell'interfaccia utente perché non si preoccupa affatto dell’interfaccia visiva del software di sistema. Il suo interesse principale è verificare che tutti i processi interni funzionino correttamente e che sia possibile recuperare dati rapidamente, accuratamente e in modo sicuro.
Il database testing testa lo schema del database, le tabelle e i trigger del database. Mette il database sotto stress e può includere l’esecuzione di query complesse per testarne a fondo le capacità e la reattività. Inoltre, testa i sistemi di gestione di database (DBMS) come Oracle e SQL Server.
Lettura correlata: I VANTAGGI DEL NEGATIVE TESTING
Cos'è lo Schema di un Database?
Uno schema di database è una struttura logica che definisce l’organizzazione e le relazioni dei dati all’interno di un database. Rappresenta il modello secondo il quale i dati vengono memorizzati, accessibili e manipolati in un DBMS. Lo schema descrive i tipi di dati, i vincoli e le relazioni tra le entità del database, come tabelle, viste, indici e trigger.
Lo schema del database è fondamentale per garantire l’integrità e la coerenza dei dati all’interno di un database. Offre agli sviluppatori e agli amministratori di database un quadro di riferimento per organizzare e strutturare i dati in modo significativo. Aiuta anche a garantire che i dati archiviati nel database soddisfino requisiti specifici, come la validazione, la sicurezza e l’accessibilità dei dati. Le organizzazioni possono usare uno schema di database per assicurare l’organizzazione e l’ottimizzazione dei propri database per la gestione efficiente dei dati, migliorando le operazioni aziendali e il processo decisionale.
Perché il Database Testing è Importante?
Il database testing è importante perché
- Alcuni errori possono essere individuati solo tramite database testing
- Alcune condizioni d’uso possono essere testate solo a livello di database
- Il database testing migliora la stabilità e la sicurezza
- Il database testing assicura coerenza
Esempio di Funzione di Database
Immagina di aprire un’applicazione di banking online sul tuo telefono (o, per davvero, apri l’app di banking sul telefono). Ora, trasferisci una piccola somma di denaro dal tuo conto corrente al conto risparmio. Quando hai finito, pensa a tutte le operazioni che sono dovute avvenire dietro le quinte in quei pochi secondi.
- L’app ha inviato le informazioni della transazione al database.
- Nessuna delle tue informazioni (cioè denaro) è stata persa nel tragitto.
- L’app non si è bloccata e il trasferimento è stato completato senza errori.
- La transazione è avvenuta in modo sicuro.
- Il tuo denaro ora è comodamente nel conto risparmio (congratulazioni!)
Tutte queste funzioni avvengono a livello di database. Il processo di database testing è importante perché se un sistema di database fallisce in modo critico, il sistema si blocca. Nessuna informazione può essere inviata, recuperata, trasferita o protetta. L’applicazione può sembrare funzionare in superficie (puoi navigare tra le schermate e preparare le transazioni) ma non succederà nulla di significativo.
All’esterno sembra tutto a posto, ma internamente è un disastro.

Il database testing garantisce che non ci siano disastri. Niente incendi, nessun blocco e nessun denaro scomparso. È nell’interesse di tutti che venga eseguito il database testing. Ecco perché ho scritto questa guida completa per aiutarti a sentirti sicuro che, una volta finito, ogni cosa sia stata testata a fondo.
Principi del Database Testing
La parola "principi" potrebbe sembrare più un “perché” che un “come”. Fidati, questi sono due concetti importanti e pratici.
- Proprietà ACID
- Atomicità
- Coerenza
- Isolamento
- Durabilità
- Integrità dei dati
Cosa sono le Proprietà ACID?
Questa è la forma di acid più sicura che utilizzerai mai. Niente guanti necessari: le proprietà ACID stanno per Atomicità, Coerenza, Isolamento e Durabilità. Ogni transazione nel database testing deve rispettare questi principi.
Una transazione è un insieme di compiti. Anche una transazione reale semplice, come il bonifico bancario che ho menzionato in precedenza, coinvolgerà diversi compiti di ordine inferiore. Le proprietà ACID sono presenti per confermare che ogni transazione sia completata accuratamente, integralmente e con integrità.
Proprietà ACID
- Atomicità stabilisce che ogni transazione deve essere trattata come un'unità atomica. In termini non molecolari, significa che ogni transazione deve essere completata completamente oppure fallisce. Considerare ogni transazione in questo modo evita la situazione spiacevole di un bonifico eseguito solo a metà. Sembra stressante, vero? Con l'atomicità, se la transazione viene completata solo a metà quando qualcosa va storto, l'intera transazione fallisce. Soldi restituiti. Niente stress.
- Consistenza richiede che il database rimanga coerente dopo una transazione. Nessuna transazione deve avere un impatto negativo su altri dati nel database. Depositando denaro sul tuo conto bancario non verrà prelevato nulla dal conto di qualcun altro.
- Isolamento previene l'incrocio dei flussi. Garantisce che, nel caso di più transazioni simultanee, ciascuna sia trattata come se fosse l'unica presente nel database. Nessuno confonderà le proprie informazioni con quelle di altri.
- Durabilità richiede che il database sia sufficientemente duraturo per mantenere tutte le ultime transazioni, anche in caso di guasto del sistema. Anche in questo caso, ci sono motivi pratici per esigere tanta affidabilità da un database. Se effettui un bonifico e il database si blocca dieci minuti dopo, come potresti sapere che devi rifare il bonifico? Avere requisiti così rigorosi previene confusione da parte degli utenti finali.
Integrità dei dati
L'integrità dei dati è la pratica di verificare che tutti i dati recenti siano aggiornati ovunque. Ci sono quattro elementi distinti che si combinano per confermare che i dati siano integri. Per un alto livello di integrità dei dati, un tester QA deve confermare che:
- I dati siano verificabili
- I dati siano recuperabili
- I dati siano accurati
- I dati siano completi
Se i dati non soddisfano questi quattro requisiti, probabilmente non rispettano lo standard di integrità dei dati. Gli strumenti di gestione dei dati possono aiutare in questo, ma in definitiva spetta a te garantire la massima qualità dei dati.
Come ha sottolineato Huw Price nell’episodio del podcast The QA Lead intitolato Your Data Quality Sucks, garantire che i tuoi sistemi funzionino su dati di alta qualità e sicuri sta diventando sempre più importante, man mano che sempre più aziende costruiscono le proprie banche dati.
Linguaggio di Manipolazione dei Dati
Un Linguaggio di Manipolazione dei Dati (DML) è un linguaggio di programmazione utilizzato per manipolare i dati all'interno di un sistema di gestione di database. Il DML viene utilizzato principalmente per svolgere compiti come inserire, aggiornare, cancellare e recuperare dati da un database. In sostanza, il DML fornisce un insieme di comandi e funzioni che permettono agli utenti di interagire con i dati in un database, e di modificarli o recuperarli secondo criteri specifici. Il DML è una componente essenziale di qualsiasi sistema di database, consentendo agli utenti di effettuare operazioni sui dati senza dover comprendere la struttura o la tecnologia sottostante del database.
I comandi DML sono solitamente utilizzati insieme a un Linguaggio di Definizione dei Dati (DDL), che serve per creare e modificare oggetti del database come tabelle, viste e indici. DDL e DML costituiscono i componenti fondamentali di un sistema di database, consentendo agli utenti di creare, modificare e manipolare i dati in modo sicuro, efficiente e affidabile. L’uso del DML nella gestione dei database permette alle organizzazioni di archiviare, gestire e analizzare grandi quantità di dati, rendendolo uno strumento fondamentale per le aziende nell’attuale mondo guidato dai dati.
Tipi di test sui database
Ora che abbiamo trattato due dei principi fondamentali del testing sui database, possiamo passare ai diversi tipi di test. Probabilmente avrai già sentito parlare di alcuni di questi approcci. Ricorda, ti avevo detto che se conosci i test QA allora capirai facilmente anche i test sui database. Qui spiegherò come ciascuno di questi concetti si applica al testing sui database.
Ci sono tre tipi di test sui database:
- Strutturali
- Funzionali
- Non funzionali
All'interno di questi tre tipi di test sui database ci sono dei sottotipi. Non preoccuparti, spiegherò anche questi.
Testing strutturale
Il testing strutturale convalida gli elementi all’interno del repository di dati che vengono utilizzati per l’archiviazione delle informazioni. Questi elementi sono nascosti agli utenti finali e avvengono completamente dietro le quinte. I tester di database eseguiranno questi test scrivendo query SQL.
Test di mappatura dei dati
Mappare le strutture dei dati è il processo di stabilire connessioni tra due diversi modelli di dati. Conosciuto anche come test di schema, un test di mappatura dei dati valuterà sia il front end che il back end. Serve a garantire che i due comunichino correttamente tra loro.
Ad esempio, se stai compilando un modulo di registrazione su un sito web, una corretta mappatura dei dati prenderà il modulo web e lo trasferirà nel database. Il tuo nome, l'email e la password saranno memorizzati correttamente nei rispettivi campi. Il test della mappatura dei dati conferma che questo processo funzioni.
Esistono diversi strumenti di mappatura dei dati con cui lavora un tester QA. Un breve elenco di strumenti per la mappatura dei dati include:
Test delle Tabelle di Database
Il test delle tabelle esegue diversi controlli sulla struttura di mappatura dei dati. Verifica che i campi del front end e del back end siano compatibili tra loro. Convalida la lunghezza dei campi del database. E conferma se ci sono tabelle o colonne del database non mappate che è necessario gestire.
Validazioni del Server di Database
Le validazioni del server assicurano che la configurazione del server soddisfi i requisiti. Garantiscono inoltre che chiunque tenti di accedere ad aree specifiche del server di database abbia la corretta autorizzazione. Questo è un passaggio importante per mantenere il database sicuro per i suoi utenti. Infine, la validazione del server assicura che il server possa gestire il numero massimo di transazioni contemporaneamente.
Ad esempio, una validazione del server per un’app bancaria verificherebbe che il server possa gestire la transazione finanziaria di un determinato numero di utenti e che tutti gli utenti possano accedere solo alle proprie informazioni.
Test Funzionali
Porteremo il divertimento nei test funzionali. Davvero, lo faremo. I test funzionali riguardano il controllo che il database soddisfi le specifiche del cliente e che le azioni dell’utente finale siano coerenti con tali requisiti. Questo significa fingersi spesso l’utente finale. Non sembra divertente? Secondo me sì.
Test Black Box
Il test black box è una strategia di test del software in cui il design del sistema software da testare è sconosciuto al tester. Senza una conoscenza approfondita della progettazione del software, il tester si approccia al software con aspettative simili a quelle dell’utente finale.
Il test black box viene eseguito durante i test di database perché individua bug nei percorsi comuni che è probabile che l’utente finale incontri. È la verifica definitiva dal punto di vista dell’utente.
Abbiamo trattato il black box testing in modo approfondito nella nostra guida I 9 tipi di software testing che ogni QA Analyst dovrebbe conoscere.
Test White Box
Il white box testing è l’opposto del black box testing. Nel white box testing il membro QA comprende pienamente la struttura interna e la progettazione del software sottoposto a test.
Affronta il test come un ispettore. Il white box testing è a volte chiamato anche clear box testing perché il tester osserva le interazioni tra le unità durante il test del software. A differenza del black box testing, il white box tester non si concentra tanto sull'esperienza utente.
Unit Testing
L’unit testing è una tecnica di test del software che prevede la verifica di singole unità o componenti di un’applicazione in isolamento dal resto del sistema. Questo tipo di test viene utilizzato per testare singoli oggetti del database come tabelle, viste, stored procedure e funzioni. Testando questi oggetti in isolamento, gli sviluppatori possono garantire che ciascun oggetto funzioni come previsto.
I test di unità per i database implicano tipicamente la scrittura di test automatizzati che eseguono specifici comandi SQL su un oggetto o modulo del database e verificano che i risultati attesi siano restituiti. Ad esempio, un test di unità per una stored procedure potrebbe consistere nel passare un insieme di parametri di input alla procedura e verificare che l’output sia corretto. Utilizzando i test di unità in questo modo, gli sviluppatori possono essere certi che ogni oggetto del database si comporti come previsto e che qualsiasi modifica allo schema del database o al codice dell’applicazione non introduca conseguenze indesiderate o errori.
Test Non Funzionale
I test non funzionali non hanno alcun interesse per l’utente finale. Non che l’utente finale non sia importante. Semplicemente hanno altre cose di cui preoccuparsi. I test non funzionali verificano le prestazioni del database sotto carico, stress, e identificano possibili punti di ottimizzazione delle performance.
Load Testing
Il test di carico del database è una tipologia di test delle prestazioni che verifica che un carico di utenti non abbia un impatto drasticamente negativo sulle prestazioni del database. Il tester QA esegue una serie di query di carico e le ripete ancora e ancora per simulare una base utenti attiva.
Test di Stress
I test di stress sono test di carico, ma più intensi. Non vogliono solo vedere se il database rallenta, ma vogliono trovare il punto in cui può rompersi. Questo è molto più distruttivo. Quindi, è divertente.
Hai mai atteso con ansia l'uscita di un nuovo videogioco o di un nuovo telefono? Se sì, potresti aver provato ad accedere al sito web o all'app per fare l'acquisto e ti sei imbattuto in schermate di caricamento insolitamente lunghe, errori improvvisi e processi di acquisto falliti. Ecco, quello è un database sotto stress.
È diverso dal test di carico perché sottopone il database a un volume di traffico improvvisamente e inaspettatamente alto.
Test di Automazione del Database
Il test di automazione del database è diventato più popolare negli ultimi anni. Richiedere che il database venga testato manualmente richiederebbe troppo tempo, troppe persone e costerebbe semplicemente troppo.
Ci sono molti modi per eseguire test di automazione. Ecco un elenco di alcuni strumenti di gestione database che offrono funzionalità di test.
Elenco degli strumenti di gestione database
Testare un Database con le API
Un'API (Application Programming Interface) è un insieme di protocolli e standard che consente a diverse applicazioni software di comunicare tra loro. Con il testing dei database, un'API può collegarsi a un database e svolgere varie operazioni come inserimento, aggiornamento, eliminazione e recupero dei dati.
La relazione tra un'API e il test di database è che le API possono essere utilizzate per automatizzare e rendere più efficiente il processo di testing. Utilizzando un'API per collegarsi a un database, i tester possono automatizzare operazioni come l'inserimento, gli aggiornamenti e le cancellazioni dei dati e interrogare il database per recuperare dati e validare i risultati. Questo può ridurre sensibilmente il tempo e lo sforzo necessari per il test manuale e migliorare l'accuratezza e la coerenza dei risultati dei test.
Risorse aggiuntive
Dopo aver letto questo articolo, dovresti capire come eseguire i test sui database. Naturalmente, è impossibile coprire assolutamente tutto in un solo articolo. Ecco due risorse aggiuntive che potrebbero aiutarti a superare problemi specifici.
- Come fare un test di regressione su un database relazionale
- Come effettuare un test di performance su un'istanza di SQL Server
Cosa ne pensi?
Essere incaricato di testare un database può sembrare una grande responsabilità. Sono sicuro che potrai farcela. Ti senti più sicuro nell'approccio al test dei database? Fammelo sapere nei commenti!
