A performancia tesztelésről dióhéjban

?

Témakör

2020-12-18

Mi a performancia tesztelés?

Olyan nem funkcionális tesztelési folyamat, amellyel a szoftver teljesítményét lehet meghatározni. Tehát vizsgálhatjuk az applikáció sebességét, válaszidejét, stabilitását, terhelhetőségét és erőforrás-felhasználását különböző terhelések mellett. Fontos megemlíteni, hogy már a fejlesztés korai szakaszában van értelme performancia tesztelést végezni, amely segít felderíteni a teljesítménnyel kapcsolatos problémákat, amikor még könnyebben és kisebb költséggel javítható.

Miért fontos a performancia tesztelés?

Alapvetően elmondható, hogy időt és pénzt spórolunk vele. Ha a fejlesztés korai szakaszában – a fejlesztői környezetben már stabilan működő alkalmazást – kezdünk teljesítmény szempontjából tesztelni, hamarabb fény derülhet az esetleges megbízhatósággal kapcsolatos problémákra.

A teszt futtatása után, levonhatjuk az elkészült riportokból a következtetést, hogy az alkalmazás elegendő erőforrással rendelkezik-e az előre meghatározott KPI – ok (Key Performance Indicator) teljesítésére, vagy esetlegesen hardver bővítésre, fejlesztői optimalizációra szorul.

Milyen fajtái vannak a performancia tesztelésnek?

A performancia tesztelés egy gyűjtőfogalom, sok fajtája létezik, de ezek közül 3 leggyakoribbat érdemes megemlíteni.

  • Load Test (Terheléses teszt): Itt azt vizsgáljuk, hogy normális vagy magasabb terhelés mellett a rendszer hogyan viselkedik. Ilyen terhelés lehet konkurens felhasználószám, Api hivások, vagy adatbázis műveletek, stb.. A lehetséges bottleneck-ek ezzel a teszt típussal láthatóvá válnak. Ilyen lehet például az adatbázissal vagy valamilyen külső rendszerrel való kommunikáció vagy programozási hibából, figyelmetlenségből eredő erőforrásigényes működés.
  • Stress Test: Ezen teszt célja, hogy a normálisnál nagyobb terhelést adva a rendszernek figyeljük, hogyan reagálnak az egyes komponensek. A terhelést folyamatosan növeljük, ameddig a rendszer össze nem omlik. Ezzel felderítjük a rendszerösszeomlás jeleit, így nyerve tapasztalatot az esetleges éles összeomláshoz, és megismerjük a fejlesztett rendszer korlátait.
  • Soak Test (Kitartási teszt): Ez egyfajta terheléses teszt, melynek célja, hogy egy meghatározott terhelésen tartsa a rendszert hosszú időn keresztül. Ezzel megtapasztalhatjuk, hogy az applikáció megfelelően működik-e folyamatos terhelés alatt. Megfigyelhető továbbá esetleges memóriaszivárgás, a rendszer válaszidejének növekedése vagy egyéb teljesítmény mutatójának romlása.

Hogyan végezzünk performancia tesztet?

Mielőtt ténylegesen belefognánk az adott rendszer tesztelésébe, sok kérdést érdemes tisztázni a tesztkörnyezettel kapcsolatban. Milyen hardver erőforrásokkal rendelkezik a szerver? (Érdemes itt megemlíteni, hogy valid performanciát mérni egy éles környezettel megegyező tesztkörnyezetben lehet.) Hány felhasználó fogja használni? Hogyan fogják azt elérni? Milyen hálózati kapcsolat van az egyes komponensek között? És még folytathatnánk.

Ha a felmerülő kérdésekre megtaláltuk a válaszokat, a következő lépés a tesztelés megkezdése előtt a kilépési pontok meghatározása teljesítmény mutatók segítségével (KPI). Például egyszerre képes 4000 konkurens adatbázis műveletet végrehajtani másodpercenként.

Fontos továbbá, hogy a tesztelők tisztában legyenek az alkalmazás üzleti folyamatival abból a célból, hogy a teszteseteket ki tudják választani a performancia tesztelés megtervezéséhez.

A teszteléshez szükségünk van különböző eszközökre, amelyek segítségével szimulálhatóvá válnak a tesztesetek vagy a felhasználói interakciók. Az eszköz palettán megtalálhatóak egyaránt licenszköteles, illetve nyílt forráskódú szoftverek. Az utóbbi csoportba tartozik például a Jmeter, a Grinder, vagy a Locust.io.

Ha már minden rendelkezésre áll, a tesztelők futtatják a teszteket és monitorozzák a tesztfutásokat, végül kielemzik és értékelik őket. Az így kiszűrt hibák korai felderítése, jelentősen csökkentik a szoftver életciklusa során felmerült költségeket.

Ezek is érdekelhetnek