Mitä on skaalautuvuustestaus? Opi esimerkin avulla

⚡ Älykäs yhteenveto

Skaalautuvuustestaus mittaa sovelluksen käyttäytymistä käyttäjän kuormituksen, datamäärän tai tapahtumanopeuden noustessa tai laskiessa, paljastaen tarkan pisteen, jossa suorituskyvyn skaalautuminen pysähtyy, ja tunnistaen vastuussa olevan pullonkaulan.

  • 🔘 Määritelmä: Ei-toiminnallinen testi, joka tarkistaa, toimiiko järjestelmä edelleen hyväksyttävästi kysynnän kasvaessa.
  • ☑️ Kaksi suuntaa: Pystysuuntainen skaalaus lisää tehoa yhteen koneeseen; vaakasuuntainen skaalaus lisää useampia koneita tasapainottimen taakse.
  • Keskeiset mittarit: Vasteaika, läpimenoaika, suorittimen ja muistin käyttö sekä verkon käyttöaste ovat tracjokaisella kuormitusvaiheella.
  • 🧪 Menetelmä: Kuorma kasvaa suunnitellusti, kunnes mittari ylittää kynnysarvonsa, joka merkitsee skaalautuvuusrajaa.
  • 🛠️ työkalut: JMeter, k6, Gatling, Locust ja LoadRunner luovat hajautetun kuormituksen ja tallentavat tulokset automaattisesti.
  • 📈 Tulokset: Kapasiteettisuunnittelusta tulee arvailun sijaan näyttöön perustuvaa, joten versiot selviävät liikennepiikeistä.

Mikä on skaalautuvuustestaus

Mitä on skaalautuvuustestaus?

Skaalautuvuuden testaus on ei-toiminnallinen testausmenetelmä, joka mittaa järjestelmän tai verkon suorituskykyä, kun käyttäjäpyyntöjen määrää skaalataan ylös tai alas. Skaalautuvuustestauksen tarkoituksena on varmistaa, että järjestelmä pystyy käsittelemään ennustetun käyttäjäliikenteen, datamäärän ja tapahtumatiheyden kasvun. Se testaa järjestelmän kykyä vastata kasvavaan kysyntään.

Skaalautuvuustestaus on yksi testauksen alatyypeistä suorituskyvyn testaus, joten se keskittyy sovelluksen käyttäytymiseen, kun se otetaan käyttöön suuremmassa järjestelmässä tai sitä käytetään ylikuormituksen alaisena. OhjelmistotuotantoSkaalautuvuustestaus mittaa pisteen, jossa sovellus lopettaa skaalautumisen, ja tunnistaa syyn siihen.

Miksi skaalautuvuustestausta tehdään?

Kapasiteettiongelmia esiintyy harvoin toiminnallisen testauksen aikana. Ne nousevat esiin vuoden vilkkaimpana kaupankäyntipäivänä, markkinointikampanjan alkaessa tai kun kahden vuoden ajan hiljaisesti kasvanut tietojoukko lopulta hidastaa jokaista kyselyä. Skaalautuvuustestaus paljastaa nämä rajoitukset ensin kontrolloidussa ympäristössä. Tarkemmin sanottuna se auttaa sinua:

  • Määritä, miten sovellus skaalautuu työmäärän kasvaessa ja missä käyrä loivenee.
  • Määritä verkkosovelluksen samanaikaisten käyttäjien enimmäismäärä, ennen kuin vasteajat muuttuvat kohtuuttomaksi.
  • Määritä asiakaspuolen heikkeneminen ja loppukäyttäjän käyttökokemus kuormituksen aikana, kuten hidas näytön renderöinti.
  • Määritä palvelinpuolen toimintavarmuus ja heikkeneminen, mukaan lukien suorittimen kyllästyminen, muistivuodot ja yhteyspoolin loppuminen.

Suhde on helpoin hahmottaa käyränä: läpimenoaika kasvaa lisääntyneen kuormituksen myötä, kunnes resurssi kyllästyy, minkä jälkeen lisäkäyttäjät vain pidentävät jonoa.

Skaalautuvuustestaus mittaa järjestelmän suorituskykyä työmäärän kasvaessa

Skaalautuvuustestauksen tyypit

Skaalautuvuus ei ole yksittäinen ominaisuus, joten testaussuunnitelma kattaa yleensä useamman kuin yhden ulottuvuuden. Alla olevat neljä tyyppiä ovat ne, joita useimmat tiimit mittaavat, ja kaksi ensimmäistä määräävät itse testiympäristön muodon.

Tyyppi Mikä on skaalattu Mitä testi todistaa
Vertikaalinen skaalautuvuus (skaalaa ylös) Yhdelle palvelimelle lisätty suoritin, muisti tai tallennustila Kuinka paljon lisäkuormaa yksi päivitetty kone absorboi ja missä yhden solmun katto sijaitsee
Vaakasuuntainen skaalautuvuus (skaalataan ulos) Lisäpalvelimet, -kontit tai -solmut kuormitustasapainottimen takana Kasvaako läpimeno suunnilleen suhteessa lisättyjen solmujen määrään vai rajoittavatko jaetut resurssit sitä
Toiminnallinen skaalautuvuus Uusia ominaisuuksia, moduuleja tai palveluita Voidaanko lisättyä toiminnallisuutta hyödyntää heikentämättä olemassa olevia tapahtumia
Hallinnollinen skaalautuvuus Hallittavat käyttäjät, vuokralaiset, tiimit tai ympäristöt Säilyvätkö perehdytys, käyttöoikeudet ja valvonta toimivina organisaation kasvaessa

Vertikaalinen skaalaus on yksinkertaisempaa, koska arkkitehtuuri muuttuu harvoin, mutta yksittäisellä koneella on aina rajansa. Vaakasuora skaalaus poistaa tämän rajan ja parantaa vikasietoisuutta verkon viiveen, datan yhtenäisyyden ja koordinointikustannusten kustannuksella – kaikkia näitä testin on mitattava eikä oletettava.

Mitä skaalautuvuustestauksessa testataan

Skaalautuvuutta arvioidaan mittausten, ei näyttökertojen, perusteella. Kirjaa seuraavat ominaisuudet jokaisella latausvaiheella, jotta trendi, eikä vain lopullinen luku, on näkyvissä.

Ominaisuus Mitä se kertoo sinulle
Vasteaika Käyttäjäpyynnön ja järjestelmän vastauksen välinen aika; sen tulisi pysyä tasaisena samanaikaisuuden kasvaessa
Näytön siirtyminen Kuinka nopeasti yksi sivu tai näkymä vaihtuu seuraavaan ladattaessa
suoritusteho Käsiteltyjen pyyntöjen määrä aikayksikköä kohden; tasanne osoittaa skaalautuvuuden rajaa
Aikamittaukset Istuntoaika, uudelleenkäynnistysaika, tulostusaika, tapahtuma-aika ja tehtävän suoritusaika
Suorituskyky suhteessa käyttäjämäärään Miten kukin mittari liikkuu, kun samanaikaisia ​​käyttäjiä lisätään vähitellen
Pyyntöhinnat Pyyntöjä sekunnissa, tapahtumia sekunnissa ja osumia sekunnissa
Verkon käyttö Kulutettu kaistanleveys ja pakettien viive tasojen välillä
Suorittimen ja muistin käyttö Resurssikustannukset tapahtumaa kohden; tasaisesti nouseva luku viittaa usein vuotoon
Verkkopalvelinlaskurit Pyyntöjen ja vastausten määrä sekunnissa, jonon syvyys ja hylätyt yhteydet
Suorituskyky kuormitettuna Yhdistetty käyttäytyminen, kun kaikki mittarit luetaan yhdessä huippuhetkellä

Skaalautuvuustestauksen testausstrategia

Skaalautuvuustestauksen testausstrategia vaihtelee testattavan sovelluksen tyypin mukaan. Jos sovellus käyttää tietokanta, testausparametreihin kuuluvat tietokannan koko suhteessa käyttäjien määrään ja niin edelleen.

Skaalautuvuustestauksen edellytykset

  • Kuormanjakokyky — Tarkista, mahdollistaako kuormitustestityökalu kuorman luomisen useista koneista ja ohjaamisen keskitetysti.
  • Operating System – Tarkista, mitä käyttöjärjestelmät Kuormanluontiagentit ja kuormitustestien päätoiminto toimivat.
  • Suoritin — Tarkista, minkä tyyppistä suoritinta virtuaalinen käyttäjäagentti ja kuormitustestien pääkone vaativat.
  • Muisti — Tarkista, kuinka paljon muistia riittäisi virtuaaliselle käyttäjäagentille ja kuormitustestien pääpalvelimelle.
  • Testiympäristössä — Tarkista, että testiympäristössä peilaa tuotantoa riittävän tarkasti, jotta tulokset voidaan siirtää.

Kuinka tehdä skaalautuvuustestaus

  1. Määrittele toistettava prosessi skaalautuvuustestien suorittamiseksi koko sovelluksen elinkaaren ajan
  2. Määritä skaalautuvuuden kriteerit
  3. Lista kuormitustestin suorittamiseen tarvittavista ohjelmistotyökaluista
  4. Aseta testausympäristö ja konfiguroi skaalautuvuustestien suorittamiseen tarvittava laitteisto
  5. Suunnittele testiskenaariot sekä skaalautuvuustestit
  6. Luo ja tarkista virtuaalikäyttäjän skripti
  7. Luo ja tarkista kuormitustestiskenaariot
  8. Suorita testit
  9. Arvioi tulokset
  10. Luo tarvittavat raportit

Skaalautuvuustestisuunnitelma

Ennen kuin varsinaisesti luot testit, laadi yksityiskohtainen testisuunnitelma. On tärkeä vaihe varmistaa, että testi täyttää sovelluksen vaatimukset.

Seuraavassa on attribuutit hyvin määritellyn luomiseen Testisuunnitelma Skaalautuvuustestausta varten.

  • Skriptien vaiheetTestiskriptissä tulisi olla yksityiskohtaiset vaiheet, jotka määrittävät tarkalleen käyttäjän suorittamat toiminnot.
  • Ajonaikaiset tiedotTestaussuunnitelman tulisi määrittää kaikki ajonaikaiset tiedot, joita tarvitaan sovelluksen kanssa vuorovaikutukseen.
  • Tietoihin perustuvat testitJos skriptit tarvitsevat vaihtelevaa dataa suorituksen aikana, sinun on ymmärrettävä kaikki kentät, jotka tätä dataa tarvitsevat.

Skaalautuvuustestauksen esimerkki

Ajatellaanpa verkkokauppaa, joka odottaa 2 000 samanaikaista ostajaa sesonkialennusmyynnin aikana. Tiimi sopii ensin hyväksymiskriteeristä: kassatapahtuman on oltava valmis alle kolmessa sekunnissa 95 prosentilla käyttäjistä, ja virheprosentin on oltava alle yksi prosentti.

Testi suorittaa sitten saman selaa-hae-ostoskori-kassa -skriptin 250, 500, 1 000, 1 500 ja 2 000 virtuaalikäyttäjälle. Vastausaika on lähes kaksi sekuntia 1 000 käyttäjään asti, hidastuu 2.8 sekuntiin 1 500 käyttäjällä ja saavuttaa yhdeksän sekuntia 2 000 käyttäjällä, kun tietokannan suorittimen käyttöaste on 98 prosenttia. Skaalautuvuusraja on siis noin 1 500 käyttäjää, ja pullonkaulana on tietokantataso – eivät sovelluspalvelimet, jotka tiimi oli suunnitellut lisäävänsä.

Skaalautuvuustestaustyökalut

Skaalautuvuustestaus tarvitsee työkalun, joka pystyy luomaan kuormitusta useilta koneilta samanaikaisesti ja raportoimaan tulokset keskitetysti. Valinta seuraa yleensä tiimin ensisijaista kieltä ja testattavia protokollia.

Työkalu Scripting Soveltuu parhaiten
Apache JMeter GUI- ja XML-testaussuunnitelmat, Java perustua Laaja protokollakattavuus, mukaan lukien JDBC, JMS, LDAP ja SOAP
Grafana k6 JavaKäsikirjoitus tai TypeScript API- ja mikropalvelutestit kytkettynä CI/CD-putkeen
gatling Java, Kotlin tai Scala DSL Suuri virtuaalikäyttäjien määrä injektoria kohden yksityiskohtaisilla HTML-raporteilla
heinäsirkka tavallinen Python Python tiimit, joiden on laajennettava asiakasohjelmaa HTTP:n ulkopuolelle
Hienosäätö C-tyyppiset skriptit tallennettuna VuGeniin Suuryritysten ympäristöt, joissa on vanhoja ja paketoituja sovelluksia

Pilvipalveluissa toimivat juoksijat, kuten BlazeMeterLoadView ja Gatling Enterprise toimivat useiden näiden moottoreiden päällä, ja niitä kannattaa harkita, kun testi tarvitsee kymmeniätuhansia virtuaalisia käyttäjiä tai liikennettä useilta maantieteellisiltä alueilta. Laajempi katsaus kategoriaan on saatavilla oppaassa suorituskyvyn testaustyökalut.

Skaalautuvuustestauksen haasteet ja parhaat käytännöt

Pettymyksellisimmät skaalautuvuustulokset tracPalataan testiasetelmiin sovelluksen sijaan. Nämä ovat toistuvat ongelmat ja niitä estävät tavat.

Yhteiset haasteet

  • Liian pienet ympäristöt — Testilaitteisto, jossa on puolet tuotantomuistista, raportoi pullonkaulan, jota ei esiinny tuotannossa.
  • Epärealistiset työmäärämallit — Skriptit, joilla ei ole ajatteluaikaa tai datan vaihtelua, osuvat välimuisteihin, jotka oikeat käyttäjät eivät huomaisi.
  • Meluisia tuloksia — Automaattinen skaalaus, roskienkeruu ja jaettu pilvilaitteisto aiheuttavat kahden identtisen ajokerran ristiriitaa.
  • Ohut havaittavuus — Ilman palvelinpuolen mittareita hidas tulos osoittaa, että jokin oli rikki, mutta ei sitä, mikä.
  • Hinta — Erittäin suuren samanaikaisuuden luominen vaatii oman kuormageneraattorien laivaston, joka on helppo alibudjetoida.

Parhaat käytännöt

  • Sovi läpäisykriteereistä, kuten vasteajan persentiilistä ja virheprosentin ylärajasta, ennen ensimmäistä ajoa.
  • Lisää kuormitusta suunnitelluissa vaiheissa ja pidä kutakin vaihetta riittävän kauan, jotta järjestelmä asettuu.
  • Vaihtele testidataa virtuaalikäyttäjää kohden, jotta välimuisti ei imartele tuloksia.
  • Kerää sovellus-, tietokanta- ja infrastruktuurimittareita asiakaspuolen lukujen rinnalla.
  • Tallenna testiskriptit versionhallintaan ja suorita lyhyt skaalautuvuustarkistus jokaiselle koontiversiolle ja sitten täysi tarkistus ennen julkaisua.
  • Vertaile trendejä eri versioiden välillä sen sijaan, että arvioisit yksittäistä raporttia erikseen.

Skaalautuvuustestaus vs. kuormitustestaus

Nämä kaksi sekoitetaan usein, koska molemmat kuormittavat. Ero on siinä, mihin kysymykseen kumpikin vastaa: Skaalautuvuustestaus kysyy, kuinka paljon järjestelmä voi kasvaa, kun taas kuormitustestaus kysyy, kestääkö se jo odotetun kuormituksen.

Perusta Skaalautuvuuden testaus Kuormitustesti
Focus Se keskittyy verkkosivustojesi, ohjelmistojesi, laitteistojesi ja sovellustesi suorituskykyyn, kun järjestelmän kokoon tai volyymiin tehdään muutoksia kasvavan tarpeen täyttämiseksi. Kuormitustestaus keskittyy sovelluksen testaamiseen raskaan kuormituksen alaisena sen määrittämiseksi, missä vaiheessa järjestelmän vasteaika epäonnistuu.
Kuormituskuvio Kuorma nostetaan vaiheittain, ja resursseja voidaan lisätä vaiheiden välillä Kuorma pidetään odotetussa huipputasossa tietyn ajan
Kysymykseen vastattu Kuinka pitkälle tämä järjestelmä voi kasvaa ja mikä sitä rajoittaa? Täyttääkö tämä järjestelmä sovitut tavoitteensa tänään?
Tyypillinen teho Skaalautuvuusraja, pullonkaula ja kapasiteettisuunnitelma Hyväksytty tai hylätty vasteaika- ja läpäisykykytavoitteiden perusteella

Molemmat istuvat alla ei-toiminnallinen testaus sateenvarjo rinnalla stressitestaus, piikkitestaus, kestävyystestit ja volyymitestaus, ja kypsä suorituskykystrategia yleensä ajaa useita niistä samoja skriptejä vasten.

UKK

Koneoppimismallit lukevat historiallisia suoritustietoja merkitäkseen, mikä mittari poikkesi ensin, erottaakseen todelliset regressiot pilvikohinasta ja ennustaakseen kuormitustason, jolla resurssi kyllästyy. Useat kaupalliset alustat tarjoavat tätä nyt automatisoituna suorituksen jälkeisenä analyysinä.

Kyllä. Copilot ja vastaavat agentit varaavat k6 tai Locust-skenaariot, luovat parametrisoitua testidataa ja rakentavat CI-putken vaiheet nopeasti. Suorituskykyinsinöörin on silti asetettava realistiset ajatteluajat, työmäärän yhdistelmät ja läpäisykriteerit, koska ne tulevat tuotantokäyttäytymisestä.

Skaalautuvuus tarkoittaa kykyä kasvaa resurssien lisäyksen myötä, olipa se sitten minuutteja tai kuukausia. Joustavuus tarkoittaa kykyä lisätä ja vapauttaa resursseja automaattisesti kysynnän muuttuessa ja palata sitten pienempään jalanjälkeen.

Aloita selvästi odotetun huipun alapuolelta, usein kymmenestä kahteenkymmeneen prosenttiin, varmistaaksesi skriptin ja monitoroinnin toimivuuden. Nosta laskentaa tasaisin askelin kohti tavoitetta ja sen yli, koska mielenkiintoinen käyttäytyminen ilmenee kahden askeleen välillä eikä yhden luvun kohdalla.

Yksi toimistokone ei voi luoda kymmeniätuhansia istuntoja, eikä se voi toistaa käyttäjän toisella alueella kokemaa viivettä. Pilvitestaus toimittaa kuormageneraattoreita useille alueille kysynnän mukaan ja vapauttaa ne ajon päätyttyä.

Suorita lyhyt tarkistus jokaiselle koontiversiolle, jotta regressiot tulevat esiin päivän sisällä, ja täysi porrastettu ajo ennen julkaisua, joka muuttaa arkkitehtuuria, tietokannan kaavaa tai liikenneodotuksia. Odottaminen viikkoon ennen julkaisua ei jätä aikaa korjata testin löydöksiä.

Katkosten aikana menetettyjen tapahtumien lisäksi hitaat sivut ohjaavat kävijöitä kilpailijoille ja vahingoittavat hakutulosten sijoituksia. Vähittäiskaupassa ja lipunmyynnissä katkos tapahtuu yleensä vuoden tuottoisimpaan päivään, jolloin liikenne oli ennustettavissa.

Skriptien sisääntulo Javakäsikirjoitus, Python or Java, HTTP:n ja tietokannan toiminnan käytännön tuntemus, palvelin- ja säilömetriikkojen lukemisen taito sekä riittävästi tilastotietoja prosenttipisteen erottamiseksi keskiarvosta. Pilvi- ja CI/CD-tuntemus on tullut lähes välttämättömäksi.

Tiivistä tämä viesti seuraavasti: