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.
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 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
- Määrake korratav protsess skaleeritavustestide teostamiseks kogu rakenduse elutsükli vältel
- Määrake skaleeritavuse kriteeriumid
- Koormustesti käivitamiseks vajalike tarkvaratööriistade loend
- Määrake testimiskeskkond ja konfigureerige skaleeritavustestide läbiviimiseks vajalik riistvara
- Planeeri nii testistsenaariume kui ka skaleeritavusteste
- Loo ja kontrolli virtuaalse kasutaja skripti
- Looge ja kontrollige koormustesti stsenaariume
- Tehke testid
- Hinnake tulemusi
- 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.

