Sobes.tech
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:

  1. 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.
  2. 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).
  3. 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.
  4. Tesztkörnyezet előkészítése: A tesztállomás konfigurálása, amely a munkakörnyezetet szimulálja.
  5. Teszt futtatások végrehajtása: Tesztek különböző terhelésekkel.
  6. Monitorozás és adatok gyűjtése: A rendszer, szerverek, adatbázis teljesítménymutatóinak gyűjtése.
  7. 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.