Mis on mastaapsuse testimine? Õppige näitega

⚡ Nutikas kokkuvõte

Skaleeritavuse testimine mõõdab rakenduse käitumist kasutajakoormuse, andmemahu või tehingute kiiruse suurenemise või languse korral, paljastades täpse punkti, kus jõudluse skaleerimine peatub, ja tuvastades selle eest vastutava kitsaskoha.

  • 🔘 Määratlus: Mittefunktsionaalne test, mis kontrollib, kas süsteem töötab nõudluse kasvades endiselt vastuvõetavalt.
  • ☑️ Kaks suunda: Vertikaalne skaleerimine lisab ühele masinale võimsust; horisontaalne skaleerimine lisab tasakaalustuspingi taha rohkem masinaid.
  • Peamised mõõdikud: Reaktsiooniaeg, läbilaskevõime, protsessori ja mälu kasutus ning võrgu kasutamine on tracigal koormuse etapil.
  • 🧪 Meetod: Koormus suureneb plaaniliste sammudega, kuni mõõdik ületab oma läve, mis tähistab skaleeritavuse piiri.
  • 🛠️ tööriistad: JMeter, k6, Gatling, Locust ja LoadRunner genereerivad hajutatud koormuse ja salvestavad tulemused automaatselt.
  • 📈 Tulemus: Mahtuvusplaneerimine muutub oletuspõhiseks, mitte tõenduspõhiseks, seega versioonid jäävad püsima ka liikluse järskude tõusude korral.

Mis on skaleeritavuse testimine

Mis on skaleeritavuse testimine?

Skaleeritavuse testimine on mittefunktsionaalne testimismeetod, mis mõõdab süsteemi või võrgu jõudlust kasutajapäringute arvu suurenemisel või vähenemisel. Skaleeritavustestimise eesmärk on tagada, et süsteem suudab hakkama saada prognoositava kasutajaliikluse, andmemahu ja tehingute sageduse suurenemisega. See testib süsteemi võimet rahuldada kasvavat nõudlust.

Skaleeritavustestimine on alamliik jõudluse testimine, seega keskendub see rakenduse käitumisele, kui see juurutatakse suuremasse süsteemi või kui seda koormatakse ülemäärase koormuse all. TarkvaraarendusSkaleeritavuse testimine mõõdab punkti, kus rakendus lõpetab skaleerimise, ja tuvastab selle põhjuse.

Miks skaleeritavuse testimine toimub?

Mahtuvusprobleemid ilmnevad funktsionaaltestimise ajal harva. Need tulevad esile aasta kõige tihedamal kauplemispäeval, turunduskampaania saabumisel või kui kaks aastat vaikselt kasvanud andmestik aeglustab lõpuks iga päringut. Skaleeritavustestimine paljastab need piirid kõigepealt kontrollitud keskkonnas. Täpsemalt aitab see teil:

  • Määrake, kuidas rakendus töökoormuse suurenedes skaleerub ja kus see kõver lameneb.
  • Määrake veebirakenduse samaaegsete kasutajate limiit enne, kui vastuseajad muutuvad vastuvõetamatuks.
  • Määrake kliendipoolne halvenemine ja lõppkasutaja kogemus koormuse all, näiteks aeglane ekraani renderdamine.
  • Serveripoolse töökindluse ja halvenemise, sh protsessori küllastuse, mälulekke ja ühenduste kogumi ammendumise kindlakstegemine.

Suhet on kõige lihtsam kujutada kõverana: läbilaskevõime kasvab koos lisanduva koormusega, kuni ressurss küllastub, mille järel lisakasutajad ainult pikendavad järjekorda.

Skaleeritavuse testimine mõõdab süsteemi jõudlust töökoormuse suurenedes

Skaleeritavuse testimise tüübid

Skaleeritavus ei ole üksik omadus, seega hõlmab testimisplaan tavaliselt rohkem kui ühte dimensiooni. Allpool on neli tüüpi, mida enamik meeskondi mõõdab, ja kaks esimest määravad testimiskeskkonna enda kuju.

KASUTUSALA Mis on skaleeritud Mida test tõestab
Vertikaalne skaleeritavus (suurenda) Ühele serverile lisatud protsessor, mälu või salvestusruum Kui palju lisakoormust üks täiustatud masin neelab ja kus asub ühe sõlme lagi
Horisontaalne skaleeritavus (väljaskaleerimine) Koormuse tasakaalustaja taga olevad täiendavad serverid, konteinerid või sõlmed Kas läbilaskevõime suureneb ligikaudu proportsionaalselt lisatud sõlmedega või piiravad seda jagatud ressursid
Funktsionaalne skaleeritavus Uued funktsioonid, moodulid või teenused Kas lisafunktsionaalsust saab kasutada ilma olemasolevaid tehinguid halvendamata
Administratiivne skaleeritavus Haldatavad kasutajad, rentnikud, meeskonnad või keskkonnad Kas sisseelamine, load ja jälgimine jäävad toimima ka organisatsiooni kasvades

Vertikaalne skaleerimine on lihtsam, kuna arhitektuur muutub harva, kuid ühel masinal on alati lagi. Horisontaalne skaleerimine eemaldab selle lae ja parandab rikketaluvust võrgu latentsuse, andmete järjepidevuse ja koordineerimiskulude arvelt – kõike seda peab test mõõtma, mitte eeldama.

Mida skaleeritavustestimisel testida

Skaleeritavust hinnatakse mõõtmiste, mitte muljete põhjal. Salvestage igal laadimisetapis järgmised atribuudid, et nähtav oleks trend, mitte ainult lõpparv.

Atribuut Mida see teile ütleb
Reageerimisaeg Aeg kasutaja päringu ja süsteemi vastuse vahel; see peaks samaaegsuse suurenedes jääma samaks.
Ekraani üleminek Kui kiiresti üks leht või vaade laadimise ajal teisele asendub
Läbilaskevõime Ajaühiku kohta töödeldud päringute maht; platoo tähistab skaleeritavuse piiri
Aja mõõtmised Seansi aeg, taaskäivitamise aeg, printimise aeg, tehingu aeg ja ülesande täitmise aeg
Toimivus võrreldes kasutajate arvuga Kuidas iga mõõdik liigub samaaegsete kasutajate lisamisel sammhaaval
Päringuhinnad Päringud sekundis, tehingud sekundis ja tabamused sekundis
Võrgukasutus Tarbitud ribalaius ja pakettide latentsus tasandite vahel
Protsessori ja mälu kasutamine Ressursikulu tehingu kohta; pidevalt kasvav näitaja viitab sageli lekkele
Veebiserveri loendurid Taotluste ja vastuste arv sekundis, järjekorra pikkus ja tagasilükatud ühendused
Jõudlus koormuse all Kombineeritud käitumine, kui kõiki mõõdikuid on tipphetkel koos loetud

Skaleeritavuse testimise strateegia

Skaleeritavuse testimise strateegia erineb olenevalt testitava rakenduse tüübist. Kui rakendus pääseb juurde andmebaas, hõlmavad testimisparameetrid andmebaasi suurust kasutajate arvu suhtes jne.

Skaalautuvuse testimise eeldused

  • Koormuse jaotusvõime — Kontrollige, kas koormustesti tööriist võimaldab koormuse genereerimist mitmelt masinalt ja selle juhtimist tsentraalsest punktist.
  • Operating System — Kontrolli, mida operatsioonisüsteemid koormuse genereerimise agendid ja koormustesti põhiprogramm töötavad selle all.
  • Protsessor — Kontrollige, millist tüüpi protsessorit on vaja virtuaalse kasutajaagendi ja koormustesti põhiskoori jaoks.
  • Mälu — Kontrollige, kui palju mälu oleks virtuaalse kasutajaagendi ja koormustesti põhisisendi jaoks piisav.
  • Testi keskkond — Kontrollige, et testimiskeskkond peegeldab tootmist piisavalt täpselt, et tulemusi saaks üle kanda.

Kuidas mastaapsuse testimist teha

  1. Määrake korratav protsess skaleeritavustestide teostamiseks kogu rakenduse elutsükli vältel
  2. Määrake skaleeritavuse kriteeriumid
  3. Koormustesti käivitamiseks vajalike tarkvaratööriistade loend
  4. Määrake testimiskeskkond ja konfigureerige skaleeritavustestide läbiviimiseks vajalik riistvara
  5. Planeeri nii testistsenaariume kui ka skaleeritavusteste
  6. Loo ja kontrolli virtuaalse kasutaja skripti
  7. Looge ja kontrollige koormustesti stsenaariume
  8. Tehke testid
  9. Hinnake tulemusi
  10. Vajalike aruannete genereerimine

Skaleeritavuse testimise plaan

Enne testide loomist töötage välja üksikasjalik testimisplaan. Oluline samm on tagada testi vastavus rakenduse nõuetele.

