Hva er Spike-testing i programvaretesting? Lær med eksempel

⚡ Smart oppsummering

Spike Testing utsetter en applikasjon for en plutselig, ekstrem belastningsbølge og trekker den deretter tilbake like brått. Målet er å finne ut om systemet overlever sjokket, og like viktig, om det gjenoppretter seg etterpå.

  • Lastemønster: En kraftig stigning langt over normal trafikk, holdt kort, deretter fjernet.
  • 🎯 Hovedmål: Fastslå om systemet svikter, og om det svikter på en grasiøs måte.
  • 🔄 Gjenopprettingssaker: Å gå tilbake til normale responstider etter toppen er like viktig som å overleve den.
  • 📈 Realistiske utløsere: Flash-salg, billettutgivelser, viral trafikk og planlagte batchjobber.
  • 🛠️ verktøy: JMeter og LoadRunner modellerer begge en umiddelbar opptrapping i stedet for en gradvis.
  • 📊 Hva du skal se på: Feilrate, kødybde og tiden det tar å gå tilbake til grunnlinjen.

Hva er spiketesting

Hva er Spike Testing?

Piggtesting er en type programvaretesting der en programvareapplikasjon testes med ekstreme økninger og reduksjoner i trafikkbelastning. Hovedformålet med topptesting er å evaluere oppførselen til programvareapplikasjonen under plutselig økning eller reduksjon i brukerbelastning og bestemme gjenopprettingstiden etter en økning i brukerbelastning.

Spike-testing utføres for å estimere svakhetene til programvareapplikasjoner.

Piggtesting
Piggtesting

Mål med spiketesting

Målet med Spike-testing er å se hvordan systemet reagerer på uventet økning og fall av brukerbelastningen. I Software Engineering hjelper Spike-testing å bestemme systemytelsen vil forringes når det er en plutselig høy belastning.

Et annet mål med Spike Testing er å bestemme restitusjonstiden. Mellom to påfølgende topper av brukerbelastning, trenger systemet litt tid på å stabilisere seg. Denne restitusjonstiden bør være så lav som mulig.

Hvordan gjøre Spike Testing

Her er de enkle trinnene for å utføre Spike-testing:

Trinn 1) Bestem lastekapasiteten

Bestem den maksimale brukerbelastningskapasiteten til programvareapplikasjonen.

Trinn 2) Forbered testmiljøet

Klargjør testmiljøet og konfigurer det til å registrere ytelsesparametere.

Trinn 3) Definer forventet belastning

Påfør forventet maksimal belastning på programvareapplikasjonen ved å bruke en Verktøy for ytelsestesting av ditt valg.

Trinn 4) Øk belastningen

Øk belastningen til systemet raskt i en bestemt periode.

Trinn 5) Sett Load tilbake til Normal

Reduser belastningen gradvis tilbake til opprinnelig nivå.

Trinn 6) Analyser resultatene

Analyser ytelsesgrafene og beregningene som feil, tid tatt, virtuelle brukere, etc.

Eksempler på piggtestscenarier

  • Når en e-handelsbutikk lanserer spesialtilbud med gode rabatter som på Black Friday.
  • Når en nettapplikasjon direktestrømmer et favoritt-TV-program.
  • Når et flash-salg pågår på et nettsted med daglige tilbud.
  • Når det bestemte innholdet på et nettsted blir viralt over Internett.
  • Et nytt system er lansert for produksjon, og flere brukere ønsker å få tilgang til systemet.
  • Et strømbrudd kan føre til at alle brukere mister tilgangen til et system. Etter at strømbruddet er løst, logger alle brukere på systemet samtidig.

Gjenopprettingsscenarioer på piggbelastninger

Tre hovedgjenopprettingsscenarier som kan konfigureres for å beskytte mot pigger er:

  1. Bruk skyplattformer som AWS, Azure for å dynamisk øke serverkapasiteten i takt med brukerbelastningen
  2. Ikke tillat applikasjonstilgang til noen brukere, slik at systemet ikke blir utsatt for tung belastning. Dette hindrer personer over den maksimale beregnede lasten fra å komme inn i systemet. Dermed beskytter systemet mot trusselen om en overdreven belastning.
  3. Nettstedets administrator lar brukere bli med i systemet. Men med advarsel om at de kan møte langsom respons på grunn av tung belastning. Dette kan føre til en negativ effekt på systemets ytelse. Imidlertid vil brukeren kunne jobbe med systemet.

Fordeler og ulemper med spiketesting

Nedenfor er fordelene og ulempene med Spike Testing:

Fordeler Ulemper
Ytelsen til programvaren må opprettholdes for enhver pris. Men når det er en ekstrem økning i belastningen til et system, er det store sjanser for problemene. Spike Testing hjelper til med å teste et slikt scenario. Den eneste ulempen med Spike Testing er at det er en kostbar testprosess. Så det var nødvendig å sette opp spesielle testforhold. Men over lengre varighet vil det garantert gi en positiv avkastning.
I standard testmetode kan det hende de dårlige til verste tilfellene ikke tas opp. Men å ignorere dem betyr ikke at de aldri vil skje. Derfor bør hver programvare være klar for slike muligheter. Et slikt worst case-scenario er lasting som kan bedømmes og minimeres ved hjelp av piggtesting.  

Spike testverktøy

1) JMeter

Ocuco Apache JMeter er et java åpen kildekode spike testing verktøy. Den er spesielt designet for å laste funksjonell testatferd og måle ytelse. Dette ytelsestestverktøyet kan brukes til å analysere og måle ytelsen til nettapplikasjoner eller en rekke tjenester. I dag er det mye brukt for funksjonstesten, databaseservertesten.

2) Loadrunner

LoadRunner er et lasttestingsverktøy for Windows og Linux, som tillater spiketesting av web- og andre apper. Det hjelper å bestemme ytelsen og resultatet av påføringen selv under tung belastning.

Hvordan denne testen passer inn i ytelsestestingfamilien

Ytelsestesting er en paraplybetegnelse. Variantene nedenfor skiller seg bare i formen på den påførte belastningen og varigheten den holdes i, og det er derfor de så ofte forveksles med hverandre.

Testtype Lastemønster Spørsmål den svarer
Lasttesting Forventet toppbelastning, kort varighet Oppfyller systemet målene sine under normal trafikktopp?
Stresstesting Økte utover kapasiteten inntil feil Hvor ryker den, og svikter den grasiøst?
Piggtesting Plutselig ekstrem bølge, deretter tilbaketrekning Overlever og kommer den seg etter et trafikksjokk?
Utholdenhetstesting Normal belastning holdt i mange timer Forringes ytelsen over tid?
Bløtleggingstesting Vedvarende belastning over lengre tid Er det minnelekkasjer eller ressursutmattelse?
Stabilitetstesting Varierende belastning underveis Forblir systemet pålitelig selv om forholdene endrer seg?
Volumtesting Vanlige brukere, veldig stort datavolum Takler den når databasen vokser?

Utholdenhetstesting og gjennomvåtningstesting blir ofte behandlet som synonymer. Vanligvis brukes de slik: begge holder en vedvarende belastning over lengre tid. Der team skiller dem fra hverandre, fokuserer utholdenhetstesting på om responstidene stiger, mens soak-testing fokuserer på ressursforbruk som minne, filhåndtak og tilkoblingspooler. Å kjøre én gir deg vanligvis bevis for begge.

Viktige målinger å fange opp under testen

En ytelsesbasert kjøring er bare så god som det du registrerer mens den kjører. Registrer disse seks på server- og klientsiden, og sammenlign dem deretter med grunnlinjen i stedet for mot en magefølelse.

Metric Hva det forteller deg Advarselsskilt
Gjennomsnittlig responstid Typisk brukeropplevelse Enhver oppadgående drift over løypa
95. persentil responstid Opplevelsen til de tregeste brukerne Langt over gjennomsnittet, noe som betyr inkonsekvens
gjennomstrømming Forespørsler behandlet per sekund Faller mens belastningen forblir konstant
Feilrate Andel mislykkede eller tidsavbrutt forespørsler Enhver økning over den avtalte terskelen
CPU- og minnebruk Serverressurskapasitet Minne som klatrer og aldri kommer tilbake
Databasetilkoblinger og tråder Utmattelse av bassenget Antall som vokser jevnt uten utgivelse

Les gjennomsnittet og persentilen sammen. Et gjennomsnitt på 800 ms med en 95. persentil på 900 ms beskriver et konsistent system. Det samme gjennomsnittet med en 95. persentil på 9 sekunder betyr at én av tjue brukere har det dårlig, og gjennomsnittet skjuler det.

Se på formen, ikke bare verdien. I enhver langvarig test er en flat ressurslinje et bestått resultat og en stigende en er en lekkasje, selv når det absolutte tallet fortsatt er komfortabelt innenfor grensen i det øyeblikket kjøringen avsluttes.

Spike-testing: Viktige konklusjoner

  • programvaretesting er en type programvaretesting der en programvareapplikasjon testes med ekstreme økninger og reduksjoner i trafikkbelastning.
  • Den riktige tilnærmingen til å utføre piggtesting er å uventet øke antallet brukere etterfulgt av en umiddelbar reduksjon i belastningen.
  • Den uventede belastningen er hovedattributtet til avtalen.
  • Eksempler på virkelige Spike-testscenarier er - når en e-handelsbutikk lanserer spesialtilbud med gode rabatter som på Black Friday. Alternativt, når en nettapplikasjon direktestrømmer et favoritt-TV-program.
  • JMeter er et så nyttig verktøy for å gjøre piggtesting.

Spørsmål og svar

Stresstesting øker belastningen gradvis inntil systemet går i stykker, for å finne taket. Spiketesting påfører den ekstreme belastningen umiddelbart, for å se om et plutselig sjokk forårsaker feil som en gradvis rampe ikke ville gjort.

Et system som holder seg oppe, men aldri går tilbake til normale responstider, har likevel sviktet brukerne som kommer etter toppen. Gjenopprettingstiden er målingen som gjenspeiler den reelle forretningspåvirkningen.

Baser det på en reell hendelse i stedet for et rundt tall. Historisk trafikk fra et tidligere salg eller en lansering, multiplisert med forventet vekst siden, gir et forsvarlig mål.

AI-modeller trent på historisk trafikk, markedsføringskalendere og eksterne signaler forutsier når bølger vil oppstå, noe som lar team forhåndsskalere infrastruktur i stedet for å reagere etterpå.

Ja. AI-verktøy kan utlede toppprofiler fra tilgangslogger for produksjon, og dermed gjengi den sanne formen til tidligere bølger i stedet for en kunstig trinnvis endring.

Oppsummer dette innlegget med: