Mi az egység tesztelése?
AZ EGYSÉG TESZTELÉSE egyfajta szoftveres tesztelés, ahol a szoftver egyes egységeit vagy alkatrészeit tesztelik. A cél annak ellenőrzése, hogy a szoftverkód minden egysége a várt módon teljesít-e. Az egység tesztelése az alkalmazás fejlesztői (kódolási fázis) alatt történik. Az egységtesztek elkülönítik a kód egy részét és ellenőrzik annak helyességét. Az egység lehet egyedi funkció, módszer, eljárás, modul vagy objektum.
SDLC, STLC, V Model esetén az egység tesztelése az integráció tesztelése előtt végzett első szintű teszt. Az egységteszt egy WhiteBox tesztelési technika, amelyet általában a fejlesztő hajt végre. Bár a gyakorlati világban az idő túllépése vagy a fejlesztők vonakodása a tesztek miatt, a minőségbiztosítási mérnökök egység tesztet is végeznek.
Ebben az oktatóanyagban megtanulja-
- Miért egység tesztelés?
- Hogyan kell elvégezni az egység tesztelését
- Egységtesztelési technikák
- Egységtesztelő eszközök
- Tesztvezérelt fejlesztés (TDD) és egység tesztelése
- Egység tesztelő mítosz
- Egységtesztelő előny
- Egységtesztelési hátrányok
- Egység tesztelése a legjobb gyakorlatokról
Miért egység tesztelés?
Az egység tesztelése azért fontos, mert a szoftverfejlesztők néha megpróbálnak időt megtakarítani minimális egység teszteléssel, és ez mítosz, mert a nem megfelelő egység tesztelése magas költségekhez vezet a hibák javításához a rendszer tesztelése, az integrációs tesztelés és az alkalmazás felépítése után még a béta tesztelés során is. Ha a korai fejlesztés során elvégzik a megfelelő egység tesztelést, az végül időt és pénzt takarít meg.
Itt vannak a legfontosabb okok az egység tesztelésének végrehajtására a szoftverfejlesztésben:
- Az egységtesztek segítenek kijavítani a hibákat a fejlesztési ciklus elején és megtakarítani a költségeket.
- Segít a fejlesztőknek megérteni a tesztelési kódot, és lehetővé teszi számukra a gyors változtatásokat
- A jó egységtesztek projektdokumentációként szolgálnak
- Az egységtesztek segítenek a kód újrafelhasználásában. Vigye át a kódot és a teszteket is az új projektjébe. Csípje be a kódot, amíg a tesztek újra lefutnak.
Hogyan kell elvégezni az egység tesztelését
Az egységteszt elvégzéséhez a fejlesztők egy kódrészletet írnak egy adott funkció tesztelésére a szoftveralkalmazásban. A fejlesztők elkülöníthetik ezt a funkciót a szigorúbb tesztelés érdekében, amely felesleges függőségeket tár fel a tesztelt funkció és más egységek között, így a függőségek kiküszöbölhetők. A fejlesztők általában az UnitTest keretrendszert használják az automatizált tesztesetek fejlesztésére az egység teszteléséhez.
Az egység tesztelése kétféle
- Kézikönyv
- Automatizált
Az egység tesztelése általában automatizált, de mégis manuálisan elvégezhető. A szoftvertervezés nem előnyben részesíti a másikat, de az automatizálást részesítik előnyben. Az egység tesztelésének kézi megközelítése lépésről lépésre alkalmazhatja az oktatási dokumentumot.
Az automatizált megközelítés
- Egy fejlesztő a kód tesztelését írja le az alkalmazásba, csak a funkció tesztelésére. Később megjegyzést fűznek hozzá, és végül eltávolítják a tesztkódot, amikor az alkalmazást telepítik.
- A fejlesztő elkülönítheti a funkciót is, hogy szigorúbb tesztelje. Ez egy alaposabb egységtesztelési gyakorlat, amely magában foglalja a kód másolását és beillesztését a saját tesztelési környezetébe, mint a természetes környezetét. A kód elkülönítése segít felesleges függőségek feltárásában a tesztelt kód és a termék egyéb egységei vagy adatterei között. Ezek a függőségek aztán kiküszöbölhetők.
- A kódoló általában az UnitTest keretrendszert használja automatizált tesztesetek fejlesztésére. Az automatizálási keretrendszer használatával a fejlesztő a tesztbe kódolja a kritériumokat, hogy ellenőrizze a kód helyességét. A tesztesetek végrehajtása során a keret naplózza a sikertelen teszteseteket. Számos keretrendszer automatikusan megjelöli és összefoglalva jelentést is tesz ezekről a sikertelen tesztesetekről. A meghibásodás súlyosságától függően a keret leállíthatja a későbbi tesztelést.
- Az egységtesztelés munkafolyamata: 1) Tesztesetek létrehozása 2) Áttekintés / átdolgozás 3) Alapszint 4) Tesztesetek végrehajtása.
Egységtesztelési technikák
Az egységtesztelési technikákat főként három részre osztják: fekete doboz tesztelés, amely magában foglalja a felhasználói felület tesztelését a bemenettel és kimenettel együtt, fehér doboz tesztelés, amely magában foglalja a szoftveralkalmazás funkcionális viselkedésének tesztelését, és a szürke doboz teszt, amelyet a teszt végrehajtására használnak. készletek, tesztelési módszerek, tesztesetek és kockázatelemzés elvégzése.
Az egység tesztelésénél használt kód lefedettség technikákat az alábbiakban soroljuk fel:
- Nyilatkozati lefedettség
- Döntési lefedettség
- Ágfedés
- Állapot lefedettség
- Véges állapotú gép lefedettsége
További információ: https://www.guru99.com/code-coverage.html
Egységteszt példa: Modell objektumok
Az egységteszt a létrehozott álobjektumokon alapul, hogy tesztelje azokat a kódrészeket, amelyek még nem tartoznak a teljes alkalmazáshoz. Gúnyobjektumok töltik ki a program hiányzó részeit.
Például lehet egy olyan funkciója, amelyhez változókra vagy objektumokra van szükség, amelyek még nincsenek létrehozva. Az egységtesztelés során ezeket kizárólag a kód adott részén elvégzett egységvizsgálat céljából létrehozott álobjektumok formájában számolják el.
Egységtesztelő eszközök
Számos automatizált egységteszt szoftver áll rendelkezésre az egység tesztelésének segítésére. Az alábbiakban bemutatunk néhány példát:
- Junit: A Junit egy ingyenesen használható tesztelő eszköz, amelyet a Java programozási nyelvhez használnak. Állításokat nyújt a vizsgálati módszer azonosítására. Ez az eszköz először teszteli az adatokat, majd beszúrja őket a kódrészletbe.
- NUnit: A NUnit az összes .net nyelvhez széles körben használatos egységtesztelési keretrendszer. Ez egy nyílt forráskódú eszköz, amely lehetővé teszi a szkriptek kézi írását. Támogatja az adatvezérelt teszteket, amelyek párhuzamosan futtathatók.
- JMockit: A JMockit egy nyílt forráskódú egységtesztelő eszköz. Ez egy kód lefedettség eszköz, vonallal és útvonal metrikákkal. Lehetővé teszi az API gúnyolását rögzítési és ellenőrzési szintaxissal. Ez az eszköz vonalvezetést, útvonal-lefedettséget és adat-lefedettséget kínál.
- EMMA: Az EMMA egy nyílt forráskódú eszköztár Java nyelven írt kódok elemzésére és jelentésére. Az Emma támogatja a lefedettség típusait, mint a módszer, a vonal, az alapblokk. Java alapú, tehát külső könyvtárfüggőségektől mentes, és hozzáférhet a forráskódhoz.
- PHPUnit: A PHPUnit egy egység tesztelő eszköz a PHP programozó számára. Kis mennyiségű kódra van szükség, amelyet egységeknek hívnak, és mindegyiket külön tesztelje. Az eszköz lehetővé teszi a fejlesztők számára, hogy előre definiált állítási módszereket alkalmazzanak annak igazolására, hogy a rendszer bizonyos módon viselkedik.
Ez csak néhány a rendelkezésre álló egységtesztelő eszközök közül. Sokkal több van, különösen a C nyelvek és a Java esetében, de biztosan talál egy egység tesztelő eszközt a programozási igényekhez, a használt nyelvtől függetlenül.
Tesztvezérelt fejlesztés (TDD) és egység tesztelése
Az egység tesztelése a TDD-ben magában foglalja a tesztelési keretek széleskörű alkalmazását. Egységes tesztkeretet használnak az automatizált egységtesztek létrehozásához. Az egység tesztelési keretrendszerek nem egyedülállóak a TDD-vel, de elengedhetetlenek ahhoz. Az alábbiakban megnézzük, mit hoz a TDD az egységtesztelés világába:
- A teszteket a kód előtt írják
- Nagy mértékben támaszkodhat a tesztelési keretekre
- Az alkalmazások összes osztályát tesztelik
- Gyors és egyszerű integráció lehetséges
Egység tesztelő mítosz
Mítosz: Időbe telik, és mindig túllépek. A kódom sziklaszilárd! Nincs szükségem egységvizsgálatokra.
A mítoszok természetüknél fogva hamis feltételezések. Ezek a feltételezések ördögi körhöz vezetnek az alábbiak szerint:
Az igazság az, hogy az egység tesztelése növeli a fejlesztés sebességét.
A programozók úgy gondolják, hogy az Integration Testing minden hibát elkap, és nem hajtja végre az egység tesztet. Miután az egységeket integrálták, nagyon egyszerű hibákat, amelyek nagyon könnyen megtalálhatók és kijavíthatók a tesztelt egységekben, nagyon sokáig kell követni és kijavítani.
Egységtesztelő előny
- Azok a fejlesztők, akik szeretnék megismerni, hogy az egység milyen funkcionalitást nyújt, és hogyan kell használni, megnézhetik az egység tesztjeit, hogy alaposabban megismerjék az egység API-ját.
- Az egység tesztelése lehetővé teszi a programozó számára, hogy később átalakítsa a kódot, és ellenőrizze, hogy a modul továbbra is megfelelően működik-e (azaz regressziós tesztelés). Az eljárás az, hogy tesztfunkciókat írunk az összes funkcióhoz és módszerhez, hogy amikor egy változás hibát okoz, akkor gyorsan azonosítható és kijavítható legyen.
- Az egységteszt moduláris jellege miatt tesztelhetjük a projekt egyes részeit anélkül, hogy megvárnánk mások befejezését.
Egységtesztelési hátrányok
- Nem várható, hogy az egység tesztelése elkapja a program minden hibáját. Még a legcsekélyebb programokban sem lehet minden végrehajtási utat értékelni
- Az egység tesztelése természeténél fogva a kód egységére összpontosít. Ezért nem tudja elkapni az integrációs hibákat vagy a rendszerszintű hibákat.
Javasolt egység tesztelés más tesztelési tevékenységekkel együtt.
Egység tesztelése a legjobb gyakorlatokról
- Egység Teszt esetek legyenek függetlenek. Bármely fejlesztés vagy a követelmények változása esetén az egységvizsgálati eseteket nem szabad befolyásolni.
- Egyszerre csak egy kódot teszteljen.
- Kövesse az egység tesztjeinek egyértelmű és következetes elnevezési szokásait
- Ha bármelyik modulban megváltozik a kód, győződjön meg arról, hogy van egy megfelelő egység Teszteset a modulhoz, és a modul sikeresen teljesíti a végrehajtást
- Az egységteszt során azonosított hibákat ki kell javítani, mielőtt továbblépnénk az SDLC következő szakaszába
- Fogadjon el egy "teszt kódként" megközelítést. Minél több kódot ír be tesztelés nélkül, annál több utat kell ellenőriznie a hibák szempontjából.
Összegzés
- AZ EGYSÉG TESZTELÉSE a szoftver tesztelésének olyan típusa, ahol a szoftver egyes egységeit vagy alkatrészeit tesztelik.
- Amint láthatja, sok minden részt vehet az egység tesztelésében. Lehet összetett vagy meglehetősen egyszerű, a tesztelt alkalmazás és az alkalmazott tesztelési stratégiák, eszközök és filozófiák függvényében. Az egység tesztelése mindig szükséges valamilyen szinten. Ez bizonyosság.