Hva er skalerbarhetstesting? Lær med eksempel
⚡ Smart oppsummering
Skalerbarhetstesting måler hvordan en applikasjon oppfører seg når brukerbelastning, datavolum eller transaksjonshastighet øker eller synker, og avslører det nøyaktige punktet der ytelsen slutter å skalere og identifiserer flaskehalsen som er ansvarlig.
Hva er skalerbarhetstesting?
Skalerbarhetstesting er en ikke-funksjonell testmetode som måler ytelsen til et system eller nettverk når antallet brukerforespørsler skaleres opp eller ned. Formålet med skalerbarhetstesting er å sikre at systemet kan håndtere en anslått økning i brukertrafikk, datavolum og transaksjonsfrekvens. Den tester systemets evne til å møte økende etterspørsel.
Skalerbarhetstesting er en undertype av ytelsestesting, så den konsentrerer seg om oppførselen til en applikasjon når den distribueres til et større system eller trenes under overbelastning. Engineering programvareSkalerbarhetstesting måler punktet der en applikasjon slutter å skalere og identifiserer årsaken bak dette.
Hvorfor skalerbarhetstesting?
Kapasitetsproblemer oppstår sjelden under funksjonstesting. De dukker opp på årets travleste handelsdag, når en markedsføringskampanje starter, eller når et datasett som har vokst stille i to år endelig bremser alle spørringer. Skalerbarhetstesting avdekker først disse begrensningene i et kontrollert miljø. Mer spesifikt hjelper det deg med å:
- Bestem hvordan applikasjonen skaleres etter hvert som arbeidsmengden øker, og hvor kurven flater ut.
- Bestem grensen for samtidige brukere for webapplikasjonen før responstidene blir uakseptable.
- Bestem forringelse på klientsiden og sluttbrukeropplevelsen under belastning, for eksempel treg skjermgjengivelse.
- Bestem robusthet og degradering på serversiden, inkludert CPU-metning, minnelekkasjer og uttømming av tilkoblingspoolen.
Forholdet er enklest å se for seg som en kurve: gjennomstrømningen øker i takt med økt belastning inntil en ressurs mettes, hvoretter ekstra brukere bare forlenger køen.
Typer skalerbarhetstesting
Skalerbarhet er ikke en enkelt egenskap, så en testplan dekker vanligvis mer enn én dimensjon. De fire typene nedenfor er de som de fleste team måler, og de to første bestemmer formen på selve testmiljøet.
| typen | Hva er skalert | Hva testen beviser |
|---|---|---|
| Vertikal skalerbarhet (oppskalere) | CPU, minne eller lagring lagt til én server | Hvor mye ekstra belastning én oppgradert maskin absorberer, og hvor taket for én node sitter |
| Horisontal skalerbarhet (skaler ut) | Ekstra servere, containere eller noder bak en lastfordeler | Om gjennomstrømningen øker omtrent proporsjonalt med nodene som legges til, eller om delte ressurser begrenser den |
| Funksjonell skalerbarhet | Nye funksjoner, moduler eller tjenester | Om ekstra funksjonalitet kan absorberes uten å forringe eksisterende transaksjoner |
| Administrativ skalerbarhet | Brukere, leietakere, team eller miljøer som skal administreres | Om onboarding, tillatelser og overvåking fortsatt fungerer etter hvert som organisasjonen vokser |
Vertikal skalering er enklere fordi arkitekturen sjelden endres, men en enkelt maskin har alltid et tak. Horisontal skalering fjerner dette taket og forbedrer feiltoleransen, på bekostning av nettverkslatens, datakonsistens og koordineringsoverhead – alt dette må testen måle i stedet for å anta.
Hva du skal teste i skalerbarhetstesting
Skalerbarhet vurderes ut fra målinger, ikke visninger. Registrer følgende attributter ved hvert innlastingstrinn, slik at trenden, og ikke bare det endelige tallet, er synlig.
| Egenskap | Hva det forteller deg |
|---|---|
| Responstid | Tid mellom en brukerforespørsel og systemsvar; den bør forbli flat etter hvert som samtidigheten øker |
| Skjermovergang | Hvor raskt én side eller visning viker for den neste under innlasting |
| gjennomstrømming | Antall behandlede forespørsler per tidsenhet; et platå markerer skalerbarhetsgrensen |
| Tidsmålinger | Økttid, omstartstid, utskriftstid, transaksjonstid og oppgaveutførelsestid |
| Ytelse mot brukerantall | Hvordan hver metrikk endrer seg etter hvert som samtidige brukere legges til i trinn |
| Be om priser | Forespørsler per sekund, transaksjoner per sekund og treff per sekund |
| Nettverksbruk | Båndbreddeforbruk og pakkeforsinkelse mellom nivåer |
| CPU- og minnebruk | Ressurskostnad per transaksjon; et jevnt stigende tall signaliserer ofte en lekkasje |
| Webservertellere | Forespørsler og svar per sekund, kødybde og avviste tilkoblinger |
| Ytelse under belastning | Kombinert oppførsel når hver metrikk er lest sammen på topp |
Teststrategi for skalerbarhetstesting
Teststrategien for skalerbarhetstesting varierer avhengig av hvilken type applikasjon som testes. Hvis en applikasjon får tilgang til en database, vil testparametrene inkludere størrelsen på databasen i forhold til antall brukere, og så videre.
Forutsetninger for skalerbarhetstesting
- Lastdistribusjonsevne — Sjekk om lasttestverktøyet gjør det mulig å generere lasten fra flere maskiner og styre den fra et sentralt punkt.
- Operating System – Sjekk hva operativsystemer Lastgenereringsagentene og lasttestmasteren kjører under.
- prosessor — Sjekk hvilken type CPU som kreves for den virtuelle brukeragenten og lasttestmasteren.
- Minne — Sjekk hvor mye minne som er nok for den virtuelle brukeragenten og last inn testmasteren.
- Test miljø — Sjekk at test miljø speiler produksjonen godt nok til at resultatene kan overføres.
Slik gjør du skalerbarhetstesting
- Definer en repeterbar prosess for å utføre skalerbarhetstester gjennom hele applikasjonens livssyklus
- Bestem kriteriene for skalerbarhet
- Liste over programvareverktøyene som kreves for å kjøre belastningstesten
- Still inn testmiljøet og konfigurer maskinvaren som kreves for å utføre skalerbarhetstester
- Planlegg testscenariene samt skalerbarhetstestene
- Opprett og bekreft det virtuelle brukerskriptet
- Opprett og verifiser belastningstestscenariene
- Utfør testene
- Evaluer resultatene
- Generer de nødvendige rapportene
Skalerbarhetstestplan
Før du faktisk lager testene, bør du utvikle en detaljert testplan. Det er et viktig trinn for å sikre at testen samsvarer med applikasjonskravene.
Følgende er attributtene for å lage en veldefinert Testplan for skalerbarhetstesting.
- Trinn for skriptTestskriptet bør ha detaljerte trinn som bestemmer nøyaktig hvilke handlinger en bruker ville utføre.
- KjøretidsdataTestplanen bør bestemme eventuelle kjøretidsdata som kreves for å samhandle med applikasjonen.
- Datadrevne testerHvis skriptene trenger varierende data under kjøring, må du ha en forståelse av alle feltene som krever disse dataene.
Eksempel på skalerbarhetstesting
Tenk deg en nettbutikk som forventer 2,000 samtidige kunder i løpet av et sesongsalg. Teamet blir først enige om et beståttkriterium: kassetransaksjonen må fullføres på under tre sekunder for 95 prosent av brukerne, med en feilrate under én prosent.
Testen kjører deretter det samme «browse-search-cart-checkout»-skriptet ved 250, 500, 1,000, 1,500 og 2,000 virtuelle brukere. Responstiden holder seg nesten to sekunder opp til 1,000 brukere, går ned til 2.8 sekunder ved 1,500, og når ni sekunder ved 2,000 mens database-CPU-en ligger på 98 prosent. Skalerbarhetsgrensen er derfor omtrent 1,500 brukere, og flaskehalsen er databasenivået – ikke applikasjonsserverne teamet hadde planlagt å legge til.
Verktøy for skalerbarhetstesting
Skalerbarhetstesting trenger et verktøy som kan generere belastning fra flere maskiner samtidig og rapportere resultater sentralt. Valget følger vanligvis teamets primære språk og protokollene som testes.
| Tool | scripting | Passer best til |
|---|---|---|
| Apache JMeter | GUI pluss XML-testplaner, Java basert | Bred protokolldekning, inkludert JDBC, JMS, LDAP og SOAP |
| Grafana k6 | JavaManus eller TypeScript | API- og mikrotjenestetester koblet til en CI/CD-pipeline |
| Gatling | Java, Kotlin eller Scala DSL | Høyt antall virtuelle brukere per injektor med detaljerte HTML-rapporter |
| Locust | Plain Python | Python team som trenger å utvide klienten utover HTTP |
| Loadrunner | C-lignende skript registrert i VuGen | Store bedriftsområder med eldre og pakkede applikasjoner |
Skybaserte løpere som BlazeMeter, LoadView og Gatling Enterprise ligger oppå flere av disse motorene og er verdt å vurdere når en test trenger titusenvis av virtuelle brukere eller trafikk fra flere geografiske regioner. En bredere oversikt over kategorien er tilgjengelig i veiledningen til verktøy for ytelsestesting.
Utfordringer og beste praksis innen skalerbarhetstesting
De mest skuffende skalerbarhetsresultatene tractilbake til testoppsettet i stedet for applikasjonen. Dette er problemene som gjentar seg, og vanene som forhindrer dem.
Vanlige utfordringer
- Underdimensjonerte miljøer — En testrigg med halvparten av produksjonsminnet rapporterer en flaskehals som ikke finnes i produksjonen.
- Urealistiske arbeidsbelastningsmodeller — Skript uten tenketid eller datavariasjon treffer mellomlagringer som ekte brukere ville gått glipp av.
- Støyende resultater — Automatisk skalering, søppeltømming og delt skymaskinvare gjør at to identiske kjøringer ikke stemmer overens.
- Tynn observerbarhet – Uten serversidemålinger viser et tregt resultat at noe feilet, men ikke hva.
- Kostnad — Generering av svært høy samtidighet krever sin egen flåte av lastgeneratorer, noe som er lett å underbudsjettere.
Beste praksis
- Bli enige om beståttkriteriene, som en persentil for responstid og et tak for feilrate, før første kjøring.
- Øk belastningen i planlagte trinn og hold hvert trinn lenge nok til at systemet roer seg.
- Varier testdata per virtuell bruker, slik at mellomlagring ikke flaterer resultatene.
- Samle inn applikasjons-, database- og infrastrukturmålinger sammen med tallene fra klientsiden.
- Lagre testskript i versjonskontroll og kjør en kort skalerbarhetssjekk på hver versjon, deretter en full kjøring før utgivelse.
- Sammenlign trender på tvers av bygg i stedet for å bedømme én enkelt rapport isolert.
Skalerbarhetstesting kontra belastningstesting
De to blir ofte forvekslet fordi begge legger belastning. Forskjellen ligger i spørsmålet hver av dem svarer på: Skalerbarhetstesting spør hvor langt systemet kan vokse, mens lastetesting spør om den takler den allerede forventede belastningen.
| Base | Skalerbarhetstesting | Load Testing |
|---|---|---|
| Fokus | Den fokuserer på ytelsen til nettsteder, programvare, maskinvare og applikasjoner når det gjøres endringer i systemets størrelse eller volum for å møte et økende behov. | Lasttesting fokuserer på å teste en applikasjon under tung belastning for å bestemme på hvilket tidspunkt systemets responstid svikter. |
| Lastemønster | Lasten heves i trinn, og ressurser kan legges til mellom trinnene | Lasten holdes på en forventet topp i en fast periode |
| Spørsmål besvart | Hvor langt kan dette systemet vokse, og hva begrenser det? | Oppfyller dette systemet de avtalte målene i dag? |
| Typisk utgang | En skalerbarhetsgrense, en flaskehals og en kapasitetsplan | En bestått eller ikke bestått målsetting for responstid og gjennomstrømning |
Begge sitter under ikke-funksjonell testing paraply ved siden av stresstesting, piggtesting, utholdenhetstesting og volumtesting, og en moden ytelsesstrategi kjører vanligvis flere av dem mot de samme skriptene.

