Egy kis bevezető a JS egységtesztelésbe és annak keretrendszerébe és eszközeibe
A webfejlesztés kódolási forgatókönyve exponenciálisan megváltozott az elmúlt néhány évben. A világ átállt az olyan hagyományos programozási nyelvekről, mint a Java, a .NET és a PHP. Elkezdték alkalmazkodni a JavaScript-keretrendszerhez, annak köszönhetően, hogy könnyen használható az előtérben, valamint a háttérben és a gyors prototípus-készítési képességekben.
Ezzel az átállással kiváló tesztelőeszközökre is szükség van. Ebben a cikkben bemutatom az iparágban használt legjobb javascript egységtesztelő eszközöket.
Tartalomjegyzék
Az egységteszt fontossága
Mielőtt megismerkednénk a rendelkezésre álló eszközökkel és előnyeikkel, értsük meg, miért fontos az egységteszt.
Az egységtesztelés az implementált kód modulszintű tesztelésének folyamata. Az egységtesztelés lehetővé teszi, hogy megbizonyosodjon arról, hogy a kifejlesztett moduljai megfelelnek az üzleti dokumentumban meghatározott követelményeknek. Ezeket a teszteket minden modulhoz a létrehozásukkor írják. Minden új modul fejlesztése után a tesztesetek teljes csomagja lefut annak biztosítására, hogy a már meglévő modulokat ne érintse a kifejlesztett modul.
A Javascript-fejlesztés meglehetősen szervezetlenné válhat, ha nem tartják be a megfelelő konvenciókat. Ez szükségessé teszi a megfelelő fejlesztési és egységtesztelési eszközök alkalmazását. A frontend Javascript egységtesztjei főként tényleges vagy fej nélküli böngészőkön futnak
Ezek a tesztek az alkalmazás használhatóságának és válaszkészségének tesztelésére összpontosítanak. A háttér-egységtesztelési keretrendszerek a NodeJS-alapú háttérkód üzleti logikájának és szolgáltatási végpontjainak tesztelésére összpontosítanak.
MochaJS
MochaJS a legnépszerűbb tesztelési keretrendszer, amely támogatja a háttér- és frontend tesztelést. A MochaJS rugalmas alap a tesztek igény szerinti fejlesztéséhez. A teszteket aszinkron módon futtatja a Chrome v8 motoron vagy bármely más böngészőn.
A Mocha fő előnyei a következők:
- Működik az előtérben és a háttérben is
- Támogatja a NodeJS hibakeresőt
- Tiszta alapot biztosít a tesztek fejlesztéséhez a fejlesztő kényelmének megfelelően
- Bármilyen böngészőt támogat, beleértve a fej nélküli króm könyvtárat is
- Támogatja az objektum gúnyolódást a rugalmas háttértesztek végrehajtásához
Jázmin
Jázmin egy felhasználói viselkedésutánzó, amely lehetővé teszi a webhely felhasználói viselkedéséhez hasonló tesztesetek végrehajtását. A Jasmine hasznos a tesztelési felületen a láthatóság, a kattintások tisztasága, valamint a felhasználói felület érzékenysége szempontjából különböző felbontásokban. A Jasmine lehetővé teszi a felhasználói viselkedés automatizálását vámkésleltetésekkel és várakozási idővel, hogy szimulálja a tényleges felhasználói viselkedést.
A jázmin használatának fő előnyei a következők:
- Alacsonyabb rezsi a szinte nulla külső függőség miatt
- Szinte minden szükséges szerszámmal együtt jár a dobozból
- Támogatja a Frontend és a Backend teszteket
- A kódolás nagyon hasonlít a természetes nyelven történő íráshoz
- Kiterjedt dokumentáció több keretrendszerrel való használathoz
Nézd meg ezt a zseniális egységteszt a Jasmine online tanfolyammal.
AVA
AVA egy minimalista, könnyű tesztelési keretrendszer, amely kihasználja a Javascript aszinkron jellegét. Az AVA egyidejűleg is végezhet teszteket.
Lehetővé teszi, hogy szinte teljes kontrollt gyakoroljon a tevékenysége felett. Elsősorban a NodeJS alapú kód tesztjeinek futtatására összpontosít. Néhány előny a következőket tartalmazza:
- A könnyű lábnyom gyorsabbá teszi
- A teszteket aszinkron módon és párhuzamosan futtatja
- Gyorsabb, mint a legtöbb más tesztkeretrendszer
- A Javascript tesztek egyszerűbb szintaxisa
- Tisztább veremnyomok az észlelt esetleges hibákhoz
TRÉFA
TRÉFA az egyik legnépszerűbb keretrendszer, amelyet a Facebook rendszeresen karbantart. Ez egy előnyben részesített keretrendszer a React alapú alkalmazásokhoz, mivel nulla konfigurációt igényel.
Azonban nem korlátozódik a React-tal való használatra. A JEST néhány jellemzője:
- Egyetlen keretrendszer, amely illeszkedik a NodeJS, VueJS, React, Angular és más Babel alapú projektekhez
- Könnyebb felszállni a földről
- Nos dokumentáció és szabványos kódolási szintaxis
- Az Élő pillanatképekkel lehetővé teszi a nagyobb objektumokkal végzett tesztek kezelését
Karma
Karma egy produktív tesztelési környezet, amely magában foglalja az összes népszerű tesztleíró keretrendszert. Támogatja az alkalmazást a tesztek végrehajtásához különböző környezetekben. Széles körű támogatással rendelkezik a különböző eszközökön és alkalmazásokon végzett tesztek végrehajtásához.
A Karma választásának elsődleges szempontja a CI/CD motorokkal való integráció támogatása és a következő szolgáltatások.
- Használható tesztek futtatására böngészőkön, fej nélküli környezetekben, mint például a PhantomJS, valamint eszközökön
- Támogatja a legtöbb népszerű keretrendszerben írt teszteket
- Lehetővé teszi a tesztek távoli futtatását más eszközökön az éppen érkező fájlokkal
- Támogatja a teszteset hibakeresését a Chrome és a Webstorm használatával
Szalag
Szalag felépítésében nagyon hasonlít az AVA-hoz. Nem támogatja a globalokat, ezért minden tesztfájlban szalagot kell tartalmaznia. Ennek a döntésnek, miszerint korlátozza a változók globbálását, megvannak az előnyei is. Néhány jellemző kiemeli:
- Tiszta, könnyű lábnyom
- Csupán fémkódot biztosít, és teljes szabadságot ad a fejlesztőnek a tesztesetek megírásában
- Támogatja az ES6, a Typescript és a coffee script szabványokat
- Támogatja a tesztvégrehajtást a legtöbb modern böngészőn
Cypress.io
Ciprus egy izgalmas tesztelési keretrendszer, amely gyakorlatilag a böngészőben fut. Interaktív felhasználói felületet biztosít a böngészőben weboldal formájában. Könnyen telepíthető Macre, Windowsra és Linuxra is. Ez egy független tesztfutó, amelynek nem kell szorosan integrálnia a kódot.
Bábjátékos
Bábjátékos egy kiváló tesztvégrehajtási keretrendszer, amelyet a Google csapata épített. Fej nélküli króm API-t biztosít a NodeJS alkalmazásokhoz.
A Puppeteer elsősorban a böngészőre jellemző alkalmazásokhoz használatos, mint például a feltérképezési teszt, az oldalszerkezet-teszt, a képernyőképek készítése, sőt az előre renderelt tartalom rögzítése egyoldalas alkalmazásokhoz. A bábjáték használatának további előnyei:
- Lehetőség egyéni felbontások és méretek beállítására a böngésző számára
- Támogatás a Chrome-bővítmények teszteléséhez
- Automatizálási támogatás az űrlapok benyújtásához, a felhasználói felület teszteléséhez és a billentyűzet beviteléhez
- Támogatja az ES6 funkciókat, mint például a await és az async
ChaiJS
ChaiJS keretrendszer a viselkedésvezérelt tesztelésre összpontosít. Bármilyen más kerettel párhuzamosan használható. Már egy ideje létezik, és a Javascript szabványok fejlődésével együtt fejlődött.
A ChaiJS Node-dal, böngészővel, vasúttal működik, és nagyszerű támogatási közösséget és dokumentációt kapott.
Quit
Quit – egy hatékony tesztelési keretrendszer, amely a frontenddel való használatra készült. Ez az első választás a JQuery, JQuery Mobile és JQuery UI könyvtárak fejlesztői számára.
Független JS-fájlként írható, és bármely weboldalon végrehajtható. A Qunit használatával végzett tesztelés szokásos módszere az, hogy a fájlt felveszi a weboldalra, és teszteket futtat a Qunit beépülő modul használatával. A QUnit előnyei a következők:
- Használható újrafelhasználható tesztszkriptek készítésére
- Telepítésre kész webes felületet biztosít a tesztesetek kimeneteinek vizuális megtekintésére
- A tetejére épített bővítmények készlete gyorsabb teszteset-fejlesztést tesz lehetővé
Sinon
Sinon.js kiegészíti az egységtesztelési keretrendszert a valódi dolgok meghamisításához/gúnyolásához. Mert a tesztelés során – nem lesz minden adata! Támogatja a Chrome, az IE 11, a Firefox, az Edge, a Safari és a Node.js futtatókörnyezetét.
A Sinon jó alternatívája lenne testdouble.js
Következtetés
Az egységteszt elengedhetetlen annak biztosításához, hogy a kódmódosítások ne törjék meg az alkalmazást, és az üzleti követelményeknek megfelelően működik. És remélem, a fentiek segítenek ebben. Ha kezdő vagy, akkor ez tetszeni fog online tanfolyam amely megtanítja a JS egység tesztelésére ChaiJS, Sinon és Mocha segítségével.