hovedløse funktionelle test med selen og phantomjs

, uden hoved, renset funktionelle test med selen og phantomjs,,,,, 19,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, lad os skabe et system for at udføre funktionelle test på web - applikationer, som udnytter selen og phantomjs.den resulterende system vil gøre det muligt for os at skrive let testscenarier i javascript og teste de scenarier, både i faste - browsere og en hovedløs simulator.,,,,, at vælge komponenter, den indlysende ulemper ved at selen er, at det kræver en fuldstændig grafisk desktop - for alle prøvninger.,,, til at begynde med, har vi til at vælge browser, kontrol eller (motor til at simulere en slutbruger.i lang tid, og at de primære aktør på dette område var selen, og det er det stadig.selen giver mulighed for automatisk kontrol af ægte browsere på reelle operative systemer, som er den primære fordel: de kan være helt sikker på, at de test, er virkeligheden så tæt som muligt. den indlysende ulemper ved at selen er, at det kræver en fuldstændig grafisk desktop - for alle prøvninger.som et resultat af din test kan være langsomt.men selen kan være fantastisk, hvis de har de nødvendige ressourcer til at oprette virtuelle maskiner til forskellige operativsystemer og forbinder det sammen.,, i den modsatte ende af spektret er phantomjs: et lille, men fremragende projekt, en webkit motor med fuld javascript adgang, men uden den grafiske del.phantomjs er meget nemt at oprette, kører på en maskine, og er betydeligt hurtigere.,,, selen, nu kan kontrollere phantomjs på samme måde, som det har andre om.,,, phantomjs, er en fuld webkit, dækker 90% af deres funktionelle test behov.hvis din ansøgning er i webkit korrekt, er det sandsynligt, at det vil være korrekt i andre browsere.det udelukker internet explorer 6 – 8,.,, men, som din projekt bliver mere og mere populær, det resterende 10% bliver et vigtigt spørgsmål.hvis din funktionsprøve suite er oprettet på phantomjs direkte, ville det være en smerte til at omskrive test for selen. heldigvis, for nylig ved slutningen af 2012, modtog vi en gave i form af phantomjs bindinger til selen.med andre ord, selen, nu kan kontrollere phantomjs på samme måde, som det har andre browser., i betragtning af, at selen, selv, har ikke brug for nogen komplicerede struktur og kan løbe rundt, kan vi bruge selen specifik kontrol phantomjs og dækker 90% af vores test behov.hvis du senere brug for stærkere kontrol, kan du oprette ekstra browser forbindelser til selen, uden at en enkelt linje i din kode, således vores valg for browser motor er selen med phantomjs.,,, der beskriver prøvninger, selen er bindinger i de mest populære programmeringssprog, så vi kan vælge et sprog i henhold til vores behov.dette er måske den mest kontroversielle del af denne artikel: jeg mener, javascript til det bedste valg for at beskrive funktionstest af websteder og net ansøgninger.,,, uanset hvilket back - end - teknologi i brug, undtagen altid vil bruge javascript (dette gælder, selv hvis de anvender et sprog, som udarbejder til vanilje javascript, som coffeescript eller maskinskrift.).som sådan, javascript vil altid være et forståeligt sprog med mindst én person på holdet.,,, overveje muligheden for deres funktionelle test, der er skrevet af ikke - programmører.popularitet javascript på forenden, kombineret med ekspressivitet i evnen til at skabe klare domænespecifik sprog, gør det helt klart muligt for flere folk til at skrive funktionsprøver.,,, det er naturligt at kontrollere en test - med javascript, idet det er højst asynkron, og det er, hvad vi kontrollere browser på dagligt.,, selen bindinger til javascript kaldes, webdriverjs.selv om projektet er mindre udviklet end offentligt støttede chauffører for java, c #, ruby og python, men den indeholder allerede de fleste af de funktioner, som vi kræver.,, test,,, med henblik på anvendelsen af denne artikel, mokka med te er blevet udvalgt.,,, og endelig har vi brug for en test af, eller en ansøgning om at tage prøver af navn, og så trykker de output, der konstaterer, hvor mange forsøg lykkedes eller ikke.denne prøvning skal også tilbyde en påstand runner bibliotek, som giver mulighed for at give udtryk for, om en prøve kaffe lykkes eller mislykkes.,, valget er helt gratis.der er masser af javascript test løbere, men ved anvendelse af denne artikel, mokka med te er blevet udvalgt.- giver en betydelig fleksibilitet, en bred vifte af output - formater, og den folkelige jasmine som syntaks.te, kan du skrive beskrivende bdd som påstande.,,, opsætning, her er den endelige pakke det, vi vil bruge:,,, - – test runner, chai – påstand, bibliotek, webdriverjs – browser kontrol bindinger, fremstilling og drift, selen – browser - fabrikken, phantomjs – hurtigt hovedløse browser,,, node.js og new public management, fordi størstedelen af vores, der er baseret på javascript, vi har brug for node.js og new public management.begge disse er fælles værktøjer i fællesskabet, og jeg går ud fra, at du allerede har oprettet.hvis du ikke bruger installatøren på node.js websted.må ikke bekymre dig, hvis noget går galt, er der masser af node installere vejledninger, der er til rådighed på nettet.,, mokka, te og webdriverjs, alle tre af disse kan monteres med, new public management:,, sudo new public management installere - g - te webdriverjs,, du kan også installere dem lokalt i fortegnelse, hvor dine prøver er beliggende:,, new public management installere mokka chai webdriverjs, selen, downloade selen server.det er fordelt som et enkelt glas sagsakter, som du løb simpelthen:,, java - glas selenium-server-standalone-2.28.0.jar, så snart du udføre denne kommando, støvler på en server, som din test kode vil forbinde senere.bemærk venligst, at du bliver nødt til at løbe selen server hver gang, at du løb din test.,, phantomjs, hurtigt version, anvendelse, new public management, at installere phantomjs globalt:,, sudo new public management installere - g phantomjs, andre muligheder, kræver vi en ny version af phantomjs - mindst 1,8.det betyder, at kolli, forudsat af din pakke manager (ammoniumparawolframat,, macports,...), vil sandsynligvis blive forældet.,, kan du installere med new public management uden en global anlæg, eller ved andre metoder manuelt.men i dette tilfælde, du bliver nødt til at fortælle selen, hvor du placerede phantomjs, hver gang du løb selen:,, sti = "/sti //node_modules /phantomjs /bin: $vej" java - glas selenium-server-standalone-2.28.0.jar,,, at kombinere alt, nu hvor vi har alle de dele, vi er nødt til at sætte alt sammen.,, husk: før der prøver, du skal løbe selen - serveren:,, java - glas selenium-server-standalone-2.28.0.jar, selen og løber phantomjs internt, du behøver ikke at bekymre dig om det. nu skal vi til at forbinde med selen fra vores javascript.her er en prøve snippet, som vil indlede en forbindelse til selen og har en klar til formål at kontrollere vores selen instans: //anvendelse webdriverjs at skabe en selen klient var klient = kræver ('webdriverjs). fjerntliggende ((desiredcapabilities: (//du kan vælge andre browsere //http://code.google.com/p/selenium/wiki/desiredcapabilities browsername: "phantomjs') //webdriverjs har en meget stor produktion, der generelt er ubrugelig //hvis noget går galt, fjern denne til at se flere detaljer loglevel:" passive "}); klient. init();,, og nu kan vi beskrive vores test og anvende, kunden, variabel til at kontrollere browser.en henvisning til webdriverjs api er til rådighed i den dokumentation, men her er et kort eksempel:,, klient. url ('http: //f.eks. kom /') klient. gettitle (funktion (titel) (konsol. log ('title ", afsnit).}); klient. setvalue ("&#område "," værdi "); klient. submitform(); klient. end();,, lad os bruge den kaffe og te syntaks for at beskrive en test, kan vi prøve nogle egenskaber ved de, example.com, hjemmeside:,,'test beskrive (f.eks. kom, function() (før (funktion (ske) (klient. init(). url ('http: //f.eks. kom, gjort).}) beskriver ('check hjemmeside, function() {('should se den rigtige titel, funktion (ske) (klient. gettitle (funktion (titel) (forvente (titel). - ('exa.mple område '); done().})}); ('should se liget, funktion (ske) (klient. gettext (»p«, funktion (p) (forvente (titel). at. string (for illustrative eksempler i dokumenter.'); done().})}))); efter (funktion (ske) (klient. end(); done().})});,, du måske ønsker at dele en klient, initialization over mange test filer.skabe et lille knude modul til at aktivere og indførsel i hver test fil:,,, klient. js,:,, exports.client = kræver ('webdriverjs). fjerntliggende ((//indstillinger};,,, - test. er:,, var klient = kræver (. /klient). klient og var forventer = kræver ('chai '). at forvente; //udføre prøvninger,,,,,,,, - test suiter er udføre med, mokka, binær.hvis du følger denne vejledning og installeret mokka lokalt, så skal du beskrive en hel sti til binære dig selv, node_modules /en /bin /mocha,.,, som automatisk mokka behandler enhver test, der tager længere tid end to sekunder, som mislykkedes.i betragtning af, at vi rent faktisk starter en webbrowser, og at en http anmodning, er vi nødt til at øge denne timeout - 5 eller 10 sekunder:,, node_modules /en /bin /mokka test.js - t 10.000, hvis alt gik efter planen, skulle du se produktion som denne:,,.✔ 1 < over klasse = "nb" > test fuldført < /span >,,, de næste skridt, når du har nået dit ønskede funktionelle test resultater, vil du måske overveje at forbedre din fælde yderligere.,, to klare retninger er kontinuerlige integration og distribueret selen prøvning.,, kontinuerlige integration, dit mål bør være at minimere den tid, der bruger du prøver.,,, du måske ønsker at bruge en fuldstændig automatisk kontinuerlige integration server, som vil køre testene, når der er behov for automatisk, og meddele dem, hvis noget går galt, i en verden af åben kilde, den rolle, der spilles af en server er omfattet af jenkins ci: en bekvem, magtfuld, let at installere tjeneste, som løber det forsøg, når det er nødvendigt, udføre dem i enhver konfiguration, at du giver, og eventuelt løber mange flere bygge - relaterede opgaver, såsom at din kode til fjerntliggende servere.,, hvis du føler dig meget eventyrlysten, kan du forsøg med et nyt projekt, kaldet gitlab ci, som giver mindre elementer, men det ser bedre ud, og er integreret med gitlab, en selvstændig vært for github klon., i hvert fald dit mål bør være at minimere than tid bruger du prøver.i stedet for de test, bør styres automatisk, og bør kun meddele dem, hvis noget går galt, selen og net, selen har flere praktiske begrænsninger.for eksempel, du kan ikke køre mere end et par browsere på den samme maskine til at blive testet med selen. desuden vil de bemærke, at, når du har mange prøver, at alle kan blive en langvarig proces.selv om vedvarende integration, dels letter dette problem, kan du stadig ønsker at køre nogle tests parallelt på forskellige maskiner. og endelig, du vil snart se, at du ønsker at teste forskellige browsere på forskellige operativsystemer.og mens dine test kode i teorien kan tale med forskellige selen servere, når du bliver lidt, dette har brug for centralisering,.,, selen grid fælde forsøger at give præcis det.i stedet for at have en selen server kontrol en flok browsere på en maskine, har du selen server, som kontrollerer flere selen knudepunkter, hver der kontrollerer kun få browsere på en enkelt virksomhed.,,, konklusion, der stak, selv om de ikke er ubetydelige, i virkeligheden er ganske enkel.tilsætning af phantomjs til selen ende gør det muligt for os at begynde at bruge selen uden megen investering, som f.eks. oprettelse af grafiske test servere.,, anvendelse af javascript som en afprøvning af motor, sikrer, at vores test vil blive relevant i forbindelse med web - udvikling i den nærmeste fremtid.



Previous:
Next Page: