Vejledning til databasetestning

Hvad er databasetestning?

Database test er en type softwaretest, der kontrollerer skemaet, tabellerne, udlรธsere osv. i den database, der testes. Det kontrollerer ogsรฅ dataintegritet og konsistens. Det kan involvere at oprette komplekse forespรธrgsler for at indlรฆse/stressteste databasen og kontrollere dens reaktionsevne.

Database test

Hvorfor databasetest er vigtigt?

Databasetest er vigtigt in software test fordi det sikrer, at datavรฆrdier og information modtaget og gemt i databasen er gyldige eller ej. Databasetest hjรฆlper med at spare datatab, gemmer afbrudte transaktionsdata og ingen uautoriseret adgang til informationen. Database er vigtig for enhver softwareapplikation, derfor skal testere have godt kendskab til SQL til databasetestning.

GUI'en lรฆgges normalt mest vรฆgt pรฅ af test- og udviklingsteammedlemmerne, da den grafiske brugergrรฆnseflade tilfรฆldigvis er den mest synlige del af applikationen. Det, der dog ogsรฅ er vigtigt, er at validere de oplysninger, der er kernen i applikationen, ogsรฅ kaldet DATABASE.

Lad os overveje en bankapplikation, hvor en bruger foretager transaktioner. Nu fra Database Testing eller DB Testing synspunkt fรธlgende, er tingene vigtige:

  1. Applikationen gemmer transaktionsoplysningerne i applikationsdatabasen og viser dem korrekt til brugeren.
  2. Ingen information gรฅr tabt i processen.
  3. Ingen delvist udfรธrt eller afbrudt operationsinformation gemmes af applikationen.
  4. Ingen uautoriseret person har tilladelse til at fรฅ adgang til brugerens oplysninger.

For at sikre alle disse ovennรฆvnte mรฅl skal vi bruge datavalidering eller datatestning.

Forskelle mellem test af brugergrรฆnseflade og datatest

Brugergrรฆnsefladetest vs datatest

Test af brugergrรฆnseflade Database eller datatest
Denne type test er ogsรฅ kendt som Graphical User Interface testing eller Front-end Testing. Denne type test er ogsรฅ kendt som Backend Testing eller datatest.
Denne type test beskรฆftiger sig hovedsageligt med alle de testbare elementer, der er รฅbne for brugeren for seertal og interaktion sรฅsom formularer, prรฆsentationer, grafer, menuer og rapporter osv. (oprettet gennem VB, VB.net, VC++, Delphi โ€“ Frontend-vรฆrktรธjer) Denne type test beskรฆftiger sig hovedsageligt med alle de testbare elementer, der generelt er skjult for brugeren til seertal. Disse omfatter interne processer og opbevaring som Assembly, DBMS som Oracle, SQL Server, MYSQL osv.

Denne type test inkluderer validering af

  • tekstbokse
  • vรฆlg dropdowns
  • kalendere og knapper
  • Side navigation
  • visning af billeder
  • Udseende og fornemmelse af den overordnede applikation

Denne type test involverer validering af:

  • skemaet
  • database tabeller
  • kolonner
  • nรธgler og indekser
  • lagrede procedurer udlรธser
  • validering af databaseservere
  • validering af dataduplikering
Testeren skal have et grundigt kendskab til forretningskravene samt brugen af โ€‹โ€‹udviklingsvรฆrktรธjerne og brugen af โ€‹โ€‹automatiseringsrammer og vรฆrktรธjer. For at kunne udfรธre backend-test, skal testeren have en stรฆrk baggrund i databaseserveren og Structured Query Language-koncepter.

Typer af databasetestning

Typer af databasetestning

De 3 typer af databasetest er

  1. Strukturel afprรธvning
  2. Funktionstest
  3. Ikke-funktionel test

I denne selvstudie til databasetestning vil vi se pรฅ hver type og dens undertyper รฉn efter รฉn.

Strukturel databasetestning

Strukturel databasetestning er en databasetestteknik, der validerer alle de elementer i datalageret, der hovedsageligt bruges til datalagring, og som ikke mรฅ manipuleres direkte af slutbrugere. Valideringen af โ€‹โ€‹databaseservere er ogsรฅ en vigtig overvejelse i strukturel databasetest. En vellykket gennemfรธrelse af denne test krรฆver beherskelse af SQL-forespรธrgsler.

Hvad er skematestning?

Skema test i databasetestning validerer forskellige skemaformater forbundet med databasen og verificerer, om kortlรฆgningsformaterne for tabeller/visninger/kolonner er kompatible med kortlรฆgningsformater af brugergrรฆnsefladen. Hovedformรฅlet med skematest er at sikre, at skematilknytningen mellem front-end og back-end er ens. Sรฅledes omtales det ogsรฅ som kortlรฆgningstest.

Lad os diskutere de vigtigste kontrolpunkter for skematestning.

  1. Validering af de forskellige skemaformater tilknyttet databaserne. Mange gange er tabellens kortlรฆgningsformat muligvis ikke kompatibelt med det kortlรฆgningsformat, der findes pรฅ applikationens brugergrรฆnsefladeniveau.
  2. Der er behov for verifikation i tilfรฆlde af ikke-kortlagte tabeller/visninger/kolonner.
  3. Der er ogsรฅ behov for at verificere, om heterogene databaser i et miljรธ er i overensstemmelse med den overordnede applikationskortlรฆgning.

Lad os ogsรฅ se pรฅ nogle af de interessante databasetestvรฆrktรธjer til validering af databaseskemaer.

  • DBUnit der er integreret med Ant er meget velegnet til kortlรฆgningstest.
  • SQL Server giver testerne mulighed for at kontrollere og forespรธrge databasens skema ved at skrive simple forespรธrgsler og ikke gennem kode.

Hvis udviklerne f.eks. รธnsker at รฆndre en tabelstruktur eller slette den, vil testeren gerne sikre, at alle de lagrede procedurer og visninger, der bruger denne tabel, er kompatible med den pรฅgรฆldende รฆndring. Et andet eksempel kunne vรฆre, at hvis testerne vil tjekke for skemaรฆndringer mellem 2 databaser, kan de gรธre det ved at bruge simple forespรธrgsler.

Databasetabel, kolonnetest

Lad os se nรฆrmere pรฅ forskellige kontroller til database- og kolonnetest.

  1. Om kortlรฆgningen af โ€‹โ€‹databasefelterne og -kolonnerne i backend er kompatibel med disse tilknytninger i frontend?
  2. Validering af lรฆngden og navnekonventionen for databasefelterne og -kolonnerne som specificeret af kravene.
  3. Validering af tilstedevรฆrelsen af โ€‹โ€‹ubrugte/utilknyttede databasetabeller/kolonner.
  4. Validering af kompatibiliteten af
  • datatype
  • feltlรฆngder

af back-end-databasekolonnerne med dem, der er til stede i forenden af โ€‹โ€‹applikationen.

  1. Om databasefelterne giver brugeren mulighed for at give de รธnskede brugerinput som krรฆvet af forretningskravspecifikationsdokumenterne.

Test af nรธgler og indekser

Vigtige kontroller for nรธgler og indekser โ€“

  1. Kontroller, om den nรธdvendige
  • Primรฆrnรธgle
  • Fremmed nรธgle

der er oprettet begrรฆnsninger pรฅ de pรฅkrรฆvede tabeller.

  1. Kontroller, om referencerne for fremmednรธgler er gyldige.
  2. Kontroller, om datatypen for den primรฆre nรธgle og de tilsvarende fremmednรธgler er ens i de to tabeller.
  3. Kontroller, om de pรฅkrรฆvede navnekonventioner er blevet fulgt for alle nรธgler og indekser.
  4. Tjek stรธrrelsen og lรฆngden af โ€‹โ€‹de pรฅkrรฆvede felter og indekser.
  5. Om det pรฅkrรฆvede
  • Clustered indekser
  • Ikke Clustered indekser

er blevet oprettet pรฅ de pรฅkrรฆvede tabeller som specificeret af forretningskravene.

Test af lagrede procedurer

