Databastestning består av svartlådtestning, vitlådtestning och ACID (atomitet, konsekvens, isolering och beständighet). I den här guiden ger jag dig definitioner, instruktioner och exempel.
Vad är databastestning?
Databastestning, eller testning av serverdelen eller datatestning, skiljer sig från sin motsvarighet för användargränssnitt genom att inte alls fokusera på det visuella gränssnittet i systemprogramvaran. Det primära fokuset är att kontrollera att alla interna processer körs korrekt och kan hämta data snabbt, korrekt och säkert.
Databastestning testar databasschemat, tabellerna och databasutlösarna. Databasen utsätts för belastning och testningen kan innefatta körning av komplexa frågor för att grundligt testa dess funktioner och svarstid. Den testar även databashanteringssystem (DBMS) som Oracle och SQL Server.
Relaterad läsning: DE POSITIVA RESULTATEN AV NEGATIV TESTNING
Vad är ett databasschema?
Ett databasschema är en logisk struktur som definierar organiseringen av och relationerna mellan data i en databas. Det beskriver en ritning för hur data lagras, nås och bearbetas i ett DBMS. Schemat beskriver datatyperna, begränsningarna och relationerna mellan databasentiteter, såsom tabeller, vyer, index och utlösare.
Databasschemat är avgörande för att säkerställa datans integritet och konsekvens i en databas. Det ger utvecklare och databasadministratörer ett ramverk för att organisera och strukturera data på ett meningsfullt sätt. Det bidrar också till att säkerställa att data som lagras i databasen uppfyller specifika krav, såsom datavalidering, datasäkerhet och datatillgänglighet. Organisationer kan använda ett databasschema för att säkerställa organisering och optimering av sina databaser för effektiv datahantering, förbättrad verksamhet och bättre beslutsfattande.
Varför är databastestning viktigt?
Databastestning är viktigt eftersom
- Vissa buggar kan endast hittas genom databastestning
- Vissa användningsförhållanden kan endast testas i databasen
- Databastestning förbättrar stabiliteten och säkerheten
- Databastestning säkerställer konsekvens
Exempel på en databasfunktion
Föreställ dig att du öppnar en internetbank i telefonen (eller öppna faktiskt internetbanken i telefonen). Flytta nu en liten summa pengar från ditt transaktionskonto till ditt sparkonto. När du är klar kan du tänka på allt som behövde hända i bakgrunden under dessa få sekunder.
- Appen skickade transaktionsinformationen till databasen.
- Ingen av dina uppgifter (det vill säga PENGAR) försvann på vägen.
- Appen kraschade inte och misslyckades inte med att slutföra överföringen.
- Transaktionen genomfördes säkert.
- Dina pengar ligger nu tryggt på ditt sparkonto (grattis!)
Alla dessa funktioner sker i databasen. Databastestningsprocessen är viktig eftersom systemet stannar helt om ett databassystem drabbas av ett kritiskt fel. Ingen information kan skickas, hämtas, överföras eller skyddas. Applikationen kan verka fungera på ytan (du kan navigera mellan fönster och förbereda transaktioner), men inget betydelsefullt kommer att hända.
Allt ser bra ut på utsidan, men internt är det en katastrof.

Databastestning säkerställer att ingen katastrof inträffar. Ingen brand, inget stopp och inga saknade pengar. Det ligger i allas intresse att databastestning genomförs. Därför har jag skrivit en omfattande guide som hjälper dig att känna dig trygg med att allt har testats grundligt när du är klar.
Principer för databastestning
Ordet ”principer” kanske låter mer som ett varför än ett hur. Lita på mig, detta är två viktiga och praktiska koncept.
- ACID-egenskaper
- Atomitet
- Konsekvens
- Isolering
- Beständighet
- Dataintegritet
Vad är ACID-egenskaper?
Det här är den säkraste typen av ”syra” du någonsin kommer att använda. Inga handskar krävs; ACID-egenskaperna står för Atomitet, C konsekvens, Isolering och Dbeständighet. Varje enskild transaktion i databastestning måste uppfylla dessa principer.
En transaktion är en grupp uppgifter. Även en enkel transaktion i verkligheten, som banköverföringen jag nämnde tidigare, kommer att omfatta flera underordnade uppgifter. ACID-egenskaperna finns där för att bekräfta att varje transaktion slutförs korrekt, fullständigt och med bibehållen integritet.
ACID-egenskaper
- Atomicitet innebär att varje transaktion måste behandlas som en atomär enhet. Utan molekylära termer betyder det att varje transaktion måste slutföras helt, annars misslyckas den. Genom att behandla varje transaktion på detta sätt undviker man den röriga situationen där en penningöverföring bara slutförs till hälften. Det låter stressande, eller hur? Med atomicitet misslyckas hela transaktionen om den är halvvägs slutförd när något går fel. Pengarna tillbaka. Ingen stress.
- Konsekvens kräver att databasen förblir konsekvent efter en transaktion. Ingen transaktion får påverka andra data i databasen negativt. När du sätter in pengar på ditt bankkonto tas inga pengar ut från någon annans konto.
- Isolering förhindrar att dataströmmar korsas. Det säkerställer att varje transaktion, när flera transaktioner sker samtidigt, behandlas som om den vore den enda som pågår i databasen. Ingen får sin information sammanblandad med andra personers information.
- Beständighet kräver att databasen är tillräckligt beständig för att behålla alla de senaste transaktionerna, även vid ett systemfel. Återigen finns det praktiska skäl till att kräva sådan beständighet av en databas. Om du gör en penningöverföring och databasen slutar fungera tio minuter senare, hur skulle du veta att du måste göra överföringen igen? Så strikta krav förhindrar förvirring hos slutanvändarna.
Dataintegritet
Dataintegritet är metoden för att verifiera att alla senaste data är uppdaterade överallt. Det finns fyra separata delar som tillsammans bekräftar att data har integritet. För en hög nivå av dataintegritet måste en QA-testare bekräfta att:
- Data kan verifieras
- Data kan hämtas
- Data är korrekta
- Data är fullständiga
Om data inte uppfyller dessa fyra krav uppfyller de sannolikt inte standarden för dataintegritet. Verktyg för datahantering kan hjälpa till med detta, men i slutändan är det upp till dig att säkerställa högsta möjliga datakvalitet.
Som Huw Price påpekade i avsnittet av The QA Lead Podcast med titeln Din datakvalitet suger blir det allt viktigare att säkerställa att systemen körs med högkvalitativa och säkra data, i takt med att allt fler företag bygger upp egna databanker.
Datamanipuleringsspråk
Ett datamanipuleringsspråk (DML) är ett programmeringsspråk som används för att manipulera data i ett databashanteringssystem. DML används främst för att utföra uppgifter som att infoga, uppdatera, ta bort och hämta data från en databas. I praktiken tillhandahåller DML en uppsättning kommandon och funktioner som gör det möjligt för användare att interagera med data i en databas och ändra eller hämta dessa data enligt specifika kriterier. DML är en viktig komponent i alla databassystem och gör det möjligt för användare att utföra åtgärder på data utan att förstå databasens underliggande struktur eller teknik.
DML-kommandon används vanligtvis tillsammans med ett databasdefinitionsspråk (DDL), som används för att skapa och ändra databasobjekt som tabeller, vyer och index. DDL och DML utgör kärnkomponenterna i ett databassystem och gör det möjligt för användare att skapa, ändra och manipulera data på ett säkert, effektivt och tillförlitligt sätt. Användningen av DML i databashantering gör det möjligt för organisationer att lagra, hantera och analysera stora mängder data, vilket gör det till ett kritiskt verktyg för företag i dagens datadrivna värld.
Typer av databastestning
Nu när vi har gått igenom två av databastestningens grundprinciper kan vi gå vidare till olika testtyper. Du har troligen hört talas om några av dessa metoder tidigare. Kom ihåg att jag sa att om du förstod QA-testning skulle du utan problem kunna lära dig databastestning. Här förklarar jag hur vart och ett av dessa koncept tillämpas på databastestning.
Det finns tre typer av databastestning:
- Strukturell
- Funktionell
- Icke-funktionell
Inom dessa tre typer av databastestning finns undertyper. Oroa dig inte, jag förklarar dem också.
Strukturell testning
Strukturell testning validerar element i datalagret som används för datalagring. Dessa element är dolda för slutanvändarna och sker helt bakom kulisserna. Databastestare utför dessa tester genom att skriva SQL-frågor.
Testning av datamappning
Att mappa datastrukturer är processen att upprätta kopplingar mellan två olika datamodeller. Ett test av datamappning, som även kallas schematestning, validerar både klient- och serversidan. Det säkerställer att de två kommunicerar korrekt med varandra.
Om du till exempel fyller i ett registreringsformulär på en webbplats kommer korrekt datamappning att ta webbformuläret och överföra det till databasen. Ditt namn, din e-postadress och ditt lösenord lagras där de ska. Testning av datamappning bekräftar att processen fungerar.
Det finns flera verktyg för datamappning som en QA-testare arbetar med. En kort lista över verktyg för datamappning omfattar:
Testning av databastabeller
Tabelltestning utför flera kontroller av datamappningsstrukturen. Den kontrollerar att fälten i frontend och backend är kompatibla med varandra. Den validerar längden på databasfälten. Och den bekräftar om det finns några omappade databastabeller eller kolumner som du behöver åtgärda.
Validering av databasservrar
Servervalidering säkerställer att serverkonfigurationen uppfyller kraven. Den säkerställer också att alla som försöker få åtkomst till vissa delar av databasservern har rätt behörighet. Detta är ett viktigt steg för att hålla databasen säker och skyddad för dess användare. Slutligen säkerställer servervalideringen att servern kan hantera det maximala antalet transaktioner samtidigt.
En servervalidering för en bankapp skulle till exempel kontrollera att servern kan hantera den ekonomiska transaktionen för ett visst antal användare och att alla användare endast kan få åtkomst till sin egen information.
Funktionell testning
Vi ska göra funktionell testning rolig igen. Verkligen. Funktionell testning handlar om att kontrollera att databasen uppfyller klientens specifikationer och att slutanvändarens åtgärder överensstämmer med dessa krav. Det innebär att man ofta låtsas vara slutanvändaren. Låter inte det roligt? Jag tycker att det låter roligt.
Svartlådetestning
Svartlådetestning är en strategi för programvarutestning där utformningen av det programvarusystem som testas är okänd för testaren. Utan ingående kunskap om programvarans utformning kommer testaren att närma sig programvaran med förväntningar som liknar slutanvändarens.
Svartlådetestning utförs under databastestning eftersom den hittar buggar i vanliga användningsvägar som slutanvändaren sannolikt stöter på. Det är den ultimata testkörningen som slutanvändare.
Vi behandlade svartlådetestning utförligt i vår guide 9 typer av programvarutestning som varje QA-analytiker bör känna till.
Vitlådetestning
Vitlådetestning är den raka motsatsen till svartlådetestning. Vid vitlådetestning förstår QA-medlemmen helt den interna strukturen och utformningen av programvaran som testas.
De närmar sig testet som en inspektör. Vitlådetestning kallas ibland testning med genomskinlig låda eftersom testaren observerar interaktionerna mellan enheter när de testar programvaran. Till skillnad från vid svartlådetestning är en testare som utför vitlådetestning inte alls lika fokuserad på användarupplevelsen.
Enhetstestning
Enhetstestning är en teknik för programvarutestning som innebär att enskilda enheter eller komponenter i en applikation testas isolerat från resten av systemet. Denna testtyp används för att testa enskilda databasobjekt, såsom tabeller, vyer, lagrade procedurer och funktioner. Genom att testa dessa objekt isolerat kan utvecklare säkerställa att varje objekt fungerar som avsett.
Enhetstester för databaser innebär vanligtvis att man skriver automatiserade tester som kör specifika SQL-kommandon mot ett databasobjekt eller en databasmodul och verifierar att de förväntade resultaten returneras. Ett enhetstest för en lagrad procedur kan till exempel innebära att en uppsättning indataparametrar skickas till proceduren och att resultatet verifieras som korrekt. Genom att använda enhetstester på detta sätt kan utvecklare säkerställa att varje databasobjekt fungerar som förväntat och att ändringar i databasschemat eller programkoden inte leder till oavsiktliga konsekvenser eller fel.
Icke-funktionell testning
Icke-funktionell testning bryr sig inte alls om slutanvändaren. Inte för att slutanvändaren inte är viktig. De har helt enkelt andra saker att bekymra sig om. Icke-funktionella tester kontrollerar databasens prestanda under belastning och stress samt letar efter områden där prestandan kan optimeras.
Belastningstestning
Databasbelastningstestning är en typ av prestandatestning av databaser som kontrollerar att användarbelastning inte kommer att ha en dramatiskt negativ inverkan på databasens prestanda. Kvalitetssäkringstestaren kör en mängd belastningsfrågor och kör dem om och om igen för att simulera en aktiv användarbas.
Stresstestning
Stresstester är belastningstester, men kraftigare. De vill inte se om databasen blir långsammare, utan vill se var den kan gå sönder. Detta är betydligt mer destruktivt. Så det är ju roligt.
Har du någonsin ivrigt väntat på att ett nytt videospel eller en ny telefon ska släppas? Om du har det kanske du känner igen att du laddar webbplatsen eller öppnar appen för att genomföra ditt köp, och möts av ovanligt långa laddningsskärmar, oväntade felkoder och misslyckanden med att behandla din information. Där har du en databas under belastning.
Det skiljer sig från belastningstestning eftersom databasen utsätts för en plötslig och oväntat hög trafikvolym.
Automatiserad databastestning
Automatiserad databastestning har blivit allt populärare under de senaste åren. Att kräva att databasen testas manuellt skulle ta för lång tid, kräva för många personer och helt enkelt kosta för mycket pengar.
Det finns många sätt att utföra automatiserad testning. Här är en lista över några verktyg för databashantering som erbjuder testfunktioner.
Lista över verktyg för databashantering
Testa en databas med API
Ett API (programmeringsgränssnitt för applikationer) är en uppsättning protokoll och standarder som gör det möjligt för olika program att kommunicera med varandra. Vid databastestning kan ett API ansluta till en databas och utföra olika åtgärder, till exempel infoga, uppdatera, ta bort och hämta data.
Relationen mellan ett API och databastestning är att API:er kan användas för att automatisera och effektivisera testprocessen. Genom att använda ett API för att ansluta till en databas kan testare automatisera uppgifter som att infoga, uppdatera och ta bort data samt utföra frågor för att hämta data och validera resultat. Detta kan avsevärt minska den tid och arbetsinsats som krävs för manuell testning och förbättra testresultatens noggrannhet och konsekvens.
Ytterligare resurser
Efter att ha läst den här artikeln bör du förstå hur man utför databastestning. Naturligtvis är det omöjligt att täcka precis allt i en enda artikel. Här är ytterligare två resurser som kan hjälpa dig att lösa specifika problem.
- Så här regressionstestar du en relationsdatabas
- Så här utför du ett prestandatest mot en SQL Server-instans
Vad tycker du?
Att få ansvaret för att testa en databas kan kännas som ett stort ansvar. Jag är övertygad om att du klarar det. Känner du dig säkrare på din metod för databastestning? Berätta för mig i kommentarerna!
