Junior
Meséljen a terheléses tesztekről.
sobes.tech MI
Válasz az MI-től
Terheléses tesztelés egy olyan tesztelési típus, amely a rendszer (alkalmazás) teljesítményének, stabilitásának és skálázhatóságának meghatározására irányul különböző terhelések mellett.
A terheléses tesztelés feladatai:
- A rendszer által elviselhető maximális terhelés meghatározása.
- Szűk keresztmetszetek (bottleneck-ek) felismerése.
- A rendszer válaszidejének értékelése adott terhelés mellett.
- A rendszer hosszú távú stabilitásának ellenőrzése terhelés alatt.
- A rendszer skálázhatóságának tesztelése.
A terheléses tesztelés típusai:
- Terheléses tesztelés (Load Testing): A rendszer viselkedésének vizsgálata várható (üzemi) szintű terhelés mellett.
- Stressz-tesztelés (Stress Testing): A rendszer tesztelése olyan terhelés mellett, amely meghaladja az üzemi szintet, a hibák megjelenéséig. Célja a töréspont meghatározása.
- Kitartási/áztatási tesztelés (Endurance/Soak Testing): A rendszer stabilitásának vizsgálata hosszú távú közepes vagy magas terhelés mellett, memória szivárgások, teljesítményromlás felismerése idővel.
- Csúcs terhelés tesztelése (Spike Testing): A rendszer viselkedésének vizsgálata hirtelen, egyszeri terhelés növekedés esetén.
- Skálázhatósági tesztelés (Scalability Testing): A rendszer képességének értékelése a növekvő terhelés kezelésére horizontális vagy vertikális erőforrás skálázással.
- Adatmennyiség tesztelése (Volume Testing): A rendszer viselkedésének vizsgálata adatméret növekedése esetén az adatbázisban vagy más tárolókban.
A terheléses tesztelés lépései:
- Célok meghatározása: A teljesítménymutatók (válaszidő, átviteli képesség, hibák száma) és a sikerességi kritériumok pontos meghatározása.
- Szimulációk tervezése és elemzése: Felhasználói forgatókönyvek elemzése, terhelési profil meghatározása (virtuális felhasználók száma, kérések intenzitása).
- Teszt szkriptek fejlesztése: Szkriptek írása a felhasználói műveletek szimulálására terheléses tesztelő eszközök segítségével.
- Tesztkörnyezet előkészítése: A tesztállomás konfigurálása, amely a munkakörnyezetet szimulálja.
- Teszt futtatások végrehajtása: Tesztek különböző terhelésekkel.
- Monitorozás és adatok gyűjtése: A rendszer, szerverek, adatbázis teljesítménymutatóinak gyűjtése.
- Eredmények elemzése és jelentéskészítés: Az eredmények összehasonlítása a célértékekkel, problémák felismerése, jelentés készítése.
Terheléses teszteléshez használt eszközök:
- JMeter
- LoadRunner
- Gatling
- k6
- Locust
Egyszerű JMeter szkript (HTTP kérés):
<?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="Terheléses teszt példához">
<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="Példa HTTP kérés">
<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>
A terheléses tesztelés során gyűjtött metrikák:
- Válaszidő (Response Time)
- Átviteli képesség (Throughput)
- Hibák száma másodpercenként (Errors per Second)
- Kérések száma másodpercenként (Requests per Second / Transactions per Second)
- CPU kihasználtság (CPU Utilization)
- Memóriahasználat (Memory Usage)
- Merevlemez aktivitás (Disk I/O)
- Hálózati aktivitás (Network I/O)
- Adatbázis metrikák (kérések száma, lekérdezések végrehajtási ideje)
A terheléses tesztelés segít megelőzni a rendszer összeomlását a termelésben magas terhelés alatt, és biztosítja a végfelhasználók számára elfogadható minőséget.