En databas är en kritisk komponent i varje applikation eller system. Att effektivt hämta och bearbeta information från databasen är avgörande för en smidig transaktionshantering.
Varje webbplats eller applikation som hanterar dynamisk data behöver antingen en databas eller ett API. Ett exempel är en e-handelsplattform där användare gör beställningar. Där krävs en databas för att spara produktinformation och användardetaljer.
Vad innebär databastestning?
Databastestning är en process som syftar till att bekräfta att en databas är korrekt och komplett. Denna typ av testning kan utföras med olika metoder, som kan vara helt automatiserade, manuella, eller en kombination av båda.
Under databastestning undersöks dataintegritet, databasschema, datamanipulering och databaskonsistens. Dessutom kontrolleras om databasen är kompatibel med den avsedda användarens hårdvara eller system.
Kvalitetssäkrare eller testingenjörer som specialiserar sig på databaser utför ofta databastester. Dessa individer behöver ha goda kunskaper om databaser och veta hur man använder olika verktyg och analyserar testresultat.
Fördelarna med databastestning
- Kontroll av funktionalitet: Databastester säkerställer att databasen uppfyller de funktionskrav som utvecklarna ställt upp.
- Förebyggande av dataförlust: Genom noggrann databastestning kan potentiella fel som kan leda till dataförlust identifieras i tid.
- Säkerhetsförbättring: Databastester hjälper till att hitta och åtgärda säkerhetsbrister som hackare kan utnyttja.
- Prestandaoptimering: Genom att testa databasen kan flaskhalsar som saktar ner systemets prestanda upptäckas och åtgärdas.
Olika typer av databastestning
- Funktionstestning: Kontrollerar om systemet uppfyller de önskade funktionerna. Till exempel: kan användare skapa, läsa, uppdatera och radera data?
- Prestandatestning: Undersöker hur databasen reagerar på olika åtgärder, t.ex. hur snabbt data hämtas när en användare skickar ett formulär. Den kontrollerar även databasens skalbarhet.
- Dataintegritet: Kontrollerar om databasen följer fördefinierade regler, relationer och begränsningar.
- Datavalidering: Verifierar att datan i databasen är giltig.
- Säkerhetstestning: Identifierar potentiella sårbarheter som kan kompromettera systemets säkerhet och rekommenderar åtgärder för att rätta till dem.
OBS: Det finns fler typer av databastester beroende på vilken typ av information som lagras och organisationens behov.
Praktiska exempel på databastestning
Låt oss ta en e-handelsbutik som exempel. Följande kan testas i databasen:
- Automatiska tester kan skapas för att säkerställa att nya användare kan skapa konton och att informationen lagras korrekt i databasen.
- Tester kan verifiera transaktioner, kuponger och rabatter. En fullständig transaktion ska registreras korrekt i databasen, och kuponger ska återspeglas i prisjusteringar.
- Databasens prestanda under hög belastning kan testas, till exempel när många användare samtidigt besöker webbplatsen.
Typer av data att testa
Om du har en databas och behöver testa den, kan det vara svårt att veta var du ska börja. Här är några viktiga områden som bör prioriteras:
#1. Datamappning
Programvaror är designade så att data flödar mellan användargränssnittet och databasen. Datamappningstestning kontrollerar att formulär i användargränssnittet är korrekt länkade till motsvarande tabeller i databasen.
Ett typiskt formulär låter användare utföra CRUD-operationer (Skapa, Hämta, Uppdatera och Radera). Testet kontrollerar att åtgärder i användargränssnittet korrekt utlöser motsvarande CRUD-operation i databasen. Till exempel, när en ny användare skapar ett konto, ska data läggas till i databasen (skapa operation).
#2. ACID-egenskaper
Tester kan utföras för att säkerställa att transaktioner följer ACID-principerna (Atomicitet, Konsistens, Isolering och Hållbarhet). Så här fungerar dessa principer:
- Atomicitet: En transaktion ska antingen slutföras helt eller inte alls.
- Konsistens: Testet ska säkerställa att databasens tillstånd alltid är giltigt och att alla begränsningar uppfylls.
- Isolering: Varje transaktion ska genomföras oberoende av andra för att förhindra att de påverkar varandra.
- Hållbarhet: Data ska inte gå förlorad efter att en transaktion har genomförts.
#3. Dataintegritet
Dataintegritet säkerställer att systemet använder samma data för olika transaktioner och att den senaste informationen alltid visas. Ett bra test kontrollerar att alla triggers är aktiverade och uppdaterar dataposter korrekt. Det bör också kontrollera att duplicerade databaser är synkroniserade med originalen.
#4. Affärsregler/principer
Databaser bör möjliggöra implementering av affärslogik. Testning kan använda lagrade procedurer, triggers och relationsbegränsningar för att kontrollera om databasen är synkroniserad med affärsprinciperna.
Hur utförs databastestning?
Databastestning kan genomföras manuellt, automatiskt eller med en kombination av båda. Oavsett metod följer du vanligtvis dessa steg:
- Kravanalys: Testteamet analyserar databasstrukturen, prestandakrav, datarelationer och datascheman. Analysen hjälper till att definiera testomfattningen, testmiljön och testmålen.
- Testmiljö: En testmiljö som liknar produktionsmiljön kan användas, eller en separat databasinstans kan skapas för att säkerställa en isolerad testmiljö.
- Förberedelse av testdata: Testdata skapas för att täcka olika scenarier, som felsituationer, gränsfall och normalfall. Relevanta datamängder som speglar verkliga situationer väljs också.
- Testkörning: Testteamet kör testerna manuellt eller med automatiska skript. Testtyp beror på de slutliga målen.
- Resultatkontroll: Testingenjörerna kontrollerar om testerna fungerar som förväntat. De kan även justera testerna baserat på insamlade data.
- Testrapportering: Ingenjörerna presenterar sina resultat i rapporter som kan vara enkla eller detaljerade. Rapporterna visar var fel uppstår och vad som orsakar dem.
Databastestverktyg kan användas för att testa databasens funktionalitet och integritet, vilket ger fördelar som:
- Tidsbesparing: Du behöver inte skriva tester från grunden. Du kan integrera verktyget med din databas och börja testa direkt.
- Avancerade funktioner: Vissa verktyg har avancerade funktioner som gör det enklare att testa databasen noggrant.
- Bred täckning: De flesta databastestverktyg är utformade för att testa olika typer av databaser, inklusive både SQL- och NoSQL-databaser.
Vissa verktyg är gratis medan andra kräver betalning. Här är några av de mest rekommenderade databastestverktygen:
#1. HammerDB
HammerDB är ett verktyg för benchmark- och lasttestning som är kompatibelt med de flesta databaser, inklusive Microsoft SQL Server, Oracle Database, MySQL, IBM Db2, PostgreSQL och MariaDB.
- Multiplattform: HammerDB fungerar på både Linux- och Windows-baserade operativsystem.
- Öppen källkod: All källkod är tillgänglig på GitHub.
- Webbtjänst: HammerDB kan användas som CLI, GUI eller webbtjänst. Webbtjänstalternativet gör det möjligt att köra verktyget som en REST-klient med ett HTTP-gränssnitt.
- Stöd för Stegbelastning: Denna avancerade funktion låter dig automatiskt variera belastningen på databasen över tid.
- Docker-stöd: HammerDB stöder snabb distribution och testning av databaser i Docker.
#2. DbFit
DbFit är ett testramverk för databaser som är designat för testdriven utveckling. Det kan automatiseras med CLI-byggverktyg eller en Java IDE.
Viktiga egenskaper:
- Öppen källkod och gratis: All källkod är tillgänglig på GitHub.
- Komplett lösning: Du kan skriva, köra och hantera alla tester från webbläsaren.
- Lättlästa tester: Testerna är skrivna i tabeller, vilket gör dem lätta att förstå (de flesta verktyg använder xUnit-stil).
- Stöd för stora databaser: DbFit fungerar med stora databaser som HSQLDB, SQL Server, Oracle, Derby, MySQL och PostgreSQL.
- Solid grund: DbFit är byggt på FitNesse, ett välkänt ramverk.
- Kryptering av databaslösenord: DbFit låter dig kryptera lösenord med en krypteringsnyckel.
#3. tSQLt
tSQLt är ett enhetstestverktyg för SQL Server. Det testar olika delar av din databaskod för att säkerställa att de fungerar som förväntat och kan användas med T-SQL.
Viktiga egenskaper:
- Automatisk testkörning inom transaktioner: Detta minskar saneringsarbete eftersom alla tester är oberoende.
- Utskrift i XML eller vanlig text: tSQLt är kompatibelt med olika utvecklingsverktyg, vilket ger dig möjlighet att välja önskad utdata.
- Möjlighet att fejka tabeller och vyer: Detta isolerar koden du vill testa och minskar svarstiden.
- Testgruppering: Du kan gruppera tester i ett schema för att underlätta användningen av vanliga inställningsmetoder.
#4. DbUnit
DbUnit är ett JUnit-tillägg som är designat för att testa databasdrivna projekt. Verktyget säkerställer att din databas befinner sig i ett känt tillstånd mellan testerna.
Viktiga egenskaper:
- Lätt att använda: DbUnit har omfattande dokumentation som hjälper dig att testa din databas.
- Dataverifiering: Metoden `Assertion` kan användas för att kontrollera om två datamängder eller tabeller innehåller samma data.
- Anpassade testfall: Du kan åsidosätta standardmetoden `setUp()` i JUnit och ställa in anpassade åtgärder för din databas.
Slutsats
Förhoppningsvis har du nu en bättre förståelse för databastestning och vilka metoder och verktyg du kan använda. Testning bör vara en kontinuerlig process, särskilt när du lägger till nytt innehåll i databasen. Valet av testteknik beror på dina mål och databasens karaktär.
Ta gärna en titt på vår artikel om databasskärning.