Forstå databasetesting, fordeler, teknikker [+4 Tools]

En database er en avgjørende del av en applikasjon/system. Henting og behandling av data fra en database bør aldri kompromitteres, da det gjenspeiler hvor enkelt det er å behandle transaksjoner.

Alle nettsteder/applikasjoner som serverer dynamiske data trenger en database eller et API. Hvis du for eksempel har en e-handelsplattform der brukere behandler bestillinger på nettet, trenger du en database for å lagre produkt- og brukerdetaljer.

Hva er databasetesting?

Databasetesting er prosessen med å verifisere riktigheten og fullstendigheten til en database. Ulike tilnærminger brukes til å teste en database, og de kan være helautomatiserte, manuelle eller en kombinasjon av begge.

Databasetesting innebærer å teste dataintegriteten, databaseskjemaet, datamanipulering og databasekonsistens. Slike tester kan også sjekke om den aktuelle databasen er kompatibel med eksisterende maskinvare eller systemer til de tiltenkte brukerne.

Databasetesting kan utføres av kvalitetssikringsansvarlige eller testingeniører som er spesialiserte på databaser. Slike individer må inneha sterke databaseferdigheter eller kunne bruke ulike verktøy og tolke resultatene.

Fordeler med databasetesting

  • Sjekker om appdatabasen oppfyller funksjonskravene: Når utviklere designer en database, har de visse funksjonelle mål de ønsker å oppfylle. Databasetesting sjekker om disse målene er nådd.
  • Bidrar til å forhindre tap av data: En typisk database kan lagre massevis av informasjon, fra bestillinger til personlige detaljer. En grundig databasetesting kan identifisere om noen feil i databasen kan forårsake tap av data.
  • Sikre databasens sikkerhet: Systemer og nettapplikasjoner risikerer å bli hacket. Databasetesting hjelper til med å identifisere noen sårbarheter som hackere kan bruke og lappe dem før angrep skjer.
  • Bidrar til å forbedre ytelsen til applikasjonen/systemet: En god database skal hente og behandle informasjon raskt. Testing av databasen kan bidra til å identifisere noen av flaskehalsene som bremser systemets ytelse.

Typer databasetesting

  • Funksjonstesting: Denne testen verifiserer om systemet oppfyller funksjonskravene. Tillater det for eksempel brukere å opprette, lese, oppdatere og slette data i databasen?
  • Ytelsestesting: Denne testtypen sjekker hvordan databasen reagerer på ulike handlinger. For eksempel, hvor lang tid tar det å hente data når en bruker sender et skjema? Den sjekker også for databasens skalerbarhet.
  • Dataintegritet: En ideell database bør ha forhåndsdefinerte prinsipper, relasjoner og begrensninger. Dataintegritetstester kontrollerer om dataene er i samsvar med slike prinsipper.
  • Datavaliditet: Denne testen sjekker om dataene i DB er gyldige.
  • Sikkerhetstesting: Denne typen databasetesting sjekker for eventuelle sårbarheter som kan kompromittere systemets sikkerhet. Noen verktøy kan til og med anbefale måter å fikse disse sårbarhetene på.
  8 skannerapper for å digitalisere gamle bilder

NB: Det finnes flere typer databasetesting, avhengig av type informasjon som lagres og organisasjon.

Praktiske eksempler på databasetesting

Vi skal ta et praktisk eksempel på en e-handelsbutikk som lar folk handle på nett. Du kan teste følgende i databasen;

  • Du kan lage automatiske tester som sjekker om nye brukere kan opprette nye kontoer og deres detaljer legges til databasen.
  • Du kan ha tester som bekrefter transaksjoner, kuponger og rabatter. For eksempel bør en fullstendig transaksjon registreres i databasen. Hvis det finnes kuponger, bør det å legge til dem gjenspeiles i databasen, og prisene bør oppdateres tilsvarende.
  • Test ytelsen til databasen. For eksempel, hvis vi har mange brukere på nettstedet samtidig, bør du teste om databasen kan håndtere belastningen.

Datatyper du bør teste

Du vet kanskje ikke hvor du skal begynne hvis du får en database og blir bedt om å teste den. Dette er områder av bekymring i databasetesting;

#1. Datakartlegging

Programvareapplikasjoner/-systemer er utformet slik at data går fra front-end (UI) til back-end (database) og omvendt. Datakartleggingstesting sjekker om UI-skjemaene er konsekvent tilordnet med databasetabellene.

Et typisk skjema lar brukere utføre CRUD-operasjoner (Create, Retrieve, Update and Delete). Denne testen sjekker også om handlinger på frontenden ber om en CRUD-operasjon på bakenden (databasen). For eksempel, hvis en ny bruker oppretter en konto og sender inn et skjema, bør disse dataene legges til (opprett handling) i databasen.

#2. SYRE egenskaper

Du kan teste at en transaksjon samsvarer med ACID-egenskapene (atomisitet, konsistens, isolasjon og holdbarhet). Slik fungerer ACID-egenskaper;

  • Atomitet: Et atomsystem må fullføre alle transaksjonene eller ingen i det hele tatt.
  • Konsistent: Testen må sikre at databasens tilstand alltid er gyldig. Det bør også sikre at alle begrensninger er oppfylt.
  • Isolasjon: Hver testtransaksjon skal utføres uavhengig av hverandre. En slik tilnærming sikrer at ingen transaksjon påvirker en annen.
  • Holdbarhet: Det skal ikke være tap av data når en transaksjon er begått.

#3. Dataintegritet

Dataintegritet sikrer at systemet bruker de samme dataene til å utføre ulike transaksjoner. Et system skal alltid vise/reflektere det siste datasettet. En god test bør sjekke at alle utløsere er på plass og i stand til å oppdatere dataposter. Testen bør også sjekke om de dupliserte databasene er synkronisert med originalene.

#4. Forretningsregler/-prinsipper

Databaser skal tillate utviklere å implementere forretningslogikk. Noen funksjoner du kan bruke til å teste om databasen er synkronisert med forretningsprinsippene er lagrede prosedyrer, utløsere og relasjonsbegrensninger.

  Slik gjenoppretter du MSN-hjemmesiden

Hvordan utføres databasetesting?

Som nevnt kan du manuelt teste databasen din, aktivere automatisk testing eller kombinere begge tilnærmingene. Uavhengig av tilnærmingen du velger, er dette trinnene du sannsynligvis vil følge;

  • Kravanalyse: Testteamet/ingeniørene analyserer databasestrukturen for å bestemme ytelseskravene, datarelasjonene og dataskjemaet. Denne analysen hjelper dem med å definere testomfanget og bestemme testmiljøet og testmålene.
  • Sett opp testmiljøet: Du kan bruke et testmiljø som ligner på produksjonsmiljøet ditt. Alternativt kan du opprette en egen databaseforekomst, og sikre at testen utføres i et isolert miljø.
  • Forberedelse av testdata: Testen er designet for å dekke ulike scenarier som feiltilstander, grensetilfeller og normale tilfeller. Passende datasett som reflekterer virkelige scenarier velges også i denne fasen.
  • Testutførelse: Testteamet kjører testene manuelt eller setter skriptene for automatiske tester. Testens art vil avhenge av sluttmålene.
  • Kontrollere og validere resultater: Testingeniørene sjekker om testene går som forventet. De kan også finjustere testene basert på dataene som samles inn.
  • Testrapportering: Det siste trinnet er der ingeniørene presenterer funnene sine. Rapportene kan være enkle, som ja eller nei svar, eller detaljerte rapporter som viser hvor feil oppstår og hva som forårsaker dem.

Du kan bruke et databasetestverktøy for å teste funksjonaliteten og integriteten til databasen. Ting er grunnene til at du kan vurdere et databasetestingsverktøy;

  • Spar tid: Du trenger ikke skrive tester fra bunnen av. Integrer databasetestverktøyet med databasen og begynn å teste den umiddelbart.
  • Dra nytte av avanserte testfunksjoner: Noen DB-testverktøy har avanserte funksjoner som gjør det enkelt å teste databasen din grundig. Noen av testnivåene du oppnår mens du bruker disse verktøyene kan ikke oppnås gjennom manuelle tester.
  • Nyt bred dekning: De fleste DB-testverktøy er utviklet for å teste forskjellige databaser. Du kan finne et verktøy som tester både SQL- og NoSQL-databaser.

Noen av disse databasetestingsverktøyene er gratis, mens andre er betalt. Sjekk ut anmeldelser av noen av de beste du kan bruke i dag;

#1. HammerDB

HammerDB er en programvare for benchmarking og lasting av testing som fungerer med de fleste databaser. Du kan bruke den med Microsoft SQL Server, Oracle Database, MySQL, IBM Db2, PostgreSQL og MariaDB.

  • Multiplattform: Du kan bruke HammerDB på Linux-baserte og Windows-operativsystemer.
  • Åpen kildekode: All HammerDBs kildekode er åpen kildekode og tilgjengelig på GitHub.
  • HammerDB som en webtjeneste: Du kan bruke HammerDB som en CLI, en GUI eller en webtjeneste. Nettjenestealternativet lar brukere kjøre verktøyet som en REST-type klient med et HTTP-grensesnitt som kaller og henter utdata fra CLI.
  • Støtter Step Workloads: Med denne avanserte funksjonen kan du automatisk variere databasens belastning over tid. Denne tilnærmingen fokuserer mye på å overvåke databasens evne til å takle variasjoner i etterspørselen.
  • Docker-støtte: HammerDB støtter rask distribusjon og testing av databaser på Docker. Denne testmetoden bruker et Docker-bilde.
  Bitcoin vs. Bitcoin Cash: Hva er forskjellen?

#2. DbFit

DbFit er et rammeverk for databasetesting som er designet for testdrevet utvikling. Du kan automatisere det på et hvilket som helst CLI byggeverktøy eller en Java IDE.

Nøkkelegenskaper

  • Åpen kildekode og gratis: All kildekoden til DbFit er åpen kildekode og fritt tilgjengelig på GitHub.
  • En komplett løsning: DbFit lar deg skrive, utføre og administrere alle testene dine fra nettleseren.
  • Lesbare tester: Det er enkelt å lese testene på DbFit slik de er skrevet i tabeller (De fleste verktøy har tester i xUnit-stil.
  • Støtter store databaser: Du kan bruke DbFit med store databaser som HSQLDB, SQL Server, Oracle, Derby, MySQL og PostgreSQL.
  • Et solid rammeverk: Det er bygget på FitNesseet modent rammeverk med en stor tilhengerskare.
  • Databasepassordkryptering: Du trenger ikke lenger å lagre passordene dine i ren tekst, da DbFit lar deg kryptere dem ved hjelp av en kryptografisk nøkkel.

#3. tSQLt

tSQLt er et enhetstestingsverktøy for SQL Server. Dette åpen kildekode-verktøyet tester ulike deler av databasekoden for å sikre at de fungerer som forventet. Du kan også bruke dette verktøyet med T-SQL.

Nøkkelegenskaper

  • Kjører test automatisk innenfor transaksjoner: Denne tilnærmingen reduserer oppryddingsarbeidet ettersom den holder alle tester uavhengige.
  • Du kan generere utdata i XML eller ren tekst: tSQLt er kompatibel med ulike verktøy for kontinuerlig utvikling. Du kan dermed velge den ideelle utgangen avhengig av verktøyet du ønsker å integrere med.
  • Du kan forfalske tabeller og visninger: Denne tilnærmingen isolerer koden du vil teste og reduserer responstiden.
  • Støtter testgruppering: Du kan gruppere testene dine innenfor et skjema, noe som gjør det enkelt å bruke vanlige oppsettmetoder innenfor disse grupperingene.

#4. DbUnit

DbUnit er en JUnit-utvidelse som er designet for å teste databasedrevne prosjekter. Dette verktøyet setter DB-en din i kjente testkjøringer mellom testene, og unngår uhell der et problem med en testsak kan ødelegge hele databasen.

Nøkkelegenskaper

  • Enkel å bruke: DbUnit kommer med omfattende dokumentasjon som du kan følge med for å teste databasen.
  • Støtter dataverifisering: Du kan bruke den offentlige klassen Assertion-metoden for å finne ut om to datasett eller tabeller inneholder samme data.
  • Støtter tilpasset TestCase: DbUnit lar deg overstyre standard JUnit setUp()-metoden. Du kan deretter sette opp en egendefinert operasjon på databasen.

Konklusjon

Vi tror du nå forstår databasetesting og tilnærmingene og verktøyene du kan bruke. Testing er ikke en engangsprosess, men du bør alltid sørge for at du utfører den når du legger til nytt innhold i databasen. Testteknikken vil avhenge av sluttmålene dine og databasens natur.

Sjekk ut artikkelen vår om databasedeling.