Google maakt testtool voor javascript opensource

Google heeft zijn zelfontwikkelde JS Test-tool uitgebracht als opensource-software. Met de tool kunnen ontwikkelaars javascript-code controleren op fouten. Daarbij wordt de hulp ingeroepen van de snelle V8 javascript-engine.

JS Test, door Google omschreven als een unit testing framework voor javascript, kan zijn controlewerk doen zonder dat er een browser nodig is. Ook stelt Google, die de tool ontwikkelde voor intern gebruik, dat JS Test heldere en duidelijk leesbare output geeft na het draaien van een test.

Volgens Google is JS Test zeer snel dankzij het toepassen van de V8 engine, de 'javascriptmotor' die ook in de Google Chrome-browser is te vinden. JS Test heeft echter een beperking: omdat de tool geen browser gebruikt, kan de testsoftware niet eenvoudig gebruikt worden voor het controleren van javascript-code die gebruik maakt van de dom-functionaliteit.

Volgens Google draait JS Test zowel op Linux-systemen als onder OS X. De software is uitgebracht onder de Apache License 2.0.

Google JS Test

Door Dimitri Reijerman

Redacteur

02-10-2011 • 16:02

40

Reacties (40)

40
36
29
4
0
0
Wijzig sortering
Dus deze testsuite kan alleen gebruikt voor bijv. algoritmen en niet voor normale websites? Dat maakt de test suite al een stuk minder bruikbaar... :'( En dan ook nog eens alleen op OSX/Linux? Had stiekem toch wel iets beters van Google verwacht.

[Reactie gewijzigd door TvdW op 22 juli 2024 15:42]

Voor javascript debuggen in websites kun je al goed uit de voeten met Firebug. Echter, deze tool heeft zich meer gericht op het debuggen van de javascript code zelf (en dus niet zo zeer de IO icm een website) zodat je dit gewoon makkelijk kunt testen in een simpele console omgeving (in Unix). Dit hadden we volgens mij nog niet, dus het lijkt mij een erg goede aanvulling!. Je kon in firebug ook wel in een klein console venstertje javascript functies uitvoeren om te debuggen, maar dit was naar mijn idee nog niet 100% ontwikkeld.
Het is anders al lastig zat om code te schrijven die code kan lezen. Je kan niet alles hebben. Dit is mooie software en ik ben er blij mee!
code kan code juist heel gemakkelijk lezen. Wat deze test-tool doet is niets meer dan valideren of de syntax juist is, want wat een code in het hoofd van een programmeur moet doen en wat ze genereert, daar kan geen enkel programma voor gebruikt worden. Dat zou the holy grail for programmers zijn (en de ontslagbrief voor elk test-team :p )
Dit is gewoon een unit testing framework (inclusief mocking) voor javascript, wat een heel stuk meer is dan de syntax valideren.

Met unit testing kun je kleine stukjes code testen, voor grotere stukken of hele applicaties heb je integratietesten. Die testen zijn over het algemeen een stuk lastiger te schrijven, vooral omdat je zoveel mogelijk een gebruiker moet simuleren.

Ik zou vooral niet je testers ontslaan, maar ze zoveel mogelijk gebruiken om mee te helpen die integratietesten dan te maken, en ook vooraf al na te denken over wat precies het gewenste gedrag van de applicatie is bij bepaalde input.
inderdaad, een een virtual machine met een linux distributie is ook snel opgezet als je echt die tool wilt gebruiken ;)
Ik vind het wel mooi dat google dit vrijgeeft, maarja, van google verwacht ik ook niet veel anders. Ik ken een paar andere bedrijven die zoiets nooit/zelden zouden doen :p
Microsoft begint de laatste tijd ook steeds meer source vrij te geven, zo is bijvoorbeeld de source van ASP.NET MVC 3 te downloaden.
Als het onder Windows wilt draaien, kan je natuurlijk altijd nog Cygwin gebruiken. ;)
Of je kan het ook gewoon niet onder windows draaien en iets gebruiken dat er wel is voor 'het OS dat alles heeft' :) Of je installeert linux. Of je gebruikt SSH, en draait het op een server. Genoeg opties :)
Het is sowieso verstandig om je code zo in te delen dat je DOM-manipulatie op een ander punt gebeurt dan je applicatie logica. Zeker als je website meer javascript gebruikt dan alleen wat simpel ajax-spul.

Kijk voor de gein ook eens naar Backbone.js en Jasmine
En kijk ook eens naar nodejs :) daar heb je al verschillende unit testing tools voor maar misschien werkt deze beter, zal het zeker gaan bekijken
"Ook stelt Google, die de tool ontwikkelde voor intern gebruik,"
Google werkt zelf veel in Linux en OS X, en heeft er dus weinig baat bij om het ook nog voor Windows te ontwikkelen. Door het open source te maken kunnen Windows gebruikers het naar hun OS porten.
Het is een INTERNE tool van google. Google werkt intern enkel nog met linux en OS X.

Top dat ze hun interne tools ook beschikbaar stellen voor derden.
ik zie het nut van unittests echt niet. tijdens developen werk je toch net zo lang tot de bugs eruit zijn? ik heb al een paar grote priveprojecten gebouwd, en never nooit unit test toe gepast. ik test ze zelf wel gewon in de browser ,en dan zie ik wel waar ie de mist in gaat.
Unit tests zijn vooral belangrijk bij grote projecten, en dan vooral projecten waar je met meerdere mensen aan werkt (zeker als mensen het later overnemen). Het wordt op een gegeven moment ondoenlijk om alle mogelijke situaties in het complete eindproduct te testen, zeker als je regelmatig kleine veranderingen of uitbreidingen maakt.

Als jij een bug fixed, of een aanpassing maakt, veroorzaak je mogelijk weer een andere bug die je niet direct ziet. Als je goede(!) unit tests hebt kan je met veel grotere zekerheid zo'n component aanpassen en dat scheel uiteindelijk extra werk bij het complete product testen.

Simpel real-world voorbeeld: Toyota was het eerste automerk dat unit/component tests introduceerde in hun productie proces, daardoor zijn ze het meest betrouwbare merk ter wereld geworden. Als je alleen het eindproduct test mis je nou eenmaal vrijwel gegarandeerd een paar dingen.

Anyway, dit (lightweight) framework van google lijkt er vooral op gericht te zijn op snelheid en te kunnen draaien op systemen zonder browser of GUI interface, zoals idd een typische server. Het is absoluut niet uniek als JS unit testing framework en hun andere framework js-test-driver is de betere keus als je uitgebreider (op meer browsers) wil testen.
het punt van unittesten is tegenwoordig niet meer echt testen maar eerst de test schrijven en de code ernaar maken zodat je precies maakt waarvoor het bedoeld is om zo code krachtig te houden
Pas als je met meerdere mensen aan een groot project werkt dan ga je het nut van unit tests wel begrijpen.
Als je in de algemene libraries met z'n allen zit te werken dan wel je onbewust nog wel eens wat stuk programmeren. Als je dan enkel je eigen ding controleert zal het misschien wel goed gaan maar je collega zijn ding kan hopeloos de mist in gaan.
Met unittests kan je vrij snel zien op je toevallig wat kapot hebt geprogrammeerd zonder te weten hoe het precies getest moet worden. Dat heeft je collega immers als voor je bepaalt.
Ik ben anders helemaal niet tevreden over de Javascript Engine in Chrome. Die wordt lang en breed ingehaald door -jawel- Internet Explorer 9. Dat, en de aanhoudende lagging issues maken dat ik van Chrome ben afgestapt.

Daarnaast snap ik niet helemaal wat het doel hiervan is. Waarom zou je single threaded javascript code ergens anders voor willen gebruiken dan in een browser? Zelfs al is je code semantisch correct, moet het nog steeds wel in elke browser ondersteund worden. Of mis ik hier volledig het punt?
De javascript engine is maar een deel van de browser en de testtool die google meelevert is totaal onafhankelijk van de browser. Single threaded code maakt je code niet perse trager of sneller, net zoals multi threaded code. Het gaat hier meer om de juiste tool op het juiste moment optimaal te kunnen benutten.

Dat de engine van microsoft sneller is wil nog niet zeggen dat je perse de engine van Microsoft wil gebruiken, want je moet dan de code herschrijven (de code van de core is in c++ en niet in javascript om zo de engine te benutten) en je wil ook de engine kunnen gebruiken, en je ben dan lekker afhankelijk van minstens de headers van een gesloten engine (of ben ik hier mis?).

Tot slot wil je de tool ook op unix en unix-like systemen zoals linux laten draaien naast windows. De V8 engine kan hartelust wel op windows werken, maar dan heb je iemand nodig die geïnteresseerd is in het maken van de port (misschien een mooi gat om in te vullen).

Dus kort gezegd, ja, je miste waarschijnlijk het punt, maar hopelijk ben je nu iets wijzer geworden ;)

[Reactie gewijzigd door avdg-BE op 22 juli 2024 15:42]

Dit is dan waarschijnlijk ook als RIA ontwikkel-unit-test-tool bedoeld, en niet als een 'ding' waar je even je 'site' doorheen haalt ;) Natuurlijk kan je in-browser testen, en zijn er diverse andere opties, maar een stand-alone tool als deze? Nog niet tegen gekomen :)

Voor alle mensen die nu gaan posten dat het jammer is dat het niet op windows is: dan gebruik je het toch niet?

Waarschijnlijk kom je klagen om dat je vind dat alles er voor windows moet zijn, terwijl je niet eens een ontwikkelaar bent.

Of misschien ben je wel een ontwikkelaar, maar dan vooral 'voor windows'. Dat is dan leuk voor je, maar het is voor iedereen, het internet, de computers, software, google. Als jij je beperkt tot 1 systeem, dan moet je niet klagen als een ander systeem iets heeft wat je zelf niet hebt.

En dan als laatste: misschien ben je geen 'echte' ontwikkelaar, die alles gewoon echt kan doen. In principe zou je moeten weten waar je mee aan het werk bent, hoe de technologie werkt. Je zou moeten weten hoe je gewoon van alle hard- en software gebruik kan maken, dat je misschien voorkeuren hebt, maar dat er erg veel opties zijn, naast je eerste keuze. Misschien zou je de software moeten aanpassen zodat je het kan compileren, of misschien moet je even een vm starten, of dual boot je, of maak je verbinding met een server die het wel kan.

Kortom, klagen dat je iets niet kan door een zelfgemaakte keuze, dat gaat echt niet helpen.

[Reactie gewijzigd door johnkeates op 22 juli 2024 15:42]

Mogen we aan het lijstje klagers ook nog de groep mensen toevoegen die bij elk open source project van een commercieel bedrijf moeten toevoegen dat er 'foute' belangen meespelen? En dat er vast een geheime agenda is die 'bewijst' dat elk willekeurig bedrijf evil is.

Overigens vind ik de keuze voor Linux als platform voor development juist erg logisch. Waar je bij Windows niet alleen aan het platform vastzit, maar ook meteen een ontwikkelomgeving moet kiezen , heb je bij Linux veel meer script oplossingen waarbij een dergelijke testoplossing snel integreerd.
Zou wel iets zijn om in Titanium Studio in te bouwen, aangezien je daarmee complete apps in Javascript kunt schrijven. :)
Complete apps in Javascript kan je ook in nano bouwen, of vi, of emacs, of TextEdit of Notepad.
Lijkt op het eerste gezicht een standaard xUnit-achtig framework, waar er (iig voor Javascript) al een aantal bestaan. Ik zal het wel eens nader bekijken, het heeft waarschijnlijk wel ergens zijn plaats.

Vraag me af (ben er wel vrij zeker van) of je het ook voor NodeJS code kunt gebruiken - aangezien dat niks met de DOM te maken heeft. Ook vraag ik me af of er goeie mocking support in zit.
Of andersom: Of je je unit-tests niet in NodeJS kunt draaien.
Voor de mensen die dom functionaliteit moeten testen in de browser kan ik FuncUnit aanbevelen! Het is gebaseerd op QUnit maar is veel uitgebreider.

Het is een combinatie van QUnit, Selenium (maar dan zonder die vreselijke API), Syn en werkt echt super!

De API is te simpel voor worden, typen doe je heel makkelijk met: S('input').click().type("JavaScript")

En ook moeilijke interacties als Drag en drop zijn verrekt simpel.

Of als je helemaal lui wilt zijn is er ook een webbased IDE.
http://funcunit.com/funcit.html

http://funcunit.com/
http://www.slideshare.net/moschel/funcunit
http://jupiterjs.com/news...n-web-application-testing
http://forum.javascriptmvc.com/topic/funcunit-integration
http://net.tutsplus.com/t...vascript-code-with-qunit/

Enig nadeel is, de laatste download versie heeft wat problemen met Firefox en zelf builden op Windows was geen succes.


Ik heb er zelf nog geen tijd gehad, maar er is een mogelijkheid om dit te koppen aan een CIS.

http://blog.ebizdaddy.com...ites-on-ubuntu-10-04-lts/
http://serverfault.com/qu...tests-on-an-ubuntu-server
https://wiki.fourkitchens...th+Hudson+on+Ubuntu+10.04
http://www.semicomplete.c...r-ephemeral-xservers.html
http://www.alittlemadness...unning-selenium-headless/

js-test-driver kende ik nog niet.
Ziet er veel belovend uit, binnenkort is even naar kijken.
Dit tooltje kan dus wel op NodeJS worden toegepast, omdat het geen DOM gebruikt.
Je hebt wel nog steeds de api van nodeJS die waarschijnlijk niet aanwezig is in google's test tool.
mmm nice progje wel mooi om even te kunnen checken of je code wel goed werkt.
ook mooi dat het opensource is.
wel jammer dat het niet voor windows is.
Dit soort tests draaien vaak ook op de buildserver/continous integration server. Daar heeft windows al helemaal een heel klein marktaandeel.

En het is allemaal open source, dus er zal vast wel een versie voor windows komen...
Dit is gewoon Google die probeert haar developers te ondersteunen met het ontwikkelen voor Chrome. ik zeg: een prima initiatief. Niets staat Ms in de weg hetzelfde te doen voor hun developers.
Denk eerder dat het andersom is. dus wel gek
test262 is a test suite intended to check agreement between JavaScript implementations and the ECMA-262 Specification
Oftewel: 262 is Javascript-code die, per definitie, correct is, zodat je de correctheid van jouw Javascript parser kunt controleren: als de test niet werkt ligt het aan de runtime.
Wat Google hier heeft vrijgegeven is een debugger voor je eigen code; als de test niet werkt ligt het aan de geteste code zelf.
Oftewel, 262 en JS Test doen twee compleet verschillende dingen; ze zijn geen "concurrenten" en kunnen geen verwarring veroorzaken door naast elkaar te bestaan.
en kunnen geen verwarring veroorzaken door naast elkaar te bestaan.
hAl was anders behoorlijk in de war :P Dus het kan wel ;)
Die test heeft hier helemaal niets, maar dan ook echt niets mee te maken :) Als er een artiekel op de FP staat ben je niet verplicht te reageren hoor!

De rest waar jij naar verwijst is voor Javascript Engines. De testtool van google is een unit testing tool.

Op dit item kan niet meer gereageerd worden.