Mi az a STRESSZ-tesztelés a szoftvertesztelésben?

⚡ Okos összefoglaló

A stressztesztelés egy alkalmazást a normál működési határain túlra kényszerít, hogy megtalálja a töréspontot, megerősítse, hogy a hibákat szabályosan kezeli, és bizonyítsa, hogy a rendszer zökkenőmentesen helyreáll, miután a szélsőséges terhelést eltávolították.

  • 🔘 Meghatározás: A stressztesztelés a robusztusságot és a hibakezelést sokkal nagyobb terhelés alatt méri, mint amit az éles forgalom valaha is nyújtani tud.
  • ☑️ Célkitűzés: A teszt pontosan meghatározza a meghibásodási pontot, és ellenőrzi a helyreállítást, miután a terhelés visszaesik a normál szintre.
  • Hatály: Az elosztott, az alkalmazás-, a tranzakciós, a rendszerszintű és a felfedező változatok mindegyike a rendszer egy-egy rétegét hangsúlyozzák.
  • 🧪 Folyamat: Tervezés, forgatókönyvírás, végrehajtás, elemzés, majd finomhangolás – általában három vagy négy teljes cikluson keresztül, mielőtt a referenciaértékek teljesülnek.
  • 🇧🇷 szerszámozás: Betöltési futtató, Apache JMeter, StressTester és NeoEgyidejű virtuális felhasználók generálása és válaszadatok rögzítése.
  • 📊 Mutatók: Az eredményt az átviteli sebesség, a másodpercenként beolvasott oldalak száma, a találati idő, az első bájt eléréséhez szükséges idő és a sikertelen kapcsolatok száma számszerűsíti.

Stressztesztelés a szoftvertesztelésben

Mi az a stresszteszt?

Stressz tesztelés A stressztesztelés egy olyan szoftvertesztelési típus, amely egy szoftveralkalmazás stabilitását és megbízhatóságát ellenőrzi. A stressztesztelés célja a szoftver robusztusságának és hibakezelési képességeinek mérése rendkívül nagy terhelési körülmények között, valamint annak biztosítása, hogy a szoftver ne omoljon össze kritikus helyzetekben. Szándékosan teszteli a normál működési pontokon túl, és értékeli, hogyan viselkedik a szoftver extrém körülmények között.

A stressztesztelés során a tesztelt alkalmazást (AUT) rövid ideig stressznek vetik alá, hogy felfedezzék a teherbírását. A stressztesztelés leggyakoribb felhasználási területe annak a határnak a meghatározása, amelynél a rendszer, a szoftver vagy a hardver meghibásodik. Azt is ellenőrzi, hogy a rendszer hatékony hibakezelést mutat-e, ha ezt a határt átlépik.

In SzoftverfejlesztésA stressztesztelést gyakran a ... mellett sorolják fel. Tartóssági tesztelés, de a kettő különbözik: A terheléstesztelés során abnormálisan nagy terhelést alkalmaznak rövid idő alatt, hogy megtalálják a törési pontot, míg a tartóssági (áztatási) teszt során mérsékelt terhelést tartanak órákon át, hogy feltárják a fokozatos romlást.

Az alábbi képernyőkép egy nagyméretű adatblokkot mutat be, amelyet egy weboldalról másolnak.

Nagyon nagy adatblokk másolása egy weboldalról egy asztali alkalmazás terhelésének csökkentése érdekében

A tesztelt alkalmazás túlterheltté válik, amikor 5 GB adatot másolnak ki a weboldalról és beillesztenek a Jegyzettömbbe. A Jegyzettömb ekkor túlterheltté válik, és „Nem válaszol” hibaüzenetet ad vissza, pontosan úgy, ahogy a következő képernyőképen is látható.

A Jegyzettömb „Nem válaszol” hibaüzenetet jelenít meg 5 GB adat beillesztése után

Ugyanez az elv közvetlenül skálázható a szerveroldali rendszerekre is.

Stresszteszt szükségessége

Vegyük figyelembe a következő valós idejű példákat, ahol a stressztesztelés használata nyilvánvalóvá válik:

  • A fesztivál ideje alatt online áruházping a webhely forgalmának megugrását tapasztalhatja, vagy amikor leárazást jelent be.
  • Amikor egy blogot megemlítenek egy vezető újságban, hirtelen megugrott a forgalom.

Rendkívül fontos a stressztesztelés elvégzése az ilyen rendellenes forgalmi csúcsok kezelésére. Ennek a hirtelen forgalomnak a kezelésének elmulasztása bevételkieséshez és hírnévvesztéshez vezethet.

A stressztesztelés a következő okok miatt is rendkívül értékes:

  • Ellenőrzi, hogy a rendszer rendellenes körülmények között is működik-e.
  • Megerősíti, hogy a rendszer terhelés alatt megfelelő hibaüzenet jelenik meg.
  • A rendszerhiba szélsőséges körülmények között hatalmas bevételkiesést okozhat.
  • Jobb felkészülni a szélsőséges körülményekre a stresszteszt előzetes elvégzésével.

A következő rész ismerteti, hogy mit kell bizonyítania egy sikeres stressztesztnek.

A stresszteszt céljai

A stressztesztelés célja a rendszer viselkedésének elemzése egy hiba után. Ahhoz, hogy a stresszteszt sikeres legyen, a rendszernek megfelelő hibaüzenetet kell megjelenítenie extrém körülmények között.

A stressztesztelés elvégzéséhez néha hatalmas adathalmazokat használnak, és ezek az adatok elveszhetnek a rendszer meghibásodása során. A tesztelőknek biztosítaniuk kell, hogy ezek a biztonsággal kapcsolatos adatok ne vesszenek el a stressztesztelés során.

A stressztesztelés fő célja annak biztosítása, hogy a rendszer meghibásodás után helyreálljon, ezt a tulajdonságot helyreállíthatóságnak nevezzük. Helyreállítási tesztelés majd részletesen ellenőrzi a helyreállítási eljárást.

Terhelésteszt vs. stresszteszt

Mindkét technika a következőhöz tartozik: Teljesítményfelmérés család, így könnyű összetéveszteni őket. Az alábbi ábra a két terhelési profilt hasonlítja össze.

A terhelésteszt állandó terhelési profilját a feszültségteszt növekvő terhelési profiljával összehasonlító grafikon

Terhelésvizsgálat Stressz tesztelés
Terhelésvizsgálat Normál terhelési körülmények között teszteli a rendszer viselkedését; szimulálja a ténylegesen várható terhelést. A stressztesztelés a rendszer viselkedését vizsgálja extrém körülmények között, és addig folytatódik, amíg a rendszer meghibásodik.
A terheléstesztelés nem teszi tönkre a rendszert. A stressztesztelés szándékosan megpróbálja feltörni a rendszert azáltal, hogy túlterheli azt adatokkal, vagy erőforrásoktól kíméli meg.

Kapcsolódó profilok a következők: Spike tesztelés (egy hirtelen, rövid fellángolás), Hangerőteszt (nagy adatmennyiség, nem pedig sok felhasználó) és Méretezhetőség tesztelése (növekedési mozgástér).

A stressztesztek típusai

A következőkben a stressztesztelés típusait ismertetjük, egyenként.

Elosztott stressztesztelés

Elosztott kliens-szerver rendszerekben a tesztelés a szerverről induló összes kliensen történik. A terhelésteszt-szerver szerepe, hogy elosszon egy sor terheléstesztet az összes terhelésteszt-kliens között, és hogy... track az egyes kliensek állapotát. Miután egy kliens kapcsolatba lép a szerverrel, a szerver hozzáadja a kliens nevét, és megkezdi az adatok küldését tesztelésre. Az alábbi ábra azt mutatja, hogy a stressz szerver hogyan ér el egyes klienseket, másokat pedig nem.

Elosztott stressztesztelési beállítás, ahol a stresszkiszolgáló eléri a Client1-et és a Client2-t, de elveszíti a kapcsolatot a Client3-mal és Client4-gyel

Eközben a kliens gépek egy jelet, vagy szívverést küldenek, megerősítve, hogy továbbra is csatlakoznak a szerverhez. Ha a szerver nem kap jelet a kliens géptől, akkor azt a gépet további vizsgálatnak kell alávetni a hibakeresés érdekében. Az ábrán a szerver 2 klienshez (Kliens1 és Kliens2) tud csatlakozni, de nem tud jelet küldeni vagy fogadni a 3-as és a 4-es klienstől.

Az ilyen stressztesztelési forgatókönyvekhez az éjszakai futtatás a legjobb megoldás. A nagy szerverfarmoknak hatékonyabb módszerre van szükségük annak meghatározására, hogy mely számítógépeken történtek olyan stresszhibák, amelyeket meg kell vizsgálni.

Alkalmazási stressztesztelés

Ez a tesztelés egyetlen alkalmazásban az adatzárolással és -blokkolással, hálózati problémákkal és teljesítménybeli szűk keresztmetszetekkel kapcsolatos hibák felkutatására összpontosít.

Tranzakciós stressztesztelés

Stressztesztet végez egy vagy több tranzakción két vagy több alkalmazás között. A rendszer finomhangolására és optimalizálására szolgál.

Szisztémás stressztesztelés

Ez egy integrált stressztesztelés, amely több, ugyanazon a szerveren futó rendszeren futtatható. Olyan hibák megtalálására szolgál, ahol az egyik alkalmazás blokkolja a másik alkalmazás adatait.

Feltáró stressztesztelés

Ez a fajta stressztesztelés a rendszer szokatlan paraméterekkel vagy olyan körülmények között történő tesztelésére szolgál, amelyek valószínűtlenül fordulnának elő valós forgatókönyvben. Váratlan helyzetekben, például:

  • Nagyszámú felhasználó jelentkezett be egyszerre.
  • Egyszerre indul el egy víruskereső az összes gépen.
  • Egy adatbázis offline állapotba kerül, miközben egy webhelyről férnek hozzá.
  • Nagy mennyiségű adatot töltenek be egyszerre az adatbázisba.

Bármelyik változat is érvényes, a végrehajtási sorrend ugyanaz marad.

Hogyan kell stressztesztet csinálni?

A stressztesztelés folyamata 5 fő lépésben végezhető el:

  • 1. lépés) A stresszteszt megtervezése: Itt gyűjti össze a rendszeradatokat, elemzi a rendszert, és meghatározza a stresszteszt céljait.
  • 2. lépés) Automatizálási szkriptek létrehozása: Ebben a fázisban létrehozza a stressztesztelés automatizálási szkriptjeit, és generálja a tesztadatokat a stresszforgatókönyvekhez.
  • 3. lépés) Szkript végrehajtása: Ebben a szakaszban futtatja a stressztesztelés automatizálási szkriptjeit, és tárolja a stressz eredményeit.
  • 4. lépés: Eredmények elemzése: Ebben a szakaszban elemzi a stresszteszt eredményeit és azonosítja a szűk keresztmetszeteket.
  • 5. lépés) Finomítás és optimalizálás: Ebben a szakaszban finomhangolja a rendszert, módosítja a konfigurációkat és optimalizálja a kódot a kívánt teljesítménymutató elérése érdekében.

Végül újra lefuttatod a teljes ciklust, hogy megállapítsd, a módosítások elhozták-e a kívánt eredményt. Például nem ritka, hogy 3-4 stressztesztelési ciklusra van szükség a teljesítménycélok eléréséhez, ezért a szkripteket általában a ... mellett karbantartják. regresszió tovább.

Stresszteszthez ajánlott eszközök

Az alábbi négy eszköz a legtöbb igényt lefedi, a vállalati csomagoktól az ingyenes, nyílt forráskódú opciókig.

LoadRunner

LoadRunner egy széles körben használt terheléstesztelő eszköz, amelyet most már forgalmaz OpenText a Professional, Enterprise és Cloud kiadásokban, miután a HP-ről a Micro Focusra váltott OpenTextA LoadRunner által generált terhelésteszt eredményeit benchmarkként kezeljük.

JMeter

Apache JMeter egy nyílt forráskódú tesztelőeszköz. Ez egy tiszta Java alkalmazás stressz- és teljesítményvizsgálatokhoz, és olyan teszttípusokat kíván lefedni, mint a terheléses, funkcionális és feszültségvizsgálatok. A jelenlegi 5.6.x kiadások a következőket tartalmazzák: Apache JMeter szükség Java 8-as vagy újabb verzióval, Java 17 ajánlott.

Stressz teszter

Ez az eszköz átfogó elemzést nyújt a webes alkalmazások teljesítményéről, grafikus formában jeleníti meg az eredményeket, és egyszerűen használható. Nincs szükség magas szintű szkriptekre, így a befektetés megtérülése alacsony marad.trackisebb csapatok számára.

NeoTerhelés

NeoTerhelés, most része a Tricentis portfólió, egy népszerű eszköz webes teszteléshez és Mobil alkalmazásokTöbb ezer felhasználó szimulálására képes, hogy kiértékelje az alkalmazások teljesítményét terhelés alatt, és elemezze a válaszidőket. Támogatja a felhőbe integrált teljesítmény-, terhelés- és stressztesztelést is, és jól skálázható.

További lehetőségek a tájékoztatóban találhatók teljesítménytesztelő eszközökBármelyiket is választjuk, a kimenete csak az alábbi metrikákhoz képest jelent valamit.

Mérőszámok a stressztesztekhez

A metrikák segítenek a rendszer teljesítményének értékelésében, és általában a stresszteszt végén tanulmányozzák őket. A gyakran használt metrikák három családba vannak csoportosítva.

Skálázhatóság és teljesítmény mérése

  • Oldalszám másodpercenként: Azt méri, hogy másodpercenként hány oldalt kértek le.
  • Teljesítmény: Egy alapvető metrika – a válasz adatmérete másodpercenként.
  • Forduló: A tesztelési forgatókönyvek megtervezésének száma a kliens általi végrehajtásának számához képest.

Alkalmazási válasz

  • Találati idő: Egy kép vagy oldal lekérésének átlagos ideje.
  • Első bájtig eltelt idő: Az adat vagy információ első bájtjának visszaadásához szükséges idő.
  • Oldalidő: Az oldal összes információjának lekéréséhez szükséges idő.

Hibák

  • Sikertelen kapcsolatok: Az ügyfél által elutasított sikertelen kapcsolatok száma (gyenge jel).
  • Sikertelen körök: A sikertelen körök száma.
  • Sikertelen találatok: A rendszer által sikertelen próbálkozások száma (hibás linkek vagy nem látott képek).

A záró rész felsorolja azokat a helyzeteket, amelyek a leggyakrabban indokolják a stresszteszt elvégzését.

A stressztesztelés példái

A stressztesztelés akkor nyeri el a helyét, amikor egy esemény várhatóan jóval a napi alapértéket meghaladó forgalmat eredményez:

  • Egy fesztivál leárazást hirdető e-kereskedelmi weboldal.
  • Egy hírportál egy fontos esemény idején.
  • Egy oktatási bizottság közzéteszi a vizsgaeredményeket.
  • Közösségi oldalak, blogok és mobilalkalmazások egy virális pillanatban.

A teszt minden esetben figyeli az olyan erőforrásokat, mint a memória, a processzor és a hálózat, ellenőrzi, hogy a megfelelő hibaüzenetek jelennek-e meg terhelés alatt, és megerősíti, hogy a rendszer ezt követően visszatér-e a normál állapotba. szoftvertesztelés életciklusa nem funkcionális ellenőrzésként mellette Rendszer tesztelés és a szélesebb körű szoftvertesztelési típusok.

GYIK

Nem. A terheléstesztelés során rendellenesen nagy terhelést alkalmaznak rövid ideig a törési pont megtalálásához. Áztatás vagy állóképességi tesztelés valós terhelést tart fenn sok órán keresztül, hogy feltárja a memóriaszivárgásokat és lassítsa a degradációt.

Tüskék tesztelése egy hirtelen, nagyon rövid túlterhelést vet a rendszerre, és méri, hogy milyen gyorsan skálázódik és áll helyre. A stressztesztelés fokozatosan növeli a terhelést a meghibásodásig, így a határértékre ad választ, nem pedig a rendszer reakciósebességére.

Futtass egyet minden nagyobb kiadás előtt, minden előre látható forgalmi csúcs, például akció vagy eredménynap előtt, valamint a gyorsítótárazás, a kapcsolat-pooling vagy az automatikus skálázás architektúrájának megváltoztatása után. Sok csapat negyedévente is megismétli alapellenőrzésként.

Használjon a termelési környezethez a költségvetés által megengedett legnagyobb mértékben illeszkedő méretű környezetet, mivel a túl kicsi hardverek jelentik a töréspontot. Töltse fel maszkolt vagy szintetikus termelési volumenadatokkal, és soha ne irányítson destruktív terheléses futtatást élő ügyfélrekordokra.

A gépi tanulási modellek a termelési telemetria adatainak elemzésével valósághű csúcsforgalmi profilokat hoznak létre, megjelölik azokat az anomáliás válaszidő-görbéket, amelyeket egy fix küszöbérték nem érne el, és összefüggésbe hozzák az erőforrás-metrikákat a szűk keresztmetszetre mutató hivatkozásokkal. Számos kereskedelmi platform ma már terhelési forgatókönyveket generál a megfigyelt használati minták alapján.

Igen. Másodpilóta-tervezetek JMeter teszttervek, k6 vagy Gatling szkriptek, paraméteres adatgenerátorok és CI folyamatlépések egy egyszerű nyelvi promptból. A kimenetet első vázlatként kell kezelni: a gondolkodási idők, az ütemezés és az állítások ellenőrzéséhez továbbra is tesztelőre van szükség.

Feltárja a valódi kapacitáskorlátot, igazolja a hibakezelést, és csökkenti a csúcsidőszakokban jelentkező kiesések kockázatát. A korlátok a költségek – az éles méretű környezetek és licencek drágák –, valamint a szkriptelési erőfeszítés és az eredmények változása, amikor az infrastruktúra változik.

Teljesítménymérnökök vagy speciális tesztelők futtatják, általában fejlesztők és üzemeltetési személyzet jelenlétében, akik a szervermetrikákat olvassák le. A funkcionális feladatok után kerül sor rá. rendszertesztelés, miután a build elég stabil ahhoz, hogy a hibák inkább kapacitáskorlátokat, mint hibákat jelezzenek.

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