Järgmised on atribuudid täpselt määratletud loo loomiseks Katseplaan mastaapsuse testimiseks.

  • Skriptide toimingudTestskriptil peaksid olema üksikasjalikud sammud, mis määravad täpselt kindlaks toimingud, mida kasutaja teeb.
  • Käitusaja andmedTestiplaan peaks määrama kindlaks kõik käitusaja andmed, mis on vajalikud rakendusega suhtlemiseks.
  • Andmepõhised testidKui skriptid vajavad käitusajal erinevaid andmeid, peate mõistma kõiki välju, mis neid andmeid vajavad.

Skaleeritavuse testimise näide

Kujutage ette veebipoodi, mis eeldab hooajalise allahindluse ajal 2,000 samaaegset ostjat. Meeskond lepib kõigepealt kokku läbimiskriteeriumi: kassatehing peab 95 protsendi kasutajate jaoks lõpule viima vähem kui kolme sekundiga, veamääraga alla ühe protsendi.

Seejärel käivitab test sama sirvimis-otsingu-ostukorvi-makse skripti 250, 500, 1,000, 1,500 ja 2,000 virtuaalse kasutaja juures. Reaktsiooniaeg on kuni 1,000 kasutajani umbes kaks sekundit, 1,500 kasutaja juures langeb 2.8 sekundini ja 2,000 kasutaja juures üheksa sekundini, samal ajal kui andmebaasi protsessori koormus on 98 protsenti. Skaleeritavuse piirang on seega umbes 1,500 kasutajat ja kitsaskohaks on andmebaasi tasand, mitte rakendusserverid, mida meeskond plaanis lisada.

Skaleeritavuse testimise tööriistad

Skaleeritavuse testimiseks on vaja tööriista, mis suudab korraga genereerida koormust mitmelt masinalt ja tulemusi tsentraalselt esitada. Valik järgib tavaliselt meeskonna peamist keelt ja testitavaid protokolle.

Vahend Scripting Sobib kõige paremini
Apache JMeter GUI pluss XML testimisplaanid, Java põhineb Lai protokollide ulatus, sealhulgas JDBC, JMS, LDAP ja SOAP
Grafana k6 JavaSkript või TypeScript API ja mikroteenuste testid, mis on ühendatud CI/CD torujuhtmega
Gatling Java, Kotlin või Scala DSL Suur virtuaalsete kasutajate arv injektori kohta koos detailsete HTML-aruannetega
rändrohutirts tavaline Python Python meeskonnad, kes peavad klienti HTTP-st kaugemale laiendama
LoadRunner VuGenis salvestatud C-tüüpi skriptid Suurettevõtted pärand- ja pakettrakendustega

Pilvepõhised jooksjad, näiteks BlazeMeterLoadView ja Gatling Enterprise asuvad mitme sellise mootori peal ning neid tasub kaaluda, kui test vajab kümneid tuhandeid virtuaalseid kasutajaid või liiklust mitmest geograafilisest piirkonnast. Laiem ülevaade kategooriast on saadaval juhendis jõudluskontrolli tööriistad.

Skaleeritavuse testimise väljakutsed ja parimad tavad

Kõige pettumust valmistavamad skaleeritavuse tulemused tractagasi testi seadistuse, mitte rakenduse juurde. Need on probleemid, mis korduvad, ja harjumused, mis neid ennetavad.

Ühised väljakutsed

  • Alamõõdulised keskkonnad — Poole tootmismäluga testimisseade teatab kitsaskohast, mida tootmiskeskkonnas ei esine.
  • Ebareaalsed töökoormuse mudelid — Skriptid, millel pole mõtlemisaega ega andmete varieerumist, tabavad vahemälusid, mida päris kasutajad ei märkaks.
  • Mürakad tulemused — Automaatne skaleerimine, prügikoristus ja jagatud pilveriistvara tekitavad kahes identses tsüklis lahknevaid põhjuseid.
  • Õhuke jälgitavus — Ilma serveripoolsete mõõdikuteta näitab aeglane tulemus, et midagi oli katki, aga mitte seda, mis.
  • Maksma — Väga suure samaaegsuse genereerimiseks on vaja oma koormusgeneraatorite parki, mida on lihtne alahinnata.

parimad tavad

  • Enne esimest käivitamist leppige kokku läbimiskriteeriumid, näiteks reageerimisaja protsentiil ja veamäära ülemmäär.
  • Suurenda koormust plaaniliste sammudega ja hoia iga sammu piisavalt kaua, et süsteem stabiliseeruks.
  • Varieeri testiandmeid iga virtuaalse kasutaja kohta, et vahemällu salvestamine tulemusi ei moonutaks.
  • Koguge lisaks kliendipoolsetele numbritele ka rakenduse, andmebaasi ja infrastruktuuri mõõdikuid.
  • Salvesta testiskriptid versioonikontrolli ja käivita iga versiooni puhul lühike skaleeritavuse kontroll ning seejärel enne väljaandmist täielik kontroll.
  • Võrdle trende eri versioonide vahel, selle asemel et hinnata ühte aruannet eraldi.

Skaleeritavuse testimine vs koormustestimine

Neid kahte aetakse sageli segi, kuna mõlemad rakendavad koormust. Erinevus seisneb küsimuses, millele kumbki vastab: skaleeritavustestimisel küsitakse, kui kaugele süsteem saab kasvada, samas kui koormuse testimine küsib, kas see tuleb toime juba oodatava koormusega.

Alus Skaleeritavuse testimine Koormuse testimine
Focus See keskendub teie veebisaitide, tarkvara, riistvara ja rakenduste jõudlusele, kui süsteemi suurust või mahtu muudetakse kasvava vajaduse rahuldamiseks. Koormustestimine keskendub rakenduse testimisele suure koormuse all, et teha kindlaks, millisel hetkel süsteemi reageerimisaeg ebaõnnestub.
Koormusmuster Koormust suurendatakse sammude kaupa ja ressursse saab sammude vahel lisada. Koormust hoitakse eeldatava tipu juures kindla aja jooksul
Küsimusele vastati Kui kaugele see süsteem kasvada saab ja mis seda piirab? Kas see süsteem täidab täna kokkulepitud eesmärke?
Tüüpiline väljund Skaleeritavuse piirang, pudelikael ja mahutavuse plaan Läbilaskevõime ja reageerimisaja eesmärkide saavutamine või mitte

Mõlemad istuvad all mittefunktsionaalne testimine vihmavari kõrval stressitestimine, piigi testimine, vastupidavustestid ja mahu testimineja küps tulemusstrateegia käitab tavaliselt mitut neist samade skriptide alusel.

KKK

Masinõppe mudelid loevad ajaloolisi jooksuandmeid, et märkida, milline mõõdik esimesena kõrvale kaldus, eraldada tegelikud regressioonid pilvemürast ja prognoosida koormustaset, mille juures ressurss küllastub. Mitmed kommertsplatvormid pakuvad seda nüüd automatiseeritud jooksujärgse analüüsina.

Jah. Copilot ja sarnased agendid värvatakse. k6 või Locusti stsenaariumid, genereerivad parameetritega testiandmeid ja loovad CI torujuhtme samme kiiresti. Jõudlusinsener peab ikkagi seadma realistlikud mõtlemisajad, töökoormuse jaotused ja läbimise kriteeriumid, sest need tulenevad tootmiskäitumisest.

Skaleeritavus on võime kasvada ressursside lisamisel, olenemata sellest, kas see võtab minuteid või kuid. Elastsus on võime neid ressursse automaatselt nõudluse muutudes lisada ja vabastada ning seejärel väiksema jalajälje juurde naasta.

Alustage stsenaariumi ja jälgimise toimimise kinnitamiseks tunduvalt oodatust madalamal, sageli kümme kuni kakskümmend protsenti. Suurendage loendurit ühtlase sammuga sihtmärgi poole ja sellest kaugemale, kuna huvitav käitumine ilmneb kahe sammu vahel, mitte ühe numbri juures.

Üks kontorimasin ei suuda genereerida kümneid tuhandeid seansse ega taastoota latentsust, mida kogeb kasutaja teises piirkonnas. Pilvetestimine varustab nõudmisel koormusgeneraatoreid mitmes piirkonnas ja vabastab need pärast töö lõppemist.

Tehke iga versiooniuuenduse puhul lühike kontroll, et regressioonid päeva jooksul esile kerkiksid, ja enne iga versiooniuuendust, mis muudab arhitektuuri, andmebaasi skeemi või liikluse ootusi, tehke täielik astmeline kontroll. Ootamine nädal enne avaldamist ei jäta aega testi leidude parandamiseks.

Lisaks katkestusperioodil kaotatud tehingutele suunavad aeglased lehed külastajaid konkurentide juurde ja kahjustavad otsingumootorite edetabelit. Jaemüügi ja piletimüügi puhul langeb tõrge tavaliselt aasta kõrgeima tuluga päevale, mis on just see aeg, mil liiklus oli prognoositav.

Skriptimine sisse Javaskript, Python or Java, HTTP ja andmebaasi käitumise praktiline tundmine, serveri ja konteineri mõõdikute lugemine mugavalt ning piisavalt statistikat protsentiili ja keskmise eristamiseks. Pilve- ja CI/CD-kogemus on muutunud peaaegu hädavajalikuks.

Võta see postitus kokku järgmiselt: