Tehokasta kuormitustestausta JMeterillä

16.09.2025

Nettisivujen päämääränä on saada mahdollisimman paljon käyttäjiä lukemaan ja käyttämään niiden sisältöä. Mutta mitä jos kävijämäärä nouseekin yhtäkkiä paljon suuremmaksi kuin normaalisti? Kuinka sivustot reagoivat liikenteen suureen kasvuun? Nämä ovat tärkeitä kysymyksiä, joita kehittäjien pitää miettiä. Jos näitä ei ole huomioitu ennakkoon, testaus toteutuu vasta tuotantoympäristössä.

Käyttämällä kuormitustestaustyökaluja, voimme helposti testata ja löytää ne ominaisuudet, jotka hidastavat sivustoa. Tässä blogikirjoituksessa käydään läpi, miten päästään kuormitustestaamisen alkuun käyttäen Apachen JMeter-työkalua. Kirjoitus sai inspiraationsa Codegardenissa kuullusta Joe Kepleyn luennosta "Effective Load Testing With JMeter".

 

Miksi tehdä kuormitustestausta?

Modernit verkkopalvelut ovat teknologioiltaan suuria ja monimutkaisia. On siis yleistä, että jotkin ominaisuudet jäävät ilman optimointia tai laajaa testaamista. Nämä ominaisuudet saattavat silloin hidastaa sivustojen suorituskykyä. Ominaisuudet kuten ulkoiset rajapintakutsut, tietokantakyselyt ja indeksien haut voivat helposti koitua tällaisiksi. Niiden suorituskykyä ei saata huomatakaan lokaalissa kehitysympäristössä tai edes tuotannossa, kun kävijämäärä on matala, mutta käytön lisääntyessä ne hidastavat koko palvelimen toimintaa.

Nämä ongelmat voidaan helpommin löytää käyttämällä tehokasta kuormitustestausta. Sen avulla simuloida myös paikallisesti useiden kävijöiden tuottamaa efektiä sivuston suorituskyvylle. Simuloimalla suuren määrän käyttäjiä, haasteet paljastuvat jo kehitysvaiheessa.

 

Kuormitustestauksen alkuun JMeterillä

JMeter on Javalla kirjoitettu avoimen lähdekoodin kuormitustestaustyökalu. Se voidaan helposti ottaa käyttöön millä vain tietokoneella ja käyttöjärjestelmällä, jossa on Java 8 tai uudempi versio, koska se on kirjoitettu täysin Javalla ilman ulkoisia riippuvuuksia. (Apache JMeter | apache.org)

JMeterin yksinkertaiseen käyttöön on hyvä ymmärtää seuraavat sovelluksessa käytetyt perusominaisuudet.

  • Thread Groupia käytetään käyttäjien toimintojen simulointiin sekä miten jokainen Thread esittää käyttäjää
  • Sampler on toiminto/pyyntö mitä haluamme, että thread group tekee
  • Timer hoitaa ajoitukset kuten pyyntöjen väliset viiveet sekä virtuaalikäyttäjän tauot
  • Listener tallentaa testin tulokset ja esittää ne testin päätyttyä

 

Yksinkertainen kuormitustesti

Kun halutut ominaisuudet ovat tiedossa voidaan luoda yksinkertainen testi, joka käy halutuilla sivuilla. Ensimmäiseksi on luotava Thread Group, johon lisätään virtuaalikäyttäjät. “Number of Threads” tarkoittaa käyttäjien määrää. “Ramp-up Period” puolestaan aikaa sekunneissa, että käyttäjien maksimimäärä saavutetaan.

JMeter käyttöliittymä jossa lisätään Thread Group

Seuraavaksi asetetaan testin toiminto, mikä esimerkin syystä pidetään yksinkertaisena. Lähetetään yksittäinen HTTP-pyyntö paikalliseen projektiin. Tämä tapahtuu valitsemalla taas ”Add > Sampler ja HTTP Request” juuri luodun Thread Groupin kohdalla.

JMeter käyttölittyymä jossa Thread Grouppiin lisätään HTTP pyyntö sampler

Seuraavaksi luodaan Timer, joka lisää pyyntöjen väliin 300 millisekunnin tauon. Sen tavoite on tehdä liikenteestä luonnollisempaa. Timer jolla on vakioaikaväli, voidaan lisätä klikkaamalla juuri luotua HTTP-pyyntöä ja valitsemalla “Add > Timer > Constant Timer”.

JMeter käyttöliittymä jossa HTTP pyyntöön lisätään Timer.

Viimeiseksi luodaan Listener, jolla saadaan testin tulokset ja muuta tietoa sivuston käyttäytymisestä. Listener lisätään Thread Groupia painamalla oikealla hiiren painikkeella ja valitsemalla “Listener > View Results Tree”.

 JMeter käyttöliittymä jossa Thread Gruoppiin Listener

 

Mitä seuraavaksi?

JMeter mahdollistaa huomattavasti monimutkaisempien testauksien ja käyttäjätoimintojen luomisen, joten seuraavaksi kannattaa kokeilla viedä tämä esimerkki pidemmälle ja katsoa miten sen voisi integroida projekteihin.

Voit jatkaa JMeteriin tutustumista dokumentaatiosta Apache JMeter – User’s Manual. GUI-sovellusten lisäksi on myös saatavilla koodipohjaisia testaustyökaluja kuormitustestausta varten. Näitä ovat muun muassa Locust sekä K6, jotka myös ovat avoimen lähdekoodin projekteja.

Ota meihin yhteyttä, niin muutetaan ideasi ratkaisuiksi!