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.
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.
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
- Määrittele toistettava prosessi skaalautuvuustestien suorittamiseksi koko sovelluksen elinkaaren ajan
- Määritä skaalautuvuuden kriteerit
- Lista kuormitustestin suorittamiseen tarvittavista ohjelmistotyökaluista
- Aseta testausympäristö ja konfiguroi skaalautuvuustestien suorittamiseen tarvittava laitteisto
- Suunnittele testiskenaariot sekä skaalautuvuustestit
- Luo ja tarkista virtuaalikäyttäjän skripti
- Luo ja tarkista kuormitustestiskenaariot
- Suorita testit
- Arvioi tulokset
- 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.

