Hva er volumtesting? Lær med eksempler

⚡ Smart oppsummering

Volumtesting utsetter en applikasjon for en veldig stor mengde data for å se hvordan lagring, spørringer og responstider oppfører seg etter hvert som databasen vokser. Det kalles også flomtesting, og det skalerer dataene i stedet for antall brukere.

  • 💾 Kjernedefinisjon: Datavolumet økes mens brukerbelastningen forblir normal.
  • 🔍 Primære kontroller: Datatap, stille overskriving, lagringsnøyaktighet og responstid under et stort datasett.
  • 📈 Nedbrytningspunkt: Testen lokaliserer volumet der stabilitet og ytelse begynner å falle.
  • 🇧🇷 Ikke lasttesting: Volum skalerer rader og filstørrelser; last skalerer samtidige brukere. De to finner forskjellige feil.
  • 🧪 Datarealisme: Genererte data må respektere nøkler og relasjonell integritet, som er den vanskeligste delen av testen.
  • ???? Business Case: Kapasitetsgrenser funnet før utgivelse koster en brøkdel av de samme begrensningene som finnes i produksjonen.

Hva er volumtesting

Hva er volumtesting?

Volumtesting er en type programvaretesting, hvor programvaren blir utsatt for et stort datavolum. Det er også referert til som flomtesting. Volumtesting gjøres for å analysere systemytelsen ved å øke volumet av data i databasen.

Ved hjelp av volumtesting kan innvirkningen på responstid og systematferd studeres når de utsettes for store datamengder.

For eksempel kan en musikkstrømmetjeneste testes med en katalog på 50 millioner tracks og en lyttehistorikktabell som inneholder milliarder av rader, for å se om søke- og anbefalingsspørsmål fortsatt returneres innen akseptabel tid.

Legg merke til forskjellen: volumtesting øker datamengde systemet holder. Øker antall samtidige brukere er belastningstesting, som er en annen test med et annet mål.

Fordeler med volumtesting

  • Å identifisere kapasitetsproblemer tidlig unngår de langt høyere kostnadene ved å fikse dem i produksjonen
  • Det hjelper med en raskere start for skalerbarhetsplaner
  • Tidlig identifisering av flaskehalser
  • Det sikrer at systemet ditt nå er i stand til bruk i den virkelige verden

Hvorfor utføre volumtesting?

Målet med å utføre volumtestingen er å

  • Sjekk systemytelsen med økende datamengder i databasen
  • Identifiser problemene som sannsynligvis vil oppstå når datasettet blir stort
  • For å finne ut punktet hvor stabiliteten til systemet forringes
  • Volumtesting vil bidra til å identifisere kapasiteten til systemet eller applikasjonen – normalt og tungt volum

Slik utfører du volumtesting

I volumtesting må følgende ting testes

  • Test for å sjekke om det er tap av data
  • Sjekk systemets responstid
  • Sjekk om dataene er lagret riktig eller ikke
  • Bekreft om dataene er overskrevet uten varsel
  • Sjekk at advarsler og feilmeldinger faktisk vises når en volumgrense er nådd
  • Sjekk om data med høyt volum påvirker behandlingshastigheten
  • Bekreft at systemet har minne- og lagringsressursene som volumet krever
  • Bekreft at volumtesten dekker hele systemet i stedet for én enkelt komponent
  • Er det noen risiko hvis datavolumet er større enn spesifisert
  • Undersøk om det finnes noen garanti for at datamengden ikke vil overstige den angitte maksimale

Beste praksis for testing av store mengder

Flere av fremgangsmåtene nedenfor deles med belastningstesting, fordi de to vanligvis kjøres mot samme miljø. De volumspesifikke gjelder selve datasettet:

  • Stopp alle servere og sjekk alle logger
  • Før belastningstesten utfør applikasjonsscenarioet manuelt
  • For de mest nyttige resultatene forskyv antall brukere
  • For å overvinne lisensbegrensninger, balanser tenketid
  • Vær forsiktig med det nye bygget
  • Analyser brukssaken for forbedring når en baseline er etablert
  • En repetisjon av bestemte deler av volumtesting blir uunngåelig i tilfelle det er en flaskehals i ytelsen

Volumtesting kontra belastningstesting

Volumtesting Load Testing
  • Volumtesting sjekker hvordan en applikasjon oppfører seg når databasen inneholder en veldig stor mengde data.
  • Under belastningstesting blir applikasjonen utsatt for et visst belastningsnivå for å analysere applikasjonens oppførsel
  • Volumtesting bekrefter at systemet fortsatt reagerer riktig ved et gitt datavolum. Det øker vanligvis størrelsen på filer og tabeller.
  • Lasttesting sjekker ytelsen når belastningen fra samtidige brukere øker. Det øker vanligvis antallet samtidige forespørsler.

Utfordringer i volumtesting

  • Fragmentering av minne vanskelig å generere
  • Dynamisk generering av nøkler
  • Relasjonelt Integrity av genererte data

Hvordan denne testen sammenlignes med andre ytelsestester

Ytelsestesting er en familie av tester som varierer i formen på den påførte belastningen, og det er derfor de så lett forveksles.

Testtype Hva er økt Spørsmål den svarer
Lasttesting Samtidige brukere, til forventet topp Oppfyller den målene under normal rushtrafikk?
Volumtesting Data lagret i databasen Takler den det når datasettet vokser?
Stresstesting Last utover kapasitet, inntil feil Hvor går den i stykker, og hvordan?
Piggtesting Last inn, umiddelbart og ekstremt Overlever den og kommer den seg etter et sjokk?
Utholdenhetstesting Varighet, ved normal belastning Forringes ytelsen over tid?
Bløtleggingstesting Varighet, overvåkingsressurser Er det minne- eller håndtakslekkasjer?
Stabilitetstesting Varierende forhold Forblir den pålitelig når forholdene endrer seg?

Det viktigste skillet her: Volumtesting skalerer dataene, belastningstesting skalerer brukerne. En rapport som kjører på to sekunder mot ti tusen rader og to minutter mot ti millioner rader har et volumproblem, ikke et belastningsproblem, og ingen mengde ekstra serverkapasitet vil fikse det.

Slik genererer du testdata for volumtesting

Utfordringsdelen bemerker at det å generere realistiske data er den vanskelige delen av volumtesting. Fire tilnærminger brukes i praksis, og hver innebærer en avveining.

Tilnærming Realisme Hovedulempen
Kopi av produksjonsdata Høyeste Personvern og samsvarseksponering
Maskert produksjonskopi Høyt Maskering kan ødelegge referanseintegriteten
Syntetisk generering Medium Fordelingene stemmer kanskje ikke overens med virkeligheten
Avspilt produksjonstrafikk Høyt Krever infrastruktur for fangst

Uansett hvilken vei du velger, må tre egenskaper holde, ellers måler testen ingenting nyttig.

  • Referanseintegritet. Hver fremmednøkkel må løses. En million foreldreløse rader bruker lagringsmotoren, men aldri koblingsstiene applikasjonen faktisk bruker.
  • Realistisk kardinalitet. Hvis produksjonstabellen har ti millioner rader på tvers av to hundre kunder, vil generering av ti millioner rader på tvers av ti millioner kunder produsere helt andre spørreplaner.
  • Realistisk fordeling. Reelle data er skjeve. Ensartet tilfeldige data skjuler de aktive partisjonene og indekskonflikten som forårsaker produksjonshendelser.

En praktisk advarsel om personvern. Kopiering av produksjonsdata til et testmiljø er den vanligste årsaken til datainnbrudd i testing. Masker personlige felt før kopien forlater produksjonen, ikke etterpå.

Spørsmål og svar

Volumtesting øker mengden data i systemet mens brukerbelastningen forblir normal. Belastningstesting øker mengden samtidige brukere mens datasettet forblir normalt. De avdekker forskjellige flaskehalser, så begge er nødvendige.

Start fra det anslåtte datavolumet på slutten av den planlagte kapasitetshorisonten, vanligvis to til tre år med vekst, test deretter på dette tallet og doble det for å finne hvor degraderingen begynner.

Manglende eller ineffektive indekser, spørringer som skalerer ikke-lineært, uttømming av lagringsplass, stille avkorting av felt og batchjobber der kjøretiden overstiger vinduet som er tilgjengelig for dem.

AI-modeller lærer den statistiske fordelingen og sammenhengene mellom produksjonsdata, og genererer deretter syntetiske poster som bevarer disse egenskapene uten å eksponere noen reell kundepost.

Ja, til en viss grad. Modeller tilpasset målte degraderingskurver ekstrapolerer sviktpunktet, men projeksjonen må bekreftes av en faktisk kjøring før den styrer en kapasitetsbeslutning.

Oppsummer dette innlegget med: