Mi az a terhelési tesztelés? (Példák)

⚡ Okos összefoglaló

A terheléstesztelés azt méri, hogy egy szoftveralkalmazás hogyan viselkedik, amikor egyszerre sok felhasználó fér hozzá, egészen a várható csúcsértékig. Azonosítja a maximális működési kapacitást, az azt korlátozó szűk keresztmetszeteket, és azt, hogy a jelenlegi infrastruktúra elegendő-e.

  • 👥 Alapvető definíció: Egy nem funkcionális teszt, amely a várható felhasználói csúcsterhelést alkalmazza, és méri a választ.
  • ⏱️ Fő mutató: A válaszidőnek kvantitatívnak, relevánsnak, realisztikusnak, elérhetőnek és mérhetőnek kell lennie.
  • 🏗️ Amit talál: Maximális kapacitás, infrastrukturális hiányosságok, adatbázis-korlátok és konfigurációs problémák.
  • 📉 Terhelés vs. stressz: A terhelés a várt csúcsnál megáll; a feszültség szándékosan túllép rajta, hogy megtalálja a töréspontot.
  • 🇧🇷 Szerszámozási lehetőségek: JMeterA Gatling és a k6 nyílt forráskódúak; a LoadRunner a bevált kereskedelmi választás.
  • 📋 Előfeltétel: Csak akkor futtassa, ha az alkalmazás funkcionálisan stabil, különben a hibák elfedik a teljesítményeredményeket.

Mi a terheléstesztelés?

Mi az a terhelési tesztelés?

Terhelésvizsgálat egy nem funkcionális szoftvertesztelési folyamat, amelyben a szoftveralkalmazás teljesítményét egy adott várható terhelés mellett tesztelik. Meghatározza, hogy a szoftveralkalmazás hogyan viselkedik, miközben egyszerre több felhasználó is eléri. A terhelési tesztelés célja a teljesítmény szűk keresztmetszetek javítása, valamint a szoftveralkalmazás stabilitásának és zavartalan működésének biztosítása a telepítés előtt.

Ez a teszt általában azonosítja:

  • Egy alkalmazás maximális működési kapacitása
  • Határozza meg, hogy a jelenlegi infrastruktúra elegendő-e az alkalmazás futtatásához
  • Az alkalmazás fenntarthatósága a maximális felhasználói terhelés tekintetében
  • Azon egyidejű felhasználók száma, akiket egy alkalmazás támogatni tud, és méretezhetőség, hogy több felhasználó férhessen hozzá.

Ez egyfajta nem funkcionális tesztelés. A szoftverfejlesztésben a terhelési tesztelést általában az ügyfél/szerver, web alapú alkalmazásokhoz használják – intranet és internet egyaránt.

Terhelésvizsgálat

Miért van szükség terheléses tesztelésre?

Egyes rendkívül népszerű webhelyek komoly leállásokat szenvedtek el, amikor hatalmas forgalommal rendelkeznek. Az e-kereskedelmi webhelyek sokat fektetnek a hirdetési kampányokba, de nem a terhelési tesztelésbe, hogy biztosítsák az optimális rendszerteljesítményt, amikor ez a marketing forgalmat hoz.

Terheléstesztelési példák

  • A Toysrus.com nem tudta kezelni a saját hirdetési kampánya által generált forgalmat, így elvesztette mind a marketingköltségeket, mind az eladásokat, amelyeket eredetileg generálnia kellett volna.
  • Egy légitársaság weboldala nem tudott több mint 10000 XNUMX felhasználót kezelni egy fesztiválajánlat alatt.
  • Az Encyclopedia Britannica promóciós ajánlatként hirdette meg az online adatbázisukhoz való ingyenes hozzáférést. Hetekig nem tudták lépést tartani a rohamos forgalommal.

Sok webhely késlelteti a betöltési időt, amikor nagy forgalommal találkozik. Néhány tény –

  • Az elhagyások száma meredeken emelkedik körülbelül 3 másodperces oldalbetöltési idő után, és ez a hatás felerősödik a mobilkapcsolatokon.
  • A lassú oldalak minden látogatáskor mérhető bevételt veszítenek az e-kereskedelmi webhelyekről, ezért a teljesítményt üzleti, nem pedig technikai mérőszámként kezelik.

Miért terheléses tesztelés?

  • A terhelési tesztelés bizalmat ad a rendszerben, annak megbízhatóságában és teljesítményében.
  • A terhelési tesztelés segít azonosítani a rendszer szűk keresztmetszeteit erős felhasználói stresszhelyzetekben, még mielőtt az éles környezetben bekövetkezne.
  • A terhelési tesztelés kiváló védelmet nyújt a gyenge teljesítmény ellen, és kiegészíti a teljesítménymenedzsmentet és a termelési környezet figyelését szolgáló stratégiákat.

A terhelési tesztelés céljai

A tesztelés betöltése a következő problémákat azonosítja, mielőtt az alkalmazást piacra vagy termelésre helyezi át:

  • Válaszidő minden tranzakcióhoz
  • A rendszerelemek teljesítménye különböző terhelések mellett
  • Az adatbázis-összetevők teljesítménye különböző terhelések mellett
  • Hálózati késleltetés a kliens és a szerver között
  • Szoftver tervezési problémák
  • Szerverkonfigurációs problémák, például webszerver, alkalmazásszerver, adatbázisszerver stb.
  • Hardverkorlátozási problémák, például CPU maximalizálás, memóriakorlátozások, hálózati szűk keresztmetszetek stb.

A terhelési tesztelés meghatározza, hogy a rendszert finomítani kell-e, vagy a hardver és a szoftver módosítására van szükség a teljesítmény javításához. A terhelési tesztelés hatékony lebonyolításához különféle módszereket használhat teljesítménytesztelő eszközök amelyek rendelkezésre állnak, hogy segítsenek azonosítani a fejlesztendő területeket.

A terheléses tesztelés előfeltételei

A terhelési tesztelés fő mérőszáma a válaszidő. A terhelési tesztelés megkezdése előtt meg kell határoznia:

  • A válaszidő mérése és összehasonlítása már megtörtént-e – Kvantitatív
  • A válaszidő alkalmazható-e az üzleti folyamatra – Releváns
  • Indokolt-e a válaszidő – Reális
  • Hogy a válaszidő elérhető-e – Elérhető
  • Függetlenül attól, hogy a válaszidő mérhető-e szerszámmal vagy stopperrel – Mérhető

Környezet beállítása terheléses tesztelés előtt

Hardware Platform Szoftver konfiguráció
  • Szerver gépek
  • Processzorok
  • Memory design
  • Disk Storage
  • A gépek konfigurációjának betöltése
  • Hálózati konfiguráció
  • Operating rendszer
  • Szerver szoftver

Terheléstesztelési stratégiák

A terhelési tesztelésnek számos módja van. Az alábbiakban bemutatunk néhány terhelési tesztelési stratégiát -

A terhelési tesztelés stratégiái

  • Kézi terhelési tesztelés: Ez a terhelési tesztelés végrehajtásának egyik stratégiája, de nem ad megismételhető eredményeket, nem tud mérhető szintű terhelést biztosítani egy alkalmazáson, és lehetetlen koordinálni.
  • Házon belül kifejlesztett terhelésvizsgáló eszközök: Az a szervezet, amely felismeri a terheléses tesztelés fontosságát, saját eszközöket építhet a terhelési tesztek végrehajtására.
  • Nyílt forráskódú terheléstesztelő eszközök: Számos ingyenes terhelési tesztelő eszköz áll rendelkezésre nyílt forráskódúként. Lehet, hogy nem olyan kifinomultak, mint fizetett társaik, de ha kevés a költségvetés, akkor a legjobb választás.
  • Vállalati szintű terheléstesztelő eszközök: Általában rögzítési/lejátszási lehetőséggel rendelkeznek. Számos protokollt támogatnak. Kivételesen nagy számú felhasználót tudnak szimulálni.

Hogyan kell terhelési tesztet végezni

A terhelési tesztelési folyamat röviden az alábbiak szerint írható le -

  1. Hozzon létre egy dedikált Tesztkörnyezet terhelési teszteléshez
  2. A terheléses tesztforgatókönyvek meghatározása
  3. Határozza meg egy alkalmazás terhelési tesztelési tranzakcióit
    • Minden tranzakcióhoz készítsen adatokat
    • A rendszerhez hozzáférő felhasználók számát előre kell jelezni
    • Határozza meg a kapcsolat sebességét. Egyes felhasználók bérelt vonalon keresztül csatlakozhatnak, míg mások betárcsázós kapcsolatot használhatnak
    • Határozza meg a felhasználók által használt különböző böngészőket és operációs rendszereket 
    • Az összes szerver konfigurációja, például web-, alkalmazás- és DB-kiszolgálók
  4. Tesztforgatókönyv végrehajtása és figyelése. Különféle mutatók gyűjtése
  5. Elemezze az eredményeket. Tegyen ajánlásokat
  6. Finomhangolja a rendszert
  7. Újra teszt

Terheléses tesztelésre vonatkozó irányelvek

Útmutató a terhelési teszteléshez

  1. A terhelési tesztelést meg kell tervezni, amint az alkalmazás funkcionálisan stabillá válik.
  2. Nagy számú egyedi adatnak kell készen állnia az adattárban
  3. A felhasználók számát minden forgatókönyvhöz vagy szkripthez el kell dönteni
  4. Kerülje a részletes naplók létrehozását a lemez IO-területének megtakarítása érdekében
  5. Próbálja meg elkerülni a képek letöltését az oldalon
  6. A terhelési tesztelési tesztesetek végrehajtása során naplózni kell a válaszidő konzisztenciáját az eltelt időszakban, és ezt össze kell hasonlítani a különböző tesztfutásokkal.

Különbség a terhelés és a stresszteszt között

Terhelésvizsgálat Stressz tesztelés
A terhelési tesztelés azonosítja a rendszer szűk keresztmetszeteit különböző munkaterhelések esetén, és ellenőrzi, hogyan reagál a rendszer a terhelés fokozatos növelésére Stressz tesztelés meghatározza a rendszer töréspontját, hogy felfedje azt a maximális pontot, amely után megszakad.
A rendszer felső határának felismeréséhez állítsa be az alkalmazás SLA-ját, és ellenőrizze, hogy a rendszer hogyan bírja a nagy terhelést. Annak ellenőrzésére, hogyan viselkedik a rendszer szélsőséges terhelés alatt, és hogyan áll helyre a meghibásodás után.
A terhelési tesztelés fő célja a webalkalmazások terhelésének növelése. A stresszteszt célja annak biztosítása, hogy a kiszolgálók hosszú ideig tartó, hirtelen nagy terhelés esetén ne omoljanak össze.
A terhelési teszt során ellenőrzött attribútumok a csúcsteljesítmény, a szerver mennyisége és a válaszidő. Ez a fajta tesztelés ellenőrzi a stabilitási reakcióidőt stb.
A terhelési tesztelésnél a terhelési határ a törés küszöbe. Stressz-tesztben a terhelési határ a törés küszöbértéke felett van.

A funkcionális és a terhelési teszt közötti különbség

Funkcionális tesztelés Terhelésvizsgálat
A funkcionális tesztek eredményei könnyen megjósolhatók, mivel megfelelő lépéseket és előfeltételeket határoztunk meg A terhelési tesztek eredményei megjósolhatatlanok
A funkcionális tesztek eredményei kissé eltérnek A terhelési tesztek eredményei drasztikusan változnak
A végrehajtás gyakorisága Funkcionális tesztelés magas lesz A terhelési teszt végrehajtásának gyakorisága alacsony lesz
A funkcionális tesztek eredményei a tesztadatoktól függenek A terhelési tesztelés a felhasználók számától függ.

Tesztelőeszközök betöltése

LoadRunner

LoadRunner, eredetileg a HP-tól, most pedig a HP része OpenText A Micro Focus felvásárlását követően az alkalmazásokat normál és csúcsterhelés alatt teszteli. A terhelést virtuális felhasználókon keresztül generálja, amelyek valós hálózati forgalmat emulálnak, és az eredményeket grafikusan jelenti.

További információ a LoadRunner oktatóanyag.

Apache JMeter

Nyílt forráskódú Java eszköz és a legszélesebb körben használt ingyenes opció. Támogatja a HTTP, JDBC, JMS, FTP és egyebeket, XML formátumban tárolja a tesztterveket, és integrálódik a CI-folyamatokba. Lásd a JMeter oktatói egy végigjátszáshoz.

Gatling

Egy nyílt forráskódú eszköz, amelynek tesztjei Scala vagy más nyelven íródnak. JavaSzerény hardvereken is nagy párhuzamosságot kezel, és részletes HTML-jelentéseket készít, ami azoknak a csapatoknak felel meg, akik a verzióvezérelt tesztszkripteket részesítik előnyben.

k6

Egy nyílt forráskódú eszköz, amelynek tesztjei nyelven vannak megírva JavaSzkript, amelyet fejlesztők tulajdonában lévő teljesítményteszteléshez terveztek egy CI-folyamaton belül, nem pedig különálló minőségbiztosítási tevékenységként.

Eszköz kiválasztása

Pick JMeter A legszélesebb körű, ingyenes protokolllefedettség érdekében a Gatling vagy a K6 ajánlott, ha a csapat a teszteket az alkalmazással együtt a verziókövetésben szeretné tárolni, illetve egy kereskedelmi eszköz, például a LoadRunner, ha a vállalati protokollok támogatása és a szállítói segítségnyújtás indokolttá teszi a licencet.

A terhelésteszt előnyei és hátrányai

A terhelési tesztelés előnyei a következők:

  • A teljesítmény szűk keresztmetszetek azonosítása a gyártás előtt
  • Javítja a rendszer méretezhetőségét
  • Minimalizálja a rendszerleálláshoz kapcsolódó kockázatot
  • A meghibásodás költségeinek csökkentése
  • Növelje az ügyfelek elégedettségét

A terhelési tesztelés hátrányai:

  • A legtöbb eszköz programozási ismereteket igényel a valósághű forgatókönyvek megírásához.
  • Az eszközök drágák lehetnek, mivel az ár a támogatott virtuális felhasználók számától függ.

A terheléses teszt során rögzítendő legfontosabb mutatók

Az előfeltételek szakasz a válaszidőt határozza meg fő mérőszámként. A gyakorlatban egy terheléses tesztjelentésnek hat számjegyűnek kell lennie, mivel a válaszidő önmagában nem tudja megmondani, hogy miért lassult le a rendszer.

Metric Mit mond neked Figyelmeztető jel
Átlagos válaszidő A tipikus felhasználói élmény Növekvő terhelés mellett
95. percentilis válaszidő A leglassabb felhasználók tapasztalatai Messze az átlag felett
áteresztőképesség Másodpercenként sikeresen feldolgozott kérések száma Ellaposodás vagy süllyedés, miközben a teher emelkedik
Hibaarány Sikertelen vagy időtúllépéses kérelmek aránya Bármilyen emelkedés a megállapodott küszöbérték felett
Egyidejű felhasználók Ténylegesen elért egyidejű munkamenetek Alacsonyabb, mint a forgatókönyvben szereplő érték
Szerver erőforrás-felhasználás CPU-, memória-, lemez- és hálózati tartalék Bármely erőforrás nagyjából 80 százalék felett

Olvasási átviteli sebesség a válaszidővel együtt. A növekvő átviteli sebességgel járó növekvő válaszidő egyszerűen azt jelenti, hogy a rendszer forgalmasabb. eső Az áteresztőképesség azt jelenti, hogy túllépte a kapacitását, és most munkát veszít, és ez a pont a teszt célja.

Soha ne csak az átlagot közöld. Egy 900 ms átlag 1.1 másodperces 95. percentilissel egy konzisztens rendszert ír le. Ugyanez az átlag 11 másodperces 95. percentilissel azt jelenti, hogy minden huszadik felhasználó elfogadhatatlan élményben részesül, amelyet az átlag elrejt.

Hogyan viszonyul ez a teszt más teljesítménytesztekhez

A teljesítménytesztelés olyan tesztek családja, amelyek az alkalmazott terhelés alakjában különböznek, ezért olyan könnyen összetéveszthetők.

Teszt típusa Mi a megnövekedett Kérdés, amit megválaszol
Terhelési tesztelés Egyidejű felhasználók, a várható csúcsig Teljesíti a célokat normál csúcsforgalom mellett?
Térfogatvizsgálat Az adatbázisban tárolt adatok Vajon bírja az adathalmaz növekedését?
Stressz tesztelés Terhelhetőségen túli terhelés, meghibásodásig Hol törik el, és hogyan?
Tüskék tesztelése Töltés, azonnal és rendkívül Túléli és felépül egy sokkot?
Tartóssági vizsgálat Időtartam normál terhelés mellett Idővel romlik a teljesítmény?
Áztatási tesztelés Időtartam, erőforrások megfigyelése Vannak memória- vagy fogantyúszivárgások?
Stabilitási vizsgálat Változó körülmények Megbízható marad a változó körülmények között is?

A legfontosabb különbség itt: A mennyiségi tesztelés az adatokat, a terheléses tesztelés a felhasználókat skálázza. Egy olyan jelentés, ami két másodperc alatt fut le tízezer sorral, és két perc alatt tízmillió sorral, mennyiségi problémával küzd, nem terhelési problémával, és ezt semmilyen extra szerverkapacitás nem fogja megoldani.

GYIK

A terheléstesztelés a várható csúcsterhelést alkalmazza, és ellenőrzi, hogy a célok teljesülnek-e. A stressztesztelés szándékosan túllépi a kapacitást, hogy megtalálja a töréspontot, és megerősítse a rendszer meghibásodását és szabályos helyreállítását.

Miután az alkalmazás funkcionálisan stabil, és elég korai fázisban van ahhoz, hogy a felfedezett szűk keresztmetszetet még ki lehessen javítani, az utolsó héten futtatva nincs idő a találtak alapján cselekedni.

JMeter, mivel ingyenes, a legszélesebb körű protokollt támogatja, és a legnagyobb dokumentációval rendelkezik. Ha a csapat a verziókövetett kódként írt teszteket részesíti előnyben, váltson Gatlingra vagy k6-ra.

A mesterséges intelligencia valósághű terhelési profilokat származtat az éles forgalmi naplókból, automatikusan észleli az eredményekben található anomáliákat, és a futtatás ütemezése előtt megjósolja, hogy mely kódmódosítások ronthatják valószínűleg a teljesítményt.

Igen. A mesterséges intelligencia eszközök a rögzített felhasználói utazásokat vagy API-specifikációkat futtatható szkriptekké alakítják. Ellenőrzik a generált gondolkodási időket és az adatparaméterezést, mivel a valószerűtlen értékek félrevezető eredményeket hoznak.

Foglald össze ezt a bejegyzést a következőképpen: