Mi az a dinamikus tesztelés? Típusok, technikák és példák

⚡ Okos összefoglaló

A dinamikus tesztelés végrehajtja az alkalmazást, és megfigyeli, hogyan viselkedik a futó kód valós bemenetekkel, így a tesztelők olyan funkcionalitást, teljesítményt és stabilitást is validálhatnak, amelyet semmilyen mennyiségű dokumentum-áttekintés nem képes feltárni.

  • 🎯 Cél: Valós futásidejű viselkedést validálj, ne a azt leíró dokumentumokat.
  • 🔀 Két ág: A fehér doboz a kódot, a fekete doboz a viselkedést vizsgálja.
  • 🧱 Négy szint: Az egység-, integrációs-, rendszer- és átvételi tesztelés mind kódot futtat.
  • 🇧🇷 Nem funkcionális: Itt futnak a teljesítmény-, helyreállítási-, kompatibilitási-, biztonsági- és használhatósági ellenőrzések.
  • 🔄 Folyamat: Stratégia, teszttervezés, környezet beállítása, végrehajtás és hibajelentés.
  • 💰 Kompromisszum: Mélyebb hibaészlelés idő, környezet és költség fejében.

Dinamikus tesztelési típusok, technikák és példák

Mi az a dinamikus tesztelés?

Dinamikus tesztelés egy szoftvertesztelési módszer, amelyet a szoftverkód dinamikus viselkedésének tesztelésére használnak. A dinamikus tesztelés fő célja a szoftver viselkedésének vizsgálata dinamikus változókkal – olyan változókkal, amelyek nem állandóak –, és gyenge területek megtalálása a szoftver futási környezetében. A dinamikus viselkedés teszteléséhez a kódot végre kell hajtani.

A tesztelés ellenőrzés és érvényesítés, és mindkét V szükséges a tesztelés befejezéséhez. Az ellenőrzést statikus teszteléssel végzik, amely a követelményeket, a tervdokumentációkat és a kódot futtatás nélkül vizsgálja felül. Az érvényesítést dinamikus teszteléssel végzik, amely lefuttatja a buildet, és összehasonlítja az alkalmazás tényleges működését azzal, amit tennie kellene.

Az alábbi táblázat első pillantásra megkülönbözteti a kettőt.

Aspect Statikus tesztelés (ellenőrzés) Dinamikus tesztelés (validáció)
Code végrehajtott Nem Igen
Tipikus tevékenységek Reváttekintések, bejárások, ellenőrzések, statikai elemzés Tesztesetek végrehajtása minden tesztszinten
Megválaszolt kérdés Jól építjük fel a terméket? A megfelelő terméket építjük?
Talált hibák Kétértelmű követelmények, kódolási szabványok megsértése, halott kód Hibás kimenet, memóriaszivárgások, időzítési hibák, integrációs hibák
Kezdődik Amint egy tárgy létezik Miután egy futtatható build létezik
A javítás relatív költsége Alacsonyabb, mert a hibákat korábban észlelik Magasabb, mert a hibák később jelennek meg

Példa dinamikus tesztelésre

Egy rövid, gyakorlatban is használható példa mutatja be, hogyan működik a dinamikus tesztelés.

Tegyük fel, hogy egy bejelentkezési oldalt tesztelnek. Két mezője van, a Felhasználónév és a Jelszó, és a Felhasználónév alfanumerikus karakterekre korlátozódik.

Amikor a felhasználó a következőképpen adja meg a felhasználónevet: „Guru99”, a rendszer elfogadja. Amikor a felhasználó beírja a „Guru99@123” esetén az alkalmazás hibaüzenetet dob. Ez az eredmény azt mutatja, hogy a kód dinamikusan reagál a felhasználói bevitelre.

A dinamikus tesztelés tehát azt jelenti, hogy a tényleges rendszerrel dolgozunk, bemenetet biztosítunk, és az alkalmazás tényleges viselkedését összehasonlítjuk a várt viselkedéssel – más szóval, a rendszerrel azzal a szándékkal dolgozunk, hogy hibákat találjunk.

A dinamikus tesztelés tehát egy szoftveralkalmazás validálásának folyamata, ahogyan azt egy végfelhasználó tenné különböző környezetekben, a megfelelő szoftver létrehozása érdekében.

Mit csinál a dinamikus tesztelés?

A dinamikus tesztek fő célja annak biztosítása, hogy a szoftver megfelelően működjön a telepítés alatt és után, stabil alkalmazást biztosítva, nagyobb hibák nélkül. Egyetlen szoftver sem teljesen hibamentes, és a tesztelés kimutathatja a hibák jelenlétét, de soha nem azok hiányát.

A dinamikus tesztek a szoftverek közötti konzisztenciát is biztosítják, ahogy ezt a példa is mutatja.

Egy banki alkalmazásban több képernyő található, például a Számláim, Pénzátutalás és Bill Fizetés. Mindegyik tartalmaz egy összeg mezőt.

Tegyük fel, hogy a Számláim mezőben 25 000 összeg jelenik meg, az Átutalás 25 000 dollárt, a Bill A fizetési képernyőn 25 000 dollár látható. Az összeg ugyanaz, de a megjelenítés módja eltérő, ami miatt a szoftver nem egyértelmű.

A konzisztencia nem korlátozódik a funkcionalitásra. Olyan szabványokat is magában foglal, mint a teljesítmény, a használhatóság és a kompatibilitás, ezért olyan fontos a dinamikus tesztelés.

A dinamikus tesztelés típusai

A dinamikus tesztelést két kategóriába sorolják.

  • fehér Box Tesztelés
  • Fekete Box Tesztelés

Az alábbi ábra a két kategóriát az alattuk lévő tesztelési szintekhez viszonyítja.

Dinamikus tesztelés felosztása fehér dobozra és fekete dobozra, funkcionális és nem funkcionális szintekkel

Az egyes típusokat és azok célját az alábbiakban ismertetjük.

fehér Box Tesztelés — egy olyan szoftvertesztelési módszer, amelyben a belső struktúra és a felépítés ismert a tesztelő számára. Fő célja a rendszer teljesítményének ellenőrzése a kód alapján. Főként fejlesztők vagy programozási ismeretekkel rendelkező white box tesztelők végzik.

Fekete Box Tesztelés — olyan tesztelési módszer, amelyben a belső struktúra, a kód és a terv NEM ismert a tesztelő számára. Fő célja a tesztelt rendszer funkcionalitásának ellenőrzése. Az ilyen típusú tesztelés megköveteli a teljes tesztkészlet végrehajtását, főként tesztelők végzik, és nem igényel programozási ismereteket.

A fekete dobozos tesztelést ismét két típusra osztják.

  • Funkcionális tesztelés
  • Nem funkcionális tesztelés

Funkcionális tesztelés

Funkcionális tesztelés ...ellenőrzi, hogy minden kifejlesztett funkció megfelel-e a funkcionális specifikációknak. A funkcionális... teszt esetek a minőségbiztosítási csapat írta. Ebben a fázisban a rendszert bemeneti adatok megadásával, a kimenet ellenőrzésével és a tényleges eredmények várt eredményekkel való összehasonlításával tesztelik.

A funkcionális tesztelésnek különböző szintjei vannak, amelyek közül a legfontosabbak az alábbi négy.

  • Egység tesztelése – az egység egy kis, tesztelhető kódrészlet. Az egységtesztelést a szoftver egyetlen egységén végzik a fejlesztők.
  • Integrációs tesztelés — egységtesztelés után, az egyes tesztelhető egységek kombinálásával hajtják végre. Ezt vagy fejlesztők, vagy tesztelők végzik.
  • Rendszer tesztelés — annak biztosítására hajtják végre, hogy a rendszer a követelményeknek megfelelően viselkedjen. Általában akkor hajtják végre a tesztelők, amikor a teljes rendszer elkészült, miután a build-et kiadták a minőségbiztosítási csapatnak.
  • Átvételi teszt — annak ellenőrzésére kerül sor, hogy a rendszer megfelel-e az üzleti követelményeknek, és készen áll-e a használatra vagy telepítésre. Általában a végfelhasználók végzik.

Nem funkcionális tesztelés

Nem funkcionális tesztelés egy olyan tesztelési technika, amely nem a funkcionális szempontokra összpontosít, hanem a rendszer nem funkcionális attribútumaira, például a memóriaszivárgásokra, a teljesítményre vagy a robusztusságra koncentrál. A nem funkcionális tesztelést minden tesztelési szinten elvégzik.

Számos nem funkcionális tesztelési technika létezik, amelyek közül a legfontosabbak az alábbi öt.

  • Teljesítményfelmérés — ellenőrzi, hogy a rendszer válaszideje a kívánt hálózati terhelés mellett a követelményeknek megfelelően normális-e.
  • Helyreállítási tesztelés — ellenőrzi, hogy a rendszer milyen jól áll helyre az összeomlások és hardverhibák után.
  • Kompatibilitási tesztelés – ellenőrzi, hogyan viselkedik a rendszer különböző környezetekben.
  • Biztonsági tesztelés — ellenőrzi az alkalmazás robusztusságát, biztosítva, hogy csak a jogosult felhasználók és szerepkörök férhessenek hozzá a rendszerhez.
  • Használhatósági tesztelés — ellenőrzi a rendszer használhatóságát a végfelhasználók által, és azt, hogy mennyire érzik jól magukat a rendszerrel.

Dinamikus tesztelési technikák

Miután a típusok tisztázódtak, a következő kérdés az, hogy hogyan is kell valójában lefuttatni egy dinamikus tesztciklust.

Dinamikus tesztelési technikák a STLC olyan feladatokból áll, mint a tesztek követelményelemzése, a teszttervezés, a tesztesetek tervezése és megvalósítása, a tesztkörnyezet beállítása, a tesztesetek végrehajtása, a hibajelentés és végül a teszt lezárása. A dinamikus tesztelés minden feladata a tesztelési folyamat előző feladatának befejezésétől függ.

Az STLC-n belül a tényleges dinamikus tesztelési folyamat a teszteset tervezésével kezdődik. Az alábbi ábra a tevékenységek sorrendjét mutatja, amelyek mindegyikét ismertetjük.

Dinamikus tesztelési folyamat a teszttervezéstől a végrehajtáson át a hibajelentésig

A folyamat megkezdése előtt meg kell állapodni a dinamikus teszteléshez követendő stratégiában.

A tesztelési stratégiának főként a rendelkezésre álló erőforrásokra és az időkeretre kell összpontosítania. E két tényező alapján dokumentálni kell a tesztelés célját, a tesztelés hatókörét, a tesztelés fázisait vagy ciklusait, a környezet típusát, a felmerülő feltételezéseket vagy kihívásokat, valamint a kockázatokat.

Miután a stratégiát meghatározták és a vezetőség elfogadta, megkezdődik a tényleges teszteset-tervezési folyamat.

Teszttervezés és -megvalósítás

Ebben a fázisban a csapat a következőket azonosítja.

  • Tesztelendő tulajdonságok
  • Az említett jellemzőkből származó tesztfeltételek
  • A tesztfeltételekből származtatott lefedettségi tételek
  • A lefedettségi elemekből származtatott tesztesetek

Fekete doboz teszttervezési technikák mint például az ekvivalencia-particionálás, a határérték-analízis, döntési tábla tesztelés és a állapotátmenet-tesztelés azok, amelyek egy tesztfeltételt végrehajtható esetek konkrét halmazává alakítanak.

Tesztkörnyezet beállítása

Az tesztkörnyezet mindig hasonlónak kell lennie az éles környezethez. Ebben a fázisban történik a build telepítése, valamint a tesztgépek kezelése és konfigurálása.

Teszt végrehajtása

Ebben a fázisban a tesztesetek ténylegesen végrehajtásra kerülnek, akár manuálisan, akár a automatizálás, és a tényleges eredményeket a várt eredményekkel szemben rögzítik.

A hibajelentés rögzítve

A végrehajtás alapján, ha a várt és a tényleges eredmények nem egyeznek meg, a tesztesetet sikertelenként kell megjelölni, és hibát kell naplózni a rendszerben. hibakezelés folyamat.

A dinamikus tesztelés előnyei

  • A dinamikus tesztelés olyan hibákat tár fel, amelyeket túl nehéznek vagy bonyolultnak tartanak a felismerésükhöz, és amelyeket a statikus elemzés egyáltalán nem tud lefedni.
  • A szoftvert a teljes folyamat során végrehajtják, ami mind a termék, mind a projekt minőségét növeli.
  • A dinamikus tesztelés alapvető eszköz a működő rendszerek biztonsági fenyegetéseinek észlelésére.
  • A futásidejű hibák, mint például a memóriaszivárgások, az időzítési problémák és az integrációs hibák, csak itt jelennek meg, máshol sehol.

A dinamikus tesztelés hátrányai

  • A dinamikus tesztelés időigényes, mivel az alkalmazás vagy kód végrehajtása nagy mennyiségű erőforrást igényel.
  • Ez növeli a projekt költségeit, mivel nem kezdődik el a szoftver életciklusának korai szakaszában, és a későbbi szakaszokban kijavított problémák javítása többe kerül.
  • Az éles környezethez hasonló környezet és a valósághű tesztadatok előfeltételek, és mindkettő felépítése és karbantartása erőfeszítést igényel.

GYIK

A fejlesztők felelősek a fehér doboz oldalért, ahol az egységek és komponensek ellenőrzését végzik. A minőségbiztosítási tesztelők felelősek a fekete doboz oldalért, a rendszer tesztelésétől kezdve. A végfelhasználók az elfogadási teszteléssel zárják a ciklust.

A modellek beolvassák a követelményeket és a meglévő eseteket, majd javaslatot tesznek a határértékekre, az érvénytelen bemenetekre és az állapotsorozatokra, amelyeket egy emberi teendőlista általában kihagy. A tesztelő továbbra is megerősíti az összes várható eredményt a végrehajtás előtt.

Igen. Az asszisztens által létrehozott állványzat, az oldalobjektumok és a fixture setup ismétlődő kód, amit egy asszisztens jól kezel. Annak eldöntése, hogy mi minősül helyes viselkedésnek, továbbra is emberi megítélés kérdése, amely a követelményekben gyökerezik.

Egységkeretek, mint például JUnit, TestNG és pytest, valamint UI és API futtatók, mint például Selenium, Cypress és a PostmanEszközök betöltése, például JMeter lefedi a nem funkcionális oldalát automatizálás.

A „fehér dobozos” munkajelentések kimutatása, elágazási és útvonallefedettsége műszeres futtatások alapján. A „fekete dobozos” munkajelentések követelmény- és tesztfeltétel-lefedettsége. Egyik szám sem bizonyítja önmagában, hogy a build megfelelően tesztelt.

Nem. A dinamikus tesztelés a kód végrehajtását írja le, függetlenül attól, hogy bárki vagy bármi hajtja azt. Egy szkriptelt kézikönyv A futtatás és egy automatizált regressziós csomag egyaránt dinamikus tesztelés.

Igen. A dinamikus alkalmazásbiztonsági tesztelés kívülről vizsgál egy futó alkalmazást, pontosan úgy, mint egy fekete dobozt. biztonsági tesztelés teszi, és jelenti a csak futásidőben megjelenő sebezhetőségeket.

Ez az egyik gerince. Az egységek és API-csomagok minden commitot kapnak, míg hosszabb ideig regresszió és a teljesítményalapú futtatások éjszaka futnak egy telepített builden.

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