Junior
Rääkige mulle koormustestidest.
sobes.tech AI
Vastus AI-lt
Laadestestimine — see on testitüüp, mille eesmärk on määrata rakenduse (süsteemi) jõudlus, stabiilsus ja skaleeritavus erinevate koormuste korral.
Laadestestimise eesmärgid:
- määrata süsteemi piirkoormus;
- tuvastada "kitsaskohti" (bottlenecks);
- hinnata süsteemi reageerimisaega määratud koormuse korral;
- kontrollida süsteemi stabiilsust pikaajaliselt;
- kontrollida süsteemi skaleeritavust:
Laadestestimise tüübid:
- Koormustest (Load Testing): kontrollida süsteemi käitumist oodatud (tavalise) koormuse tasemel;
- Stressa-test (Stress Testing): kontrollida süsteemi üle normi oleva koormuse korral, kuni süsteem ebaõnnestub. Eesmärk - määrata vastupidavuse piir;
- Püsivuse/õõtsumise test (Endurance/Soak Testing): kontrollida süsteemi stabiilsust pikaajalise keskmise või kõrge koormuse korral, avastada mälulekkeid, jõudluse langust aja jooksul;
- Tippkoormuse test (Spike Testing): kontrollida süsteemi käitumist järsu ja ühe korraga suurenemise korral;
- Skaleeritavuse test (Scalability Testing): hinnata süsteemi võimet töödelda kasvavat koormust horisontaal- või vertikaalresursside skaleerimise teel;
- Andmemahtude test (Volume Testing): kontrollida süsteemi käitumist andmemahu suurenemisel andmebaasis või muudes salvestistes.
Tööetapid:
- Eesmärkide määratlemine: selgelt määratleda jõudlusmõõdikud (vastamise aeg, läbilaskevõime, vigade arv) ja kriteeriumid;
- Süžeeanalüüs ja kavandamine: analüüsida kasutajate stsenaariume, määrata koormusprofiil (virtuaalsete kasutajate arv, päringute intensiivsus);
- Testskriptide koostamine: kirjutada skriptid koormustestimise tööriistade abil, imiteerida kasutajate tegevusi;
- Testkeskkonna ettevalmistamine: luua testikeskkond, mis imiteerib töökeskkonda;
- Testide läbiviimine: erinevate koormustega testide käivitamine;
- Jälgimine ja andmete kogumine: koguda süsteemi, serverite, andmebaasi metrikuandmeid;
- Tulemuste analüüs ja aruandlus: võrrelda saadud tulemusi eesmärgimõõdikutega, tuvastada probleemid, koostada aruanne.
Koormustestimise tööriistad:
- JMeter
- LoadRunner
- Gatling
- k6
- Locust
Näide — lihtne JMeter skript (HTTP-päring):
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.2">
<hashTree>
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Koormustestimise näide">
<hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group">
<intProp name="ThreadGroup.num_threads">100</intProp>
<intProp name="ThreadGroup.ramp_time">10</intProp>
<longProp name="ThreadGroup.duration">60</longProp>
<boolProp name="ThreadGroup.scheduler">true</boolProp>
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP päring näide">
<stringProp name="HTTPSampler.domain">example.com</stringProp>
<stringProp name="HTTPSampler.path">/</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
<boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp>
<boolProp name="HTTPSampler.embedded_url_report">true</boolProp>
<boolProp name="HTTPSampler.connect_timeout"></boolProp>
<boolProp name="HTTPSampler.response_timeout"></boolProp>
<stringProp name="HTTPSampler.protocol">https</stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.comment"></stringProp>
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.image_parser">true</stringProp>
<stringProp name="HTTPSampler.concurrentDwn">Both</stringProp>
<stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
<stringProp name="HTTPSampler.implementation_status">OK</stringProp>
<boolProp name="HTTPSampler.postBodyRaw">false</boolProp>
<listProp name="HTTPSampler.HTTP_HEADERS"></listProp>
</HTTPSamplerProxy>
<hashTree/>
</hashTree>
</hashTree>
</hashTree>
</TestPlan>
</hashTree>
</jmeterTestPlan>
Koormustestimise ajal kogutavad metrikad:
- Vastamise aeg (Response Time)
- Läbivus (Throughput)
- Kliendivigade arv sekundis (Errors per Second)
- Päringute arv sekundis (Requests per Second / Transactions per Second)
- CPU kasutus (CPU Utilization)
- Mälu kasutus (Memory Usage)
- Ketaste aktiivsus (Disk I/O)
- Võrgu aktiivsus (Network I/O)
- Andmebaasi metrikad (päringute arv, päringute täitmise aeg)
Koormustestimine aitab vältida süsteemi tõrkeid tootmiskeskkonnas suure koormuse ajal ning tagada kasutajatele vastuvõetava kvaliteeditaseme.