Mi az a méretezhetőség tesztelése? Tanuljon példával
⚡ Okos összefoglaló
A skálázhatósági tesztelés azt méri, hogy egy alkalmazás hogyan viselkedik, amikor a felhasználói terhelés, az adatmennyiség vagy a tranzakciós sebesség növekszik vagy csökken, feltárva azt a pontos pontot, ahol a teljesítmény leáll a skálázódással, és azonosítva a felelős szűk keresztmetszetet.
Mi az a méretezhetőség tesztelése?
Méretezhetőség tesztelése egy nem funkcionális tesztelési módszer, amely egy rendszer vagy hálózat teljesítményét méri a felhasználói kérések számának növekedése vagy csökkenése során. A skálázhatósági tesztelés célja annak biztosítása, hogy a rendszer képes legyen kezelni a felhasználói forgalom, az adatmennyiség és a tranzakciógyakoriság várható növekedését. A rendszer azon képességét teszteli, hogy megfeleljen a növekvő igényeknek.
A skálázhatósági tesztelés egy altípusa a Teljesítményfelmérés, tehát egy alkalmazás viselkedésére összpontosít, amikor azt egy nagyobb rendszerre telepítik, vagy túlzott terhelés alatt alkalmazzák. SzoftverfejlesztésA skálázhatósági tesztelés azt a pontot méri, ahol egy alkalmazás leáll a skálázódással, és azonosítja a mögötte rejlő okot.
Miért végezzünk skálázhatósági tesztelést?
A kapacitásproblémák ritkán jelentkeznek funkcionális tesztelés során. Az év legforgalmasabb kereskedési napján, egy marketingkampány beindulásakor, vagy amikor egy két évig csendben növekvő adathalmaz végre lelassítja az összes lekérdezést. A skálázhatósági tesztelés először egy ellenőrzött környezetben tárja fel ezeket a korlátokat. Konkrétan segít:
- Határozza meg, hogyan skálázódik az alkalmazás a munkaterhelés növekedésével, és hol laposodik el ez a görbe.
- Határozza meg a webalkalmazás egyidejű felhasználói korlátját, mielőtt a válaszidők elfogadhatatlanná válnának.
- Határozza meg a kliensoldali degradációt és a végfelhasználói élményt terhelés alatt, például a lassú képernyőrenderelést.
- Határozza meg a szerveroldali robusztusságot és degradációt, beleértve a CPU-telítettséget, a memóriaszivárgásokat és a kapcsolatkészlet kimerülését.
A kapcsolatot a legkönnyebb görbeként ábrázolni: az átviteli sebesség a további terheléssel együtt növekszik, amíg egy erőforrás telítődik, majd a további felhasználók csak meghosszabbítják a sort.
A skálázhatósági tesztelés típusai
A skálázhatóság nem egyetlen tulajdonság, így egy tesztterv általában egynél több dimenziót fed le. Az alábbi négy típust méri a legtöbb csapat, az első kettő pedig maga a tesztkörnyezet alakját határozza meg.
| típus | Mi van skálázva? | Amit a teszt bizonyít |
|---|---|---|
| Vertikális skálázhatóság (skálázás) | CPU, memória vagy tárhely hozzáadása egyetlen szerverhez | Mennyi plusz terhelést vesz fel egy továbbfejlesztett gép, és hol helyezkedik el az egycsomópontos mennyezet? |
| Vízszintes skálázhatóság (kiskálázás) | További szerverek, konténerek vagy csomópontok egy terheléselosztó mögött | Vajon az átviteli sebesség nagyjából a hozzáadott csomópontok arányában nő-e, vagy a megosztott erőforrások korlátozzák azt? |
| Funkcionális skálázhatóság | Új funkciók, modulok vagy szolgáltatások | Vajon a hozzáadott funkciók a meglévő tranzakciók rontása nélkül is hasznosíthatók-e? |
| Adminisztratív skálázhatóság | Kezelendő felhasználók, bérlők, csapatok vagy környezetek | Vajon a bevezetési folyamat, az engedélyek és a monitorozás továbbra is működőképes marad-e a szervezet növekedésével |
A vertikális skálázás egyszerűbb, mivel az architektúra ritkán változik, de egyetlen gépnek mindig van egy felső határa. A horizontális skálázás megszünteti ezt a felső határt és javítja a hibatűrést, a hálózati késleltetés, az adatkonzisztencia és a koordinációs többletterhelés rovására – mindezeket a tesztnek mérnie kell, nem pedig feltételeznie.
Mit kell tesztelni a skálázhatósági tesztelés során
A skálázhatóságot mérések, nem megjelenítések alapján ítélik meg. Rögzítse a következő attribútumokat minden betöltési lépésben, hogy a trend, és ne csak a végső szám legyen látható.
| Attribútum | Mit mond neked |
|---|---|
| Válaszidő | A felhasználói kérés és a rendszer válasza között eltelt idő; ennek a párhuzamosság növekedésével változatlannak kell maradnia. |
| Képernyő átmenet | Milyen gyorsan vált át egyik oldal vagy nézet a másikra betöltés közben |
| áteresztőképesség | Az időegység alatt feldolgozott kérések mennyisége; a plató jelzi a skálázhatósági határt |
| Időmérések | Munkamenet ideje, újraindítási idő, nyomtatási idő, tranzakció ideje és feladat végrehajtási ideje |
| Teljesítmény a felhasználók számához viszonyítva | Hogyan változnak az egyes mutatók, ahogy a párhuzamos felhasználókat lépésenként hozzáadják |
| Árak kérése | Másodpercenkénti kérések, másodpercenkénti tranzakciók és másodpercenkénti találatok |
| Hálózati használat | Felhasznált sávszélesség és csomagkésés a rétegek között |
| CPU- és memóriahasználat | Erőforrásköltség tranzakciónként; a folyamatosan növekvő érték gyakran szivárgásra utal |
| Webszerver számlálók | Másodpercenkénti kérések és válaszok, a sor mélysége és az elutasított kapcsolatok |
| Teljesítmény terhelés alatt | Kombinált viselkedés, miután minden metrikát csúcsidőben együtt olvastak be |
Skálázhatósági tesztelés tesztstratégiája
A skálázhatósági tesztelés tesztelési stratégiája az alkalmazás típusától függően változik. Ha egy alkalmazás hozzáfér egy adatbázisa tesztelési paraméterek magukban foglalják az adatbázis méretét a felhasználók számához viszonyítva, és így tovább.
A méretezhetőség tesztelésének előfeltételei
- Terheléselosztási képesség — Ellenőrizze, hogy a terhelésteszt-eszköz lehetővé teszi-e a terhelés több gépről történő generálását és egy központi pontról történő vezérlését.
- Operating rendszer – Ellenőrizd, mit operációs rendszer a terhelésgeneráló ügynökök és a terhelésteszt főprogramja fut.
- Processzor — Ellenőrizd, hogy milyen típusú CPU szükséges a virtuális felhasználói ügynökhöz és a terhelésteszt masterhez.
- Memory design — Ellenőrizd, mennyi memória lenne elég a virtuális felhasználói ügynöknek és a terhelésteszt masternek.
- Tesztkörnyezet – Ellenőrizze, hogy a tesztkörnyezet elég pontosan tükrözi a termelést ahhoz, hogy az eredmények átvihetők legyenek.
A skálázhatósági tesztelés módja
- Határozzon meg egy megismételhető folyamatot a skálázhatósági tesztek végrehajtásához az alkalmazás életciklusa során
- Határozza meg a méretezhetőség kritériumait
- Sorolja fel a terhelési teszt futtatásához szükséges szoftvereszközöket
- Állítsa be a tesztelési környezetet, és konfigurálja a méretezhetőségi tesztek végrehajtásához szükséges hardvert
- Tervezze meg a tesztforgatókönyveket, valamint a skálázhatósági teszteket
- Virtuális felhasználói szkript létrehozása és ellenőrzése
- Hozzon létre és ellenőrizze a terhelési teszt forgatókönyveit
- Végezze el a teszteket
- Értékelje az eredményeket
- A szükséges jelentések elkészítése
Méretezhetőségi tesztterv
Mielőtt ténylegesen létrehozná a teszteket, dolgozzon ki egy részletes teszttervet. Fontos lépés annak biztosítása, hogy a teszt megfeleljen az alkalmazás követelményeinek.
Az alábbiakban bemutatjuk a jól meghatározott attribútumokat Teszt terv a méretezhetőség teszteléséhez.
- Lépések a szkriptekhezA tesztszkriptnek részletes lépésekkel kell rendelkeznie, amelyek meghatározzák a felhasználó által végrehajtandó pontos műveleteket.
- Futásidejű adatokA teszttervnek meg kell határoznia az alkalmazással való interakcióhoz szükséges futásidejű adatokat.
- Adatvezérelt tesztekHa a szkripteknek futásidőben változó adatokra van szükségük, akkor ismernie kell az összes olyan mezőt, amely ezeket az adatokat igényli.
Skálázhatósági tesztelési példa
Vegyünk egy online áruházat, amely 2,000 egyidejű vásárlóra számít egy szezonális leárazás során. A csapat először egy sikeres teljesítési kritériumban állapodik meg: a fizetési tranzakciónak a felhasználók 95 százalékánál három másodpercen belül kell lezajlania, a hibaszázalék pedig egy százalék alatt kell legyen.
A teszt ezután ugyanazt a böngészés-keresés-kosár-fizetés szkriptet futtatja le 250, 500, 1,000, 1,500 és 2,000 virtuális felhasználón. A válaszidő 1,000 felhasználóig közel két másodperc, 1,500-nál 2.8 másodpercre csökken, és 2,000-nél eléri a kilenc másodpercet, miközben az adatbázis CPU-jának kihasználtsága 98 százalék. A skálázhatósági korlát tehát nagyjából 1,500 felhasználó, a szűk keresztmetszet pedig az adatbázisszint – nem pedig az alkalmazásszerverek, amelyeket a csapat tervezett hozzáadni.
Skálázhatósági tesztelőeszközök
A skálázhatósági teszteléshez olyan eszközre van szükség, amely egyszerre több gépről is képes terhelést generálni, és az eredményeket központilag jelenti. A választás általában a csapat elsődleges nyelvét és a tesztelt protokollokat követi.
| Szerszám | Scripting | A legalkalmasabb |
|---|---|---|
| Apache JMeter | GUI plusz XML tesztelési tervek, Java alapján | Széleskörű protokolllefedettség, beleértve a JDBC-t, JMS-t, LDAP-t és SOAP-t |
| Grafana k6 | JavaScript ill TypeScript | API és mikroszolgáltatás-tesztek bekötve egy CI/CD folyamatba |
| Gatling | Java, Kotlin vagy Scala DSL | Magas virtuális felhasználószám injektoronként részletes HTML-jelentésekkel |
| Sáska | Egyszerű Python | Python olyan csapatok, akiknek a klienst HTTP-n túlra kell kiterjeszteniük |
| LoadRunner | C-szerű szkriptek rögzítve a VuGen-ben | Nagyvállalati környezetek régi és csomagolt alkalmazásokkal |
Felhőalapú futtatók, mint például BlazeMeterA LoadView és a Gatling Enterprise számos ilyen motorra épül, és érdemes megfontolni őket, ha egy teszthez több tízezer virtuális felhasználóra vagy több földrajzi régióból származó forgalomra van szükség. A kategória szélesebb körű áttekintése a következő útmutatóban érhető el: teljesítménytesztelő eszközök.
Kihívások és bevált gyakorlatok a skálázhatósági tesztelésben
A legkiábrándítóbb skálázhatósági eredmények tracVissza a tesztbeállításhoz, nem pedig az alkalmazáshoz. Ezek azok a problémák, amelyek visszatérnek, és azok a szokások, amelyek megakadályozzák őket.
Közös kihívások
- Kis méretű környezetek — Egy tesztberendezés, amely a termelési memória felével rendelkezik, olyan szűk keresztmetszetet jelez, amely az éles környezetben nem létezik.
- Irreális munkaterhelés-modellek — A gondolkodási idő vagy adatváltozás nélküli szkriptek olyan gyorsítótárakat érnek el, amelyeket a valódi felhasználók nem vennének észre.
- Zajos eredmények — Az automatikus skálázás, a szemétgyűjtés és a megosztott felhőhardver miatt két azonos futtatás eltérő eredményeket hozhat.
- Vékony megfigyelhetőség — Szerveroldali metrikák nélkül a lassú eredmény azt mutatja, hogy valami elromlott, de azt nem, hogy mi.
- Költség — A nagyon magas párhuzamosság generálásához saját terhelésgenerátor-flottára van szükség, amelyet könnyű alulköltekezéssel megvalósítani.
Legjobb gyakorlatok
- Az első futtatás előtt egyezzünk meg a sikeres teljesítési kritériumokban, például a válaszidő percentilisében és a hibaszázalék felső határában.
- Növelje a terhelést a tervezett lépésekben, és minden lépést elég sokáig tartsa fenn, hogy a rendszer leülepedjen.
- Virtuális felhasználónként változtassa meg a tesztadatokat, hogy a gyorsítótárazás ne hízelegjen az eredményeknek.
- Az alkalmazás-, adatbázis- és infrastruktúra-metrikák gyűjtése az ügyféloldali számok mellett.
- A tesztszkripteket verziókövetésben kell tárolni, és minden builden lefuttatni egy rövid skálázhatósági ellenőrzést, majd a kiadás előtt egy teljes futtatást.
- Hasonlítsa össze a trendeket az összeállítások között, ahelyett, hogy egyetlen jelentést önmagában értékelne.
Skálázhatósági tesztelés vs. terheléstesztelés
A kettőt gyakran összekeverik, mivel mindkettő terhelést jelent. A különbség abban a kérdésben rejlik, amire mindkettő válaszol: A skálázhatósági tesztelés azt kérdezi, hogy meddig növekedhet a rendszer, míg terhelés tesztelése megkérdezi, hogy megbirkózik-e a már várható terheléssel.
| Bázis | Méretezhetőség tesztelése | Terhelésvizsgálat |
|---|---|---|
| Összpontosít | A webhelyek, szoftverek, hardverek és alkalmazások teljesítményére összpontosít, amikor a rendszer méretében vagy mennyiségében változtatásokat hajtanak végre a növekvő igények kielégítése érdekében. | A terheléstesztelés egy alkalmazás nagy terhelés alatt történő tesztelésére összpontosít, hogy meghatározza, mely ponton hibásodik meg a rendszer válaszideje. |
| Betöltési minta | A terhelés lépésekben növekszik, és az erőforrások a lépések között hozzáadhatók. | A terhelést egy várható csúcson tartják egy meghatározott ideig. |
| Megválaszolt kérdés | Meddig fejlődhet ez a rendszer, és mi szab határt? | Vajon ez a rendszer ma eléri a kitűzött céljait? |
| Tipikus teljesítmény | Skálázhatósági korlát, szűk keresztmetszet és kapacitásterv | Sikeres vagy sikertelen a válaszidő és az átviteli sebesség célértékei alapján |
Mindketten alatta ülnek nem funkcionális tesztelés esernyő mellette stresszteszt, tüske tesztelés, állóképességi tesztelés és a mennyiségi tesztelés, és egy kiforrott teljesítménystratégia általában többet is futtat belőlük ugyanazon szkriptek ellen.

