Veiledning for databasetesting
Hva er databasetesting?
Databasetesting er en type programvaretesting som sjekker skjemaet, tabellene, triggerne osv. til databasen som testes. Den sjekker ogsรฅ dataintegritet og konsistens. Det kan innebรฆre รฅ lage komplekse spรธrringer for รฅ laste/stressteste databasen og sjekke responsen.

Hvorfor er databasetesting viktig?
Databasetesting er viktig in programvaretesting fordi det sikrer at dataverdier og informasjon som mottas og lagres i databasen er gyldige eller ikke. Databasetesting hjelper til med รฅ spare tap av data, lagrer avbrutt transaksjonsdata og ingen uautorisert tilgang til informasjonen. Database er viktig for enhver programvareapplikasjon, derfor mรฅ testere ha god kunnskap om SQL for databasetesting.
GUI-en legges vanligvis mest vekt av test- og utviklingsteammedlemmene siden det grafiske brukergrensesnittet tilfeldigvis er den mest synlige delen av applikasjonen. Det som imidlertid ogsรฅ er viktig er รฅ validere informasjonen som er hjertet i applikasjonen, ogsรฅ kalt DATABASE.
La oss vurdere en bankapplikasjon der en bruker foretar transaksjoner. Nรฅ fra databasetesting eller DB-testing, er ting viktige:
- Applikasjonen lagrer transaksjonsinformasjonen i applikasjonsdatabasen og viser dem riktig til brukeren.
- Ingen informasjon gรฅr tapt i prosessen.
- Ingen informasjon om delvis utfรธrt eller avbrutt operasjon lagres av applikasjonen.
- Ingen uautoriserte personer har tilgang til brukerens informasjon.
For รฅ sikre alle disse mรฅlene ovenfor, mรฅ vi bruke datavalidering eller datatesting.
Forskjeller mellom brukergrensesnitttesting og datatesting
| Testing av brukergrensesnitt | Database eller datatesting |
|---|---|
| Denne typen testing er ogsรฅ kjent som Graphical User Interface-testing eller Front-end-testing. | Denne typen testing er ogsรฅ kjent som Backend-testing eller datatesting. |
| Denne typen testing omhandler hovedsakelig alle de testbare elementene som er รฅpne for brukeren for seerskare og interaksjon som skjemaer, presentasjoner, grafer, menyer og rapporter osv. (opprettet gjennom VB, VB.net, VC++, Delphi โ grensesnittverktรธy) | Denne typen testing omhandler hovedsakelig alle de testbare elementene som vanligvis er skjult for brukeren for seerskare. Disse inkluderer interne prosesser og lagring som Assembly, DBMS som Oracle, SQL Server, MYSQL, etc. |
|
Denne typen testing inkluderer รฅ validere
|
Denne typen testing innebรฆrer รฅ validere:
|
| Testeren mรฅ ha grundig kunnskap om forretningskravene samt bruken av utviklingsverktรธyene og bruken av automatiseringsrammer og verktรธy. | For รฅ kunne utfรธre backend-testing, mรฅ testeren ha en sterk bakgrunn i databaseserveren og Structured Query Language-konsepter. |
Typer databasetesting
De 3 typene databasetesting er
I denne veiledningen for databasetesting vil vi se nรฆrmere pรฅ hver type og dens undertyper รฉn etter รฉn.
Strukturell databasetesting
Strukturell databasetesting er en databasetestingsteknikk som validerer alle elementene i datalageret som hovedsakelig brukes til datalagring og som ikke er tillatt รฅ bli direkte manipulert av sluttbrukere. Valideringen av databaseservere er ogsรฅ en viktig faktor i strukturell databasetesting. En vellykket gjennomfรธring av denne testingen krever mestring i SQL-spรธrringer.
Hva er skjematesting?
Skjematesting i databasetesting validerer ulike skjemaformater knyttet til databasen og verifiserer om kartleggingsformatene til tabeller/visninger/kolonner er kompatible med kartleggingsformater for brukergrensesnitt. Hovedformรฅlet med skjematesting er รฅ sikre at skjematilordningen mellom front-end og back-end er like. Dermed omtales det ogsรฅ som kartleggingstesting.
La oss diskutere de viktigste sjekkpunktene for skjematesting.
- Validering av de ulike skjemaformatene knyttet til databasene. Mange ganger er kartleggingsformatet til tabellen kanskje ikke kompatibelt med kartformatet som finnes pรฅ brukergrensesnittnivรฅet til applikasjonen.
- Det er behov for verifisering ved ikke-kartlagte tabeller/visninger/kolonner.
- Det er ogsรฅ behov for รฅ verifisere om heterogene databaser i et miljรธ stemmer overens med den generelle applikasjonskartleggingen.
La oss ogsรฅ se pรฅ noen av de interessante verktรธyene for databasetesting for รฅ validere databaseskjemaer.
- DBUnit som er integrert med Ant er meget godt egnet for kartleggingstesting.
- SQL Server lar testerne vรฆre i stand til รฅ sjekke og spรธrre etter skjemaet til databasen ved รฅ skrive enkle spรธrringer og ikke gjennom kode.
For eksempel, hvis utviklerne รธnsker รฅ endre en tabellstruktur eller slette den, vil testeren sikre at alle lagrede prosedyrer og visninger som bruker den tabellen er kompatible med den aktuelle endringen. Et annet eksempel kan vรฆre at hvis testerne รธnsker รฅ se etter skjemaendringer mellom 2 databaser, kan de gjรธre det ved รฅ bruke enkle spรธrringer.
Databasetabell, kolonnetesting
La oss se nรฆrmere pรฅ ulike kontroller for database- og kolonnetesting.
- Om tilordningen av databasefeltene og -kolonnene i backend er kompatibel med disse tilordningene i front-end?
- Validering av lengden og navnekonvensjonen til databasefeltene og -kolonnene som spesifisert av kravene.
- Validering av tilstedevรฆrelsen av ubrukte/ikke-tilordnede databasetabeller/kolonner.
- Validering av kompatibiliteten til
- data-type
- feltlengder
av backend-databasekolonnene med kolonnene til de som er tilstede i frontenden av applikasjonen.
- Hvorvidt databasefeltene lar brukeren gi รธnsket brukerinndata som kreves av dokumentene for forretningskravspesifikasjonene.
Testing av nรธkler og indekser
Viktige kontroller for nรธkler og indekser โ
- Sjekk om nรธdvendig
- Primรฆrnรธkkel
- Foreign Key
begrensninger er opprettet pรฅ de nรธdvendige tabellene.
- Sjekk om referansene for fremmednรธkler er gyldige.
- Sjekk om datatypen til primรฆrnรธkkelen og de tilsvarende fremmednรธklene er de samme i de to tabellene.
- Sjekk om de nรธdvendige navnekonvensjonene er fulgt for alle nรธklene og indeksene.
- Sjekk stรธrrelsen og lengden pรฅ de nรธdvendige feltene og indeksene.
- Om det er nรธdvendig
- Clustered indekser
- Ikke Clustered indekser
har blitt opprettet pรฅ de nรธdvendige tabellene som spesifisert av forretningskravene.
Testing av lagrede prosedyrer
Viktige tester for รฅ sjekke lagrede prosedyrer er:
- Hvorvidt utviklingsteamet tok i bruk de nรธdvendige, A) kodingsstandardkonvensjonene, og B) unntaks- og feilhรฅndtering. For alle de lagrede prosedyrene for alle modulene for applikasjonen som testes.
- Om utviklingsteamet dekket alle forholdene/lรธkkene ved รฅ bruke de nรธdvendige inndataene til applikasjonen som testes?
- Om utviklingsteamet brukte TRIM-operasjonen riktig nรฅr data hentes fra de nรธdvendige tabellene i databasen?
- Om manuell utfรธrelse av den lagrede prosedyren gir sluttbrukeren det nรธdvendige resultatet?
- Om manuell kjรธring av den lagrede prosedyren sikrer at tabellfeltene oppdateres slik det kreves av applikasjonen som testes?
- Om utfรธrelsen av de lagrede prosedyrene muliggjรธr implisitt pรฅkalling av de nรธdvendige triggerne?
- Validering av tilstedevรฆrelsen av ubrukte lagrede prosedyrer.
- Validering for Tillat null-tilstand som kan gjรธres pรฅ databasenivรฅ.
- Validering av det faktum at alle lagrede prosedyrer og funksjoner har blitt utfรธrt med suksess nรฅr databasen som testes er tom.
- Validering av den generelle integrasjonen av de lagrede prosedyremodulene i henhold til kravene til applikasjonen som testes.
Noen av de nyttige databasetestingsverktรธyene for รฅ teste lagrede prosedyrer er LINQ, SP Testverktรธy etc.
Triggertesting
- Om de nรธdvendige kodekonvensjonene har blitt fulgt under kodingsfasen av triggerne?
- Sjekk om utlรธserne som er utfรธrt for de respektive DML-transaksjonene har oppfylt de nรธdvendige betingelsene.
- Om utlรธseren oppdaterer dataene riktig nรฅr de er utfรธrt?
- Validering av den nรธdvendige Oppdatering/Sett inn/Slett utlรธser funksjonalitet i omrรฅdet til applikasjonen som testes.
Databaseservervalideringer
- Sjekk databaseserverkonfigurasjonene som spesifisert av forretningskravene.
- Sjekk autorisasjonen til den nรธdvendige brukeren til รฅ utfรธre bare de handlingsnivรฅene som kreves av applikasjonen.
- Sjekk at databaseserveren er i stand til รฅ imรธtekomme behovene til det maksimalt tillatte antallet brukertransaksjoner som spesifisert i forretningskravspesifikasjonene.
Funksjonell databasetesting
Funksjonell databasetesting er en type databasetesting som brukes til รฅ validere funksjonskravene til en database fra sluttbrukerens perspektiv. Hovedmรฅlet med funksjonell databasetesting er รฅ teste om transaksjonene og operasjonene utfรธrt av sluttbrukerne som er relatert til databasen fungerer som forventet eller ikke.
Fรธlgende er de grunnleggende betingelsene som mรฅ overholdes for databasevalidering.
- Om feltet er obligatorisk mens du tillater NULL-verdier i det feltet?
- Om lengden pรฅ hvert felt er av tilstrekkelig stรธrrelse?
- Om alle lignende felt har samme navn pรฅ tvers av tabeller?
- Om det er noen beregnede felt i databasen?
Denne spesielle prosessen er valideringen av felttilordningene fra sluttbrukerens synspunkt. I dette spesielle scenariet vil testeren utfรธre en operasjon pรฅ databasenivรฅ og deretter navigere til det relevante brukergrensesnittelementet for รฅ observere og validere om de riktige feltvalideringene har blitt utfรธrt eller ikke.
Den omvendte tilstanden der den fรธrste operasjonen utfรธres av testeren ved brukergrensesnittet, og deretter det samme valideres fra baksiden, bรธr ogsรฅ gjรธres.
Sjekke dataintegritet og konsistens
Fรธlgende kontroller er viktig
- Om dataene er logisk godt organisert?
- Om dataene som er lagret i tabellene er korrekte og i henhold til forretningskravene?
- Om det finnes unรธdvendige data i applikasjonen som testes?
- Om dataene er lagret i henhold til kravet med hensyn til data som er oppdatert fra brukergrensesnittet?
- Om TRIM-operasjonene utfรธrt pรฅ dataene fรธr data ble satt inn i databasen som testes?
- Om transaksjonene er utfรธrt i henhold til forretningskravspesifikasjonene og om resultatene er korrekte eller ikke?
- Hvorvidt dataene har blitt riktig forpliktet hvis transaksjonen er vellykket utfรธrt?
- Om dataene har blitt rullet tilbake pรฅ en vellykket mรฅte hvis transaksjonen ikke er utfรธrt av sluttbrukeren?
- Om dataene har blitt rullet tilbake hvis transaksjonen ikke har blitt utfรธrt vellykket og flere heterogene databaser har vรฆrt involvert i den aktuelle transaksjonen?
- Om alle transaksjonene har blitt utfรธrt ved รฅ bruke de nรธdvendige designprosedyrene som spesifisert av systemets forretningskrav?
Innlogging og brukersikkerhet
Valideringen av pรฅloggings- og brukersikkerhetslegitimasjonen mรฅ ta hensyn til fรธlgende ting.
- Om applikasjonen hindrer brukeren i รฅ gรฅ videre i applikasjonen i tilfelle en
- ugyldig brukernavn men gyldig passord
- gyldig brukernavn, men ugyldig passord.
- ugyldig brukernavn og ugyldig passord.
- Om brukeren har lov til รฅ utfรธre bare de spesifikke operasjonene som er spesifisert av forretningskravene?
- Om dataene er sikret mot uautorisert tilgang?
- Om det er opprettet ulike brukerroller med ulike tillatelser?
- Om alle brukerne har nรธdvendige tilgangsnivรฅer pรฅ den spesifiserte databasen som kreves av forretningsspesifikasjonene?
- Sjekk at sensitive data som passord, kredittkortnumre er kryptert og ikke lagret som ren tekst i databasen. Det er en god praksis รฅ sikre at alle kontoer skal ha passord som er komplekse og som ikke er enkle รฅ gjette.
Ikke-funksjonell testing
Ikke-funksjonell testing i sammenheng med databasetesting kan kategoriseres i ulike kategorier som kreves av forretningskravene. Disse kan vรฆre belastningstesting, stresstesting, Sikkerhetstesting, Brukervennlighetstestingog Test av kompatibilitet, og sรฅ videre. Belastningstestingen, sรฅ vel som stresstestingen, som kan grupperes under spekteret av ytelsestesting, tjener to spesifikke formรฅl nรฅr det kommer til rollen som ikke-funksjonell testing.
Risiko kvantifiseringโ Kvantifisering av risiko hjelper interessentene til รฅ fastslรฅ de ulike systemenes responstidskrav under nรธdvendige belastningsnivรฅer. Dette er den opprinnelige intensjonen til enhver kvalitetssikring oppgave. Vi mรฅ merke oss at belastningstesting ikke reduserer risiko direkte, men gjennom prosessene med risikoidentifikasjon og risikokvantifisering presenterer korrigerende muligheter og en drivkraft for utbedring som vil redusere risiko.
Minimumskrav til systemutstyrโ Minimum systemkonfigurasjon som gjรธr at systemet kan mรธte de formelt uttalte ytelsesforventningene til interessentene. Slik at overflรธdig maskinvare, programvare og tilhรธrende eierkostnader kan minimeres. Dette spesielle kravet kan kategoriseres som det generelle kravet til forretningsoptimalisering.
Load Testing
Hensikten med enhver lasttest bรธr vรฆre klart forstรฅtt og dokumentert. Fรธlgende typer konfigurasjoner er et must for lastetesting.
- De mest brukte brukertransaksjonene har potensial til รฅ pรฅvirke ytelsen til alle de andre transaksjonene hvis de ikke er effektive.
- Minst รฉn ikke-redigerende brukertransaksjon bรธr inkluderes i den endelige testpakken, slik at ytelsen til slike transaksjoner kan skilles fra andre mer komplekse transaksjoner.
- De viktigere transaksjonene som letter kjernemรฅlene til systemet bรธr inkluderes, da feil under en belastning av disse transaksjonene per definisjon har stรธrst innvirkning.
- Minst รฉn redigerbar transaksjon bรธr inkluderes slik at ytelse av slike transaksjoner kan skilles fra andre transaksjoner.
- Optimal responstid under et stort antall virtuelle brukere for alle potensielle krav.
- Effektive tider for henting av ulike poster.
Viktige lasttestingsverktรธy er LoadRunner Professional, vinn lรธper og JMeter.
Hva er databasestresstesting?
Databasestresstesting er en testmetode som brukes til รฅ stressteste databasesystem med stor belastning slik at det mislykkes pรฅ et tidspunkt. Dette hjelper med รฅ identifisere nedbrytningspunktet til databasesystemet. Det krever riktig planlegging og innsats for รฅ unngรฅ overforbruk av ressurser. Data stresstesting er ogsรฅ kjent som torturtesting eller utmattelsestesting.
Viktige stresstestingsverktรธy er LoadRunner Professional og JMeter.
De vanligste problemene som oppstรฅr under databasetesting
A significant amount of overhead could be involved to determine the state of the database transactions
Lรธsning: Den overordnede prosessplanleggingen og timingen bรธr organiseres slik at ingen tids- og kostnadsbaserte problemer oppstรฅr.
New test data have to be designed after cleaning up of the old test data.
Lรธsning: En forhรฅndsplan og metodikk for generering av testdata bรธr foreligge.
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.
Lรธsning: Vedlikehold av SQL-spรธrringene og deres kontinuerlige oppdatering er en betydelig del av den totale testprosessen som bรธr vรฆre en del av den generelle teststrategi.
The above mentioned prerequisite ensure that the set-up of the database testing procedure could be costly as well as time consuming.
Lรธsning: Det bรธr vรฆre en fin balanse mellom kvalitet og den totale varigheten av prosjektplanen.
Myter eller misoppfatninger knyttet til databasetesting
Database Testing requires plenty of expertise and it is a very tedious job
Virkelighet: Effektiv og effektiv databasetesting i programvaretesting gir langsiktig funksjonell stabilitet til den generelle applikasjonen, sรฅ det er nรธdvendig รฅ legge ned hardt arbeid bak det.
Database testing adds extra work bottleneck
Virkelighet: Tvert imot, databasetesting gir mer verdi til det totale arbeidet ved รฅ finne ut skjulte problemer og dermed proaktivt bidra til รฅ forbedre den generelle applikasjonen.
Database testing slows down the overall development process
Virkelighet: Betydelig mengde databasetesting hjelper til med den generelle forbedringen av kvaliteten for databaseapplikasjonen.
Database testing could be excessively costly
Virkelighet: Eventuelle utgifter til databasetesting er en langsiktig investering som fรธrer til langsiktig stabilitet og robusthet i applikasjonen. Dermed utgifter til databasetesting eller SQL Testing er nรธdvendig.
Beste praksis
- Alle data inkludert metadata sรฅ vel som funksjonelle data mรฅ valideres i henhold til deres kartlegging av kravspesifikasjonsdokumentene.
- Verifikasjon av testdata som er opprettet av / i samrรฅd med utviklingsteamet mรฅ valideres.
- Validering av utdataene ved รฅ bruke bรฅde manuelle sรฅ vel som automatiseringsprosedyrer.
- Utplassering av ulike teknikker som for eksempel รฅrsaksvirkningsgrafteknikk, ekvivalenspartisjonsteknikk og grenseverdianalyseteknikk for generering av nรธdvendige testdatabetingelser.
- Valideringsreglene for referanseintegritet for de nรธdvendige databasetabellene mรฅ ogsรฅ valideres.
- Valget av standard tabellverdier for validering av databasekonsistens er et svรฆrt viktig konsept Hvorvidt logghendelsene har blitt lagt til i databasen for alle nรธdvendige pรฅloggingshendelser
- Utfรธres planlagte jobber i tide?
- Ta rettidig sikkerhetskopiering av databasen.
Sjekk ogsรฅ- Databasetesting intervjuspรธrsmรฅl og svar




