Mi az a nem funkcionális tesztelés?
Az Azure Pipelines funkcionális tesztjeinek futtatásakor Selenium felhasználói felületi teszteket adott hozzá a folyamathoz. A felhasználói felületi tesztek a funkcionális tesztelés egy formája. Ebben a részben megismerheti a folyamatokban futtatható nem funkcionális tesztek típusait.
A csapat először nem funkcionális teszteket határoz meg. Ezek a tesztek bizonyos típusairól beszélnek. Ezután úgy döntenek, hogy nem funkcionális tesztet adnak hozzá a folyamatukhoz.
Hogyan viszonyulnak a nem funkcionális tesztek a funkcionális tesztekhez?
Az Azure Pipelines funkcionális tesztjeinek futtatásakor funkcionális teszteket és nem funkcionális teszteket határoztunk meg.
Röviden, a funkcionális tesztek ellenőrzik, hogy a szoftver minden funkciója megteszi-e, amit kell. Más szóval a funkcionális tesztek ellenőrzik az alkalmazás működését.
A nem funkcionális tesztek ellenőrzik az alkalmazás nem funkcionális jellemzőit, például a teljesítményt és a megbízhatóságot. Nem funkcionális teszteket is futtathat olyan rendszereken, amelyek nem alkalmazások, például infrastruktúra-összetevők. A nem funkcionális tesztek egyik példája annak meghatározása, hogy hány személy tud egyszerre bejelentkezni egy alkalmazásba probléma nélkül, például lassabb válaszidők nélkül.
A Space Game webhelyén például egy funkcionális teszt ellenőrizheti, hogy a ranglista helyesen jelenik-e meg, és hogy a felhasználó szűrő kiválasztásakor a megfelelő rekordokat jeleníti-e meg. A nem funkcionális tesztek azt is ellenőrizhetik, hogy a ranglista szűrése kevesebb mint egy másodperc alatt befejeződik-e, még akkor is, ha egyszerre sok felhasználó csatlakozik a webhelyhez.
A nem funkcionális tesztelés mindig mérhető eredményt ad. A cél a termék fejlesztése. Ezt például úgy teheti meg, hogy javítja az alkalmazás erőforrásainak hatékonyságát, vagy javítja a válaszidőket, amikor sok ügyfél használja egyszerre. Íme néhány kérdés, amelyekre a nem funkcionális tesztek válaszolhatnak:
- Hogyan működik az alkalmazás normál körülmények között?
- Hogyan működik az alkalmazás, ha egyszerre több felhasználó jelentkezik be?
- Mennyire biztonságos az alkalmazás?
Milyen típusú nem funkcionális teszteket futtathatok?
Sokféle nem funkcionális teszt létezik. Ezek közül sokan a teljesítménytesztelés és a biztonsági tesztelés széles kategóriáiba illeszkednek.
Teljesítménytesztelés
A teljesítménytesztelés célja az alkalmazás sebességének, méretezhetőségének és stabilitásának javítása. A sebességtesztelés meghatározza, hogy az alkalmazás milyen gyorsan válaszol. A méretezhetőség tesztelése határozza meg, hogy az alkalmazás maximálisan milyen terhelést tud kezelni. A stabilitás tesztelése meghatározza, hogy az alkalmazás stabil marad-e különböző terhelések esetén. A teljesítménytesztek két gyakori típusa a terheléstesztek és a stressztesztek.
Terheléses tesztelés
A terheléstesztek reális terhelés esetén határozzák meg az alkalmazások teljesítményét. A terheléses tesztek például meghatározhatják, hogy egy alkalmazás milyen jól teljesít a szolgáltatásiszint-szerződés (SLA) felső határán. A terheléstesztelés alapvetően akkor határozza meg az alkalmazás viselkedését, ha egyszerre több felhasználónak is szüksége van rá.
A felhasználók nem feltétlenül emberek. A nyomtatószoftverek terheléstesztje például nagy mennyiségű adatot küldhet az alkalmazásnak. A levelezési kiszolgáló terheléstesztje több ezer egyidejű felhasználót szimulálhat.
A terheléstesztelés jó módszer arra is, hogy feltárja azokat a problémákat, amelyek csak akkor léteznek, ha az alkalmazás a korlátain működik. Ekkor jelentkezhetnek olyan problémák, mint a puffer túlcsordulása és a memóriaszivárgás.
Ebben a modulban az Apache JMeter használatával fog terhelésteszteket végezni. Olyan szimulált felhasználókat fog használni, amelyek egyszerre érik el a webhelyet.
Stressztesztelés
A stressztesztek meghatározzák az alkalmazás stabilitását és robusztusságát nagy terhelések esetén. A terhelések túllépik az alkalmazáshoz megadott értéket. A stressztesztek meghatározzák, hogy az alkalmazás összeomlik-e ezek alatt a terhelések alatt. Ha az alkalmazás meghibásodik, a stresszteszt ellenőrzi, hogy az megfelelően meghiúsul-e. Egy kecses hiba például megfelelő, informatív hibaüzenetet adhat ki.
Gyakoriak azok a forgatókönyvek, amelyekben az alkalmazásoknak rendellenesen nagy terhelés alatt kell működnie. Ha például a videó vírusos lesz, tudnia kell, hogy a kiszolgálók mennyire tudják kezelni a többletterhelést. Egy másik tipikus forgatókönyv az ünnepi időszakokban a vásárlási webhelyek nagy forgalma.
Biztonsági tesztelés
A biztonsági tesztelés biztosítja, hogy az alkalmazások mentesek legyenek a biztonsági résektől, fenyegetésektől és kockázatoktól. Az alapos biztonsági tesztelés megtalálja a rendszer összes lehetséges kiskapuját és gyengeségét, amelyek adatszivárgást vagy bevételkiesést okozhatnak.
A biztonsági tesztelésnek számos típusa van. Ezek közül kettő a behatolástesztelés és a megfelelőségi tesztelés.
Behatolás tesztelése
A behatolástesztelés vagy tolltesztelés olyan biztonsági tesztelési típus, amely az alkalmazás nem biztonságos területeit teszteli. Különösen azokat a biztonsági réseket teszteli, amelyeket a támadó kihasználhat. Az engedélyezett, szimulált kibertámadás általában a behatolástesztelés része.
Megfelelőségi tesztelés
A megfelelőségi tesztelés meghatározza, hogy egy alkalmazás megfelel-e bizonyos követelményeknek a vállalaton belül vagy kívül. Az egészségügyi szervezeteknek például általában meg kell felelniük a HIPAA-nak (Az 1996. évi egészségbiztosítási hordozhatóságról és elszámoltathatóságról szóló törvénynek), amely adatvédelmi és biztonsági rendelkezéseket biztosít az orvosi adatok védelméhez.
Előfordulhat, hogy a szervezetnek saját biztonsági követelményei is vannak. A szoftvereket tesztelni kell, hogy biztosan betartják-e ezeket a követelményeket. Linux rendszereken például az alapértelmezett felhasználói maszknak 027-nek vagy szigorúbbnak kell lennie. A biztonsági tesztnek bizonyítania kell, hogy ez a követelmény teljesül.
A terv
A modul további részében beállítja az Azure DevOps-környezetet, megismerheti a terheléses tesztek tervezését az Apache JMeter használatával, és terhelési teszteket futtathat az Azure Pipelinesban.