Megtanulják, hogyan kell tesztelni a javascript kódot

Megtanulják, hogyan kell tesztelni a javascript kódot

Mit értek szakemberek és paradigmák? Természetesen az építészeti minta MVC (MVC), és mintázatok szervezet kódot. Miután ezeket nem okos trükk, akkor képes lesz arra, hogy írjon jobb kódot, ami nem csak könnyű fenntartani, de képesek az automatikus tesztelés.

Hiba a legtöbb tesztelők

Nem titok, hogy a legnépszerűbb módszer a vizsgálat mindig egy banális ellenőrzést a „szem”. Lényege egyszerű felháborító - írta pár ezer sornyi kódot, megoldotta a problémát, és indítsa el a teremtés. Ahhoz, hogy játszani, poklikat - mint minden működik, akkor töltse ki a Battle szerver. Minden egyszerű és kellő figyelmet Fejlesztő (ideális esetben „tesztelő” az egyén a beceneve), akkor hivatkozhat a helyességét a kérelmet.

A gyakorlatban minden úgy történik, egy kicsit másképp. Az egyes tesztelő, mint általában, nem. A fejlesztő maga próbálja tesztelni a funkció a program végrehajtásával feltételekben meghatározott referencia szekvencia. Fejlettebb kovácsolni kódot, automatizálása integrációs tesztelés, mint használ ilyeneket szelén.

Így a programozó képes észlelni csak a legsúlyosabb hibákat. Sajnos, a „hülye” és „előre nem látható” egyéni akciók, valamint a ravasz mozog az üzleti logika esetek 99% -ában továbbra is a színfalak mögött.

A jelenléte az egyén arcát a teszter megoldja a problémát is, részben és egy bizonyos ideig. Még ha figyelmen kívül hagyja azt saperskuyu figyelmet a részletekre, annak minőségét tesztelés általában nulla növekvő alkalmazásokat. Itt egy példa a gyakorlatból.

Unit tesztek, mint egy csodaszer

Mentsd idegek és növeli a garancia a rendelkezésre álló egyes részeinek alkalmazására legjobb segítség egység tesztelése. Ha még soha nem tapasztalt ezt a szörnyű szó, akkor fejtse ki röviden. Unit tesztek automatizálja a vizsgálati folyamat és vizsgálatok alá vetik minden alkalmazás szolgáltatás.

Befejezését követően az új funkciók (esetleges helyesírási tesztek és kifejlődése előtt) fejlesztő ír egy speciális kódot, hogy teszteljék a kódot. A kód tesztelésére kell szimulálni különböző helyzetekben és visszatérési értékek. Például, mi írunk egy függvényt vágni a terek (trim). Annak vizsgálatára, annak működését fel kell készülnünk néhány próbát, amely lehetővé teszi, hogy azt állítják, hogy:

  • távvezeték „vonal” a kimeneti kapunk egy „string”;
  • átviteli időzítés „9-es vonal” a kimeneti megkapjuk a „9-es vonal”;
  • ...

    Azt is hozzá tesztelés más bemeneti paraméterek (például, hogy cserélje ki a szóközt a lapon). Általában a jobb fogjuk fedezni a kódot tesztek, és lehetővé teszi a negatív opciók, annál valószínűbb, hogy a legkritikusabb pillanatban a fej lesz egy kis haj.

    A JS világban a teszteket általában segítségével leírt konkrét kereteket. Ők mindent meg kell, hogy írja le a teszteket, és a nagyon rossz eszközöket biztosíthatnak az elért vizsgálati jelentéseket.

    Vizsgálatok! = Extra kód

    A fejlesztők, akik nem használják a unit-tesztelés, szeretnék érvelni, hogy az egység tesztelése igényel az írás és támogatást további kódot. Azt mondják, hogy az időzítés a valós projektek gyakran tömörítve és írni kiegészítő kód egyszerűen nem lehetséges.

    Figyelembe véve a rövid idő egyetértek, de a részét az extra kódot tétet. Egyrészt igen, a vizsgálatokat igényel további kódot, és így az idő, hogy írja meg. Másrészt, a kód az a szerepe légzsák a járműben, és mindig kifizetődő növekedése az alkalmazásokban.

    Nem minden kódot vizsgáljuk

    Miért mondom, hogy meg kell gondolni vizsgálat előtt írásban alapkód? Mivel a kód, amelyet eredetileg állítólag fedezésére unit-tesztek, írt egy kicsit más stílusban. Nem minden kódot lehet tesztelni. Kód, amely ötvözi a logikáját és annak bemutatását, és még ha lehetetlen dolgokat megfelelően tesztelték. Itt mindig tanácsot, hogy kibír egy pár egyszerű szabályt:

  • Nem kell írni egy nagy funkciót. Minden funkciót kell megoldani a problémát, ahelyett, 100500 lehetséges helyzetek. Például, nem kell, hogy tegye le az adatokat küldeni a szerver kódot a funkciót, amely felelős a képzést;
  • Funkció, amely több mint 10 sornyi kódot legvalószínűbb szegény funkció;
  • Logika és képviselete semmiképpen nem lehet együtt;

    QUnit - klasszikus a műfaj az alkotók a jQuery

    Annak igazolására, a teszt, hoztam létre egy egyszerű projekt a következő struktoroy:

    Most nézd meg a teszteket magukat. Ahhoz, hogy ellenőrzéseket végez a kód működik Qunit.js könyvtár kínál nekünk több módszer:

  • teszt () - egy wrapper a leírása a vizsgálati;
  • ok () - lehetővé teszi, hogy ellenőrizze az igazság az állítás az első paraméter. Példánkban adok neki egy hívást trim funkciót általunk megadott (), és összehasonlítjuk az érték, amely azt várom, hogy megkapja. Ha a feltétel igaz, - a vizsgálaton;
  • egyenlő () - a módszer lehetővé teszi, hogy ellenőrizze az egyenlő az első és a második paraméter. Azonnal észrevette, hogy ez a metódus nem szigorú ellenőrzések, így alkalmas csak a skalár mennyiségek;
  • notEqual () - az ellentétes az egyenlő (). Ez akkor teljesül, ha az első érték nem egyenlő a második;
  • strictEqual () -analogichen egyenlő () egyetlen eltéréssel - használ szigorú vizsgálatot (azaz, ellenőrzi az adatok típusát és a másik);
  • notStrictEqual () - módszer ellentétes strictEqual ();
  • deepEqual () - Eljárás rekurzív kimutatások alkalmazott primitívek, tömbök, objektumok;
  • notDeepEqual () - módszer ellentétes deepEqual ();
  • vet () - Engedély tesztelésére callback függvények, generáló kivétel;

    A második lista, azt bizonyította, hogy hogyan alkalmazzák ezeket a módszereket a gyakorlatban. Ha fut egy teszt oly módon, hogy az összes teszteket sikeresen elvégezték (lásd. A megfelelő ábrát). Látni, hogy a különbség a sikeresen vizsgált, és nem, én változott a kód egy kicsit a tészta. Összhangban a tésztát használva strictEqual () I nyilván mondta, a rossz eredmények (lásd. A megfelelő ábra).

    1. lista tartalmát az index.html fájlt

    2. lista Test fájlok és trim () függvény

    A fő különbség az e példa az előzőtől - ahelyett, hogy csomagolási teszt () használják asyncTest (), és ezáltal közvetlenül azzal, hogy engem érdekel a tesztelés aszinkron tesztelés. Legközelebb futok elvárása 500 ml. mp. Ez idő alatt, a funkció myAsyncFunc () továbbítja az adatokat a teszt szerver, és ha minden nishtyak vissza igaz. Itt jön a legérdekesebb pillanat. Ha van egy hívás asyncTest () végrehajtási szál leáll, és a végén meg kell futtatni a tesztet magad. Ahhoz, hogy szabályozzák a végrehajtás QUnit van mód a start () és stop ().

    Megtanulják, hogyan kell tesztelni a javascript kódot

    Tesztelés aszinkron funkciókat QUnit könyvtár viszont meglehetősen egyszerű. Az utolsó példa, hogy szeretnék, hogy ki van társítva az írás a vizsgálat végrehajtó több aszinkron ellenőrzéseket. A fő kérdés merül fel, hogy ebben az ilyen problémák - a legjobb kiindulási végrehajtó az áramlást. Hivatalos Dock kínál alkalmazni ezekben az esetekben, valami ilyesmit:

    A teszt az egyéni cselekvés

    3. lista naplózás karakternél

    Most megpróbáljuk tesztelni ezt a funkciót. Az első dolog, hogy teszteljék a szervezet, meg kell felülmúlni karakternél. A legegyszerűbb módja ennek az jQuery könyvtár. amely lehetővé teszi, hogy hozzon létre egy eseményt egy pár sornyi kódot (lásd. 4. listát).

    4. lista Teszt kód KeyLogger

    Elején a lista a tésztát, készítem egy eseményt, hogy versenyez egy gombnyomás - «keydown». Mi érdekli a Tab gomb megnyomásával (kód 9). Ezután a ravaszt () metódus küldök főtt esemény, akkor el lehet kezdeni tesztelés. Először ellenőrizze az összképet - volt egy gomb megnyomása után, majd a kódot.

    Megtanulják, hogyan kell tesztelni a javascript kódot

    DOM titkos tesztek

    Phantom.JS - tesztek futtatásához a konzolról

    Írja teszteket Qunit.js Könyvtár kényelmes és egyszerű, de előbb vagy utóbb meg fog látogasson vágysz valahogy automatizálni az indítási vizsgálat és gyűjtése eredményeket. Például, én ebben az esetben van egy külön virtuális gépet DigitalOcean. kontroll, hogy én is csak akkor használja a konzolt.

    Megtanulják, hogyan kell tesztelni a javascript kódot

    Elég csak elegánsan megoldja ezt a problémát phantom.js projektben. Ez nem csak egy újabb keretet ír Unit-tesztek. és egy teljes konzolos verziója a WebKit motort. Leegyszerűsítve, ez az alkalmazás utánozza böngészőt. Segítségével phantom.js valóban nem könnyen automatizálható az ellenőrzést a teszt, hanem megoldani sok problémát, előbb-utóbb szembesül a fejlesztő: tudjon rendinga oldalának eredmények fájlba (png, jpg), mint egy hálózati monitor (letöltési sebesség, az általános teljesítményt, és így tovább. d.), a vetélkedés felhasználói műveletek, stb Azt javasoljuk, hogy ne legyen lusta, és olvassa el a hivatalos dokumentációt ebben a projektben, biztos, hogy talál valami érdekeset a maguk számára.

    Megtanulják, hogyan kell tesztelni a javascript kódot

    Próbáljuk megismerni phantom.js a gyakorlatban. Ahhoz, hogy kihagyja a phantom.js elkészített tesztek az előző részben, és a kapott eredményeket a konzol van szükségünk egy speciális script-rakodó - run-qunit.js. Nyisd meg a konzolt (I működik Windows, ezért használom cmd), és kitölti a parancsot a következő formátumban:

    Az én esetemben, a futási parancs van kapcsolva az alábbiak szerint:

    Minden teszt telt

    Cover kód vizsgálatok egyértelműen szükség van, és nem számít, milyen a skála alkalmazásának hozunk létre. Ismét emlékeztetni még a legkisebb programokat átalakítják ormótlan szörnyet, hogy fenn kell tartani és dopilivat funkcionalitást. Jó kódlefedettséget tesztek - a siker és a minőség. Igen, itt ilyen hamar írásához használható automatikus teszt kód nem könnyű, de hidd el, ezek a gyötrelmei fogják kompenzálni a jövőben. Ezen van a mai, jó szerencsét!

    Ha a vizsgálatok nem volt ideje

    Ha nincs semmi értelme irkál tesztek egyszerű funkciókat (hogy ugyanazt a trim () A példák ebben a cikkben), akkor jobb, hogy összpontosítson a legkritikusabb szakaszok kódot. Tartsa be ugyanazokat a szabályokat kell írásban gyakran változó kódot. A feladatmeghatározás az élő projekt gyakran változik, és bizonyos funkciók kell folyamatosan frissíteni kell. Az ilyen változások vezethet kellemetlen pillanatok - módosított kódját jól működik az új adatok és a régi szervesen nem emészthető. Ez nem fogni itt Feil, hasonló funkciót is jobb, hogy fedezze a teszteket. Ne feledje, egy egyszerű szabály - nincs ideje, hogy fedezze az összes kódot teszt, vágja a legfontosabb része.

    Megtanulják, hogyan kell tesztelni a javascript kódot

    Szabályzat jó teszt

  • A vizsgálatot meg kell a lehető legegyszerűbb. Minél bonyolultabb tesztet, annál valószínűbb, hogy néhány hibát;
  • Vizsgálatok kell csoportosítani modulokat, hogy később könnyebb volt megtalálni a hibákat, és a lehetőséget, hogy megvizsgálja a kérelmeket;
  • Minden egyes teszt nem függ más vizsgálatok;
  • Mindig levelet külön vizsgálat, minden alkalommal találni hibákat;

    phantom.js problémák megoldása a Windows

    Ha szembe egy hasonló probléma, és szeretné használni phantom.js Windows-on, majd készülj, hogy a következő csapkod. Nyissa meg a Nvidia vezérlőpult. Keresse meg a „Beállítások 3D» elem a fa. A jobb oldalon a választás „Preferred grafikus adapter” jelenik meg. Alapértelmezésben az érték az „Auto”. Meg kell változtatni, hogy „High Performance Nvidia processzor” vagy „integrált grafikus hardver.” Miután ez az egyszerű trükk phantom.js kezdett viselkedni engedelmesen.

    Mi olvasni

    Megtanulják, hogyan kell tesztelni a javascript kódot

    Alternatívák QUnit.js egy sort