Vigtige tests for at kontrollere lagrede procedurer er:

  1. Om udviklingsteamet overtog de pรฅkrรฆvede, A) kodningsstandardkonventioner og B) undtagelses- og fejlhรฅndtering. For alle de lagrede procedurer for alle moduler til den applikation, der testes.
  2. Om udviklingsteamet dรฆkkede alle betingelserne/slรธjferne ved at anvende de nรธdvendige inputdata til applikationen under test?
  3. Om udviklingsteamet anvendte TRIM-operationen korrekt, hver gang data hentes fra de pรฅkrรฆvede tabeller i databasen?
  4. Om den manuelle udfรธrelse af den lagrede procedure giver slutbrugeren det รธnskede resultat?
  5. Om den manuelle udfรธrelse af den lagrede procedure sikrer, at tabelfelterne opdateres som krรฆvet af den applikation, der testes?
  6. Om udfรธrelsen af โ€‹โ€‹de lagrede procedurer muliggรธr implicit pรฅberรฅbelse af de nรธdvendige triggere?
  7. Validering af tilstedevรฆrelsen af โ€‹โ€‹ubrugte lagrede procedurer.
  8. Validering for Tillad null-tilstand, som kan udfรธres pรฅ databaseniveau.
  9. Validering af det faktum, at alle de lagrede procedurer og funktioner er blevet udfรธrt med succes, nรฅr databasen under test er tom.
  10. Validering af den overordnede integration af de lagrede proceduremoduler i henhold til kravene til den applikation, der testes.

Nogle af de nyttige databasetestvรฆrktรธjer til at teste lagrede procedurer er LINQ, SP Testvรฆrktรธj osv.

Trigger test

  1. Om de pรฅkrรฆvede kodningskonventioner er blevet fulgt under kodningsfasen af โ€‹โ€‹triggerne?
  2. Kontroller, om de udfรธrte triggere for de respektive DML-transaktioner har opfyldt de pรฅkrรฆvede betingelser.
  3. Om triggeren opdaterer dataene korrekt, nรฅr de er blevet udfรธrt?
  4. Validering af den pรฅkrรฆvede opdatering/indsรฆt/slet udlรธser funktionalitet i den applikation, der testes.

Databaseservervalideringer

Databaseservervalideringer

  1. Kontroller databaseserverens konfigurationer som specificeret af forretningskravene.
  2. Kontroller godkendelsen af โ€‹โ€‹den pรฅkrรฆvede bruger til kun at udfรธre de handlingsniveauer, der krรฆves af applikationen.
  3. Tjek, at databaseserveren er i stand til at imรธdekomme behovene for det maksimalt tilladte antal brugertransaktioner som specificeret i forretningskravspecifikationerne.

Funktionel databasetest

Funktionel databasetest er en type databasetest, der bruges til at validere de funktionelle krav til en database fra slutbrugerens perspektiv. Hovedformรฅlet med funktionel databasetest er at teste, om de transaktioner og operationer, der udfรธres af slutbrugerne, som er relateret til databasen, fungerer som forventet eller ej.

Fรธlgende er de grundlรฆggende betingelser, der skal overholdes for databasevalideringer.

  • Om feltet er obligatorisk, mens det tillader NULL-vรฆrdier pรฅ det felt?
  • Om lรฆngden af โ€‹โ€‹hvert felt er af tilstrรฆkkelig stรธrrelse?
  • Om alle lignende felter har de samme navne pรฅ tvรฆrs af tabeller?
  • Om der er nogen beregnede felter til stede i databasen?

Denne sรฆrlige proces er valideringen af โ€‹โ€‹feltkortlรฆgningerne fra slutbrugerens synspunkt. I dette sรฆrlige scenarie vil testeren udfรธre en operation pรฅ databaseniveau og derefter navigere til det relevante brugergrรฆnsefladeelement for at observere og validere, om de korrekte feltvalideringer er blevet udfรธrt eller ej.

Den omvendte betingelse, hvor den fรธrste operation udfรธres af testeren pรฅ brugergrรฆnsefladen, og derefter det samme valideres fra bagenden, bรธr ogsรฅ udfรธres.

Kontrol af dataintegritet og konsistens

Fรธlgende kontroller er vigtige

  1. Om dataene er logisk velorganiserede?
  2. Om dataene i tabellerne er korrekte og i overensstemmelse med forretningskravene?
  3. Om der er unรธdvendige data i den applikation, der testes?
  4. Om dataene er blevet lagret i henhold til kravet med hensyn til data, der er blevet opdateret fra brugergrรฆnsefladen?
  5. Om TRIM-operationerne udfรธrt pรฅ dataene fรธr indsรฆttelse af data i databasen under test?
  6. Om transaktionerne er udfรธrt i henhold til forretningskravspecifikationerne, og om resultaterne er korrekte eller ej?
  7. Om dataene er blevet korrekt begรฅet, hvis transaktionen er blevet gennemfรธrt med succes?
  8. Om dataene er blevet rullet tilbage med succes, hvis transaktionen ikke er blevet gennemfรธrt med succes af slutbrugeren?
  9. Om dataene er blevet rullet tilbage, hvis transaktionen ikke er blevet gennemfรธrt med succes, og flere heterogene databaser har vรฆret involveret i den pรฅgรฆldende transaktion?
  10. Om alle transaktioner er blevet udfรธrt ved at bruge de pรฅkrรฆvede designprocedurer som specificeret af systemets forretningskrav?

Login og brugersikkerhed

Valideringerne af login og brugersikkerhedslegitimationsoplysninger skal tage hensyn til fรธlgende ting.

  1. Om applikationen forhindrer brugeren i at gรฅ videre i applikationen i tilfรฆlde af en
  • ugyldigt brugernavn men gyldig adgangskode
  • gyldigt brugernavn, men ugyldig adgangskode.
  • ugyldigt brugernavn og ugyldig adgangskode.
  1. Om brugeren kun mรฅ udfรธre de specifikke operationer, som er specificeret af forretningskravene?
  2. Om dataene er sikret mod uautoriseret adgang?
  3. Om der er oprettet forskellige brugerroller med forskellige tilladelser?
  4. Om alle brugerne har pรฅkrรฆvet adgangsniveauer til den angivne database som krรฆvet af forretningsspecifikationerne?
  5. Tjek, at fรธlsomme data som adgangskoder, kreditkortnumre er krypteret og ikke gemt som almindelig tekst i databasen. Det er en god praksis at sikre, at alle konti skal have adgangskoder, der er komplekse og ikke lette at gรฆtte.

Ikke-funktionel test

Ikke-funktionel test i forbindelse med databasetestning kan kategoriseres i forskellige kategorier som krรฆvet af forretningskravene. Disse kan vรฆre belastningstest, stresstest, Sikkerhedstest, Usability Testingog Test af kompatibilitet, og sรฅ videre. Belastningstestningen sรฅvel som stresstesten, som kan grupperes under spektret af Performance Testing, tjener to specifikke formรฅl, nรฅr det kommer til rollen som ikke-funktionel test.

Risiko kvantificeringโ€“ Kvantificering af risiko hjรฆlper interessenterne med at fastslรฅ de forskellige krav til systemets responstid under pรฅkrรฆvede belastningsniveauer. Dette er den oprindelige hensigt med enhver kvalitetssikring opgave. Vi er nรธdt til at bemรฆrke, at belastningstestning ikke mindsker risikoen direkte, men gennem processerne med risikoidentifikation og risikokvantificering prรฆsenterer korrigerende muligheder og en impuls til afhjรฆlpning, der vil mindske risikoen.

Minimumskrav til systemudstyrโ€“ Den mindste systemkonfiguration, der vil gรธre det muligt for systemet at opfylde de formelt angivne prรฆstationsforventninger fra interessenterne. Sรฅ uvedkommende hardware, software og de tilhรธrende omkostninger ved ejerskab kan minimeres. Dette sรฆrlige krav kan kategoriseres som det overordnede krav til forretningsoptimering.

Load Testing

Formรฅlet med enhver belastningstest skal klart forstรฅs og dokumenteres. Fรธlgende typer konfigurationer er et must for belastningstest.

  1. De hyppigst anvendte brugertransaktioner har potentiale til at pรฅvirke udfรธrelsen af โ€‹โ€‹alle de andre transaktioner, hvis de ikke er effektive.
  2. Mindst รฉn ikke-redigerende brugertransaktion bรธr inkluderes i den endelige testpakke, sรฅ udfรธrelsen af โ€‹โ€‹sรฅdanne transaktioner kan adskilles fra andre mere komplekse transaktioner.
  3. De vigtigere transaktioner, der letter systemets kernemรฅl, bรธr inkluderes, da fejl under en belastning af disse transaktioner pr. definition har den stรธrste indvirkning.
  4. Mindst รฉn redigerbar transaktion skal inkluderes, sรฅ ydeevne af sรฅdanne transaktioner kan adskilles fra andre transaktioner.
  5. Optimal responstid under et stort antal virtuelle brugere til alle de potentielle krav.
  6. Effektive tidspunkter for hentning af diverse poster.

Vigtige belastningstestvรฆrktรธjer er LoadRunner Professional, vinde lรธber og JMeter.

Hvad er databasestresstest?

Databasestresstest er en testmetode, der bruges til at stressteste databasesystem med stor belastning, sรฅ det fejler pรฅ et tidspunkt. Dette hjรฆlper med at identificere nedbrydningspunktet for databasesystemet. Det krรฆver ordentlig planlรฆgning og indsats for at undgรฅ overforbrug af ressourcer. Data stress test er ogsรฅ kendt som torturรธse test eller trรฆthedstest.

Vigtige stresstestvรฆrktรธjer er LoadRunner Professional og JMeter.

Mest almindeligt forekommende problemer under databasetest

A significant amount of overhead could be involved to determine the state of the database transactions

Oplรธsning: Den overordnede procesplanlรฆgning og timing bรธr tilrettelรฆgges, sรฅ der ikke opstรฅr tids- og omkostningsbaserede problemer.

New test data have to be designed after cleaning up of the old test data.

Oplรธsning: En forudgรฅende plan og metode til generering af testdata bรธr vรฆre ved hรฅnden.

An SQL generator is required to transform SQL validators in order to ensure the SQL queries are apt for handling the required database test cases.

Oplรธsning: Vedligeholdelse af SQL-forespรธrgsler og deres lรธbende opdatering er en vรฆsentlig del af den samlede testproces, som bรธr vรฆre en del af den samlede teststrategi.

The above mentioned prerequisite ensure that the set-up of the database testing procedure could be costly as well as time consuming.

Oplรธsning: Der bรธr vรฆre en fin balance mellem kvalitet og den overordnede projekttidsplans varighed.

Myter eller misforstรฅelser relateret til databasetestning

Myter

Database Testing requires plenty of expertise and it is a very tedious job

Virkelighed: Effektiv og effektiv databasetest i softwaretest giver langsigtet funktionel stabilitet til den overordnede applikation, sรฅ det er nรธdvendigt at lรฆgge hรฅrdt arbejde bag sig.

Database testing adds extra work bottleneck

Virkelighed: Tvรฆrtimod tilfรธrer databasetest mere vรฆrdi til det samlede arbejde ved at finde frem til skjulte problemer og dermed proaktivt vรฆre med til at forbedre den samlede applikation.

Database testing slows down the overall development process

Virkelighed: En betydelig mรฆngde af databasetestning hjรฆlper med den overordnede forbedring af kvaliteten af โ€‹โ€‹databaseapplikationen.

Database testing could be excessively costly

Virkelighed: Enhver udgift til databasetest er en langsigtet investering, som fรธrer til langsigtet stabilitet og robusthed af applikationen. Sรฅledes udgifter til Databasetest eller SQL Test er nรธdvendigt.

Bedste Praksis

  • Alle data inklusive metadata samt funktionelle data skal valideres i henhold til deres kortlรฆgning af kravspecifikationsdokumenterne.
  • Verifikation af testdata som er oprettet af / i samrรฅd med udviklingsteamet skal valideres.
  • Validering af outputdata ved at bruge bรฅde manuelle sรฅvel som automatiseringsprocedurer.
  • Implementering af forskellige teknikker sรฅsom รฅrsagsvirkningsgrafteknikken, รฆkvivalenspartitioneringsteknik og grรฆnsevรฆrdianalyseteknik til generering af nรธdvendige testdatabetingelser.
  • Valideringsreglerne for referenceintegritet for de pรฅkrรฆvede databasetabeller skal ogsรฅ valideres.
  • Valget af standardtabelvรฆrdier til validering af databasekonsistens er et meget vigtigt koncept, om loghรฆndelserne er blevet tilfรธjet i databasen for alle nรธdvendige loginhรฆndelser
  • Udfรธres planlagte opgaver rettidigt?
  • Tag rettidig backup af databasen.

Tjek ogsรฅ- Database Test Interview Spรธrgsmรฅl & Svar

Opsummer dette indlรฆg med: