TestSwarm - automatische Javascript-Tests in vielen Browsern
Continuous-Integration-Workflow für Javascript-Entwickler
Mozilla Labs arbeitet mit TestSwarm an einer Plattform für verteilte Javascript-Tests. Mit Hilfe einer Vielzahl von Nutzern sollen sich damit Javascript-Applikationen und Bibliotheken automatisiert in möglichst allen Browsern und Browserversionen testen lassen.
TestSwarm wurde von Mozilla-Entwickler John Resig als jQuery-Projekt ins Leben gerufen, ist derzeit aber auf dem Weg, ein offizielles Mozilla-Lab-Projekt zu werden. Noch steckt TestSwarm im Alphastadium.
TestSwarm soll das zeitaufwendige Testen von Javascript in einer Vielzahl von Browsern und Browserversionen vereinfachen. Dazu stellt TestSwarm die notwendigen Werkzeuge für einen Continuous-Integration-Workflow von Javascript-Projekten bereit. Nach jedem Commit werden entsprechende Tests angestoßen. Am Ende steht eine Tabelle, die Aufschluss darüber gibt, in welchen Browsern eine neue Entwicklerversion funktioniert und in welchen es Probleme gibt - vorausgesetzt, das jeweilige Projekt verfügt über eine entsprechende Testsuite.
TestSwarm.com als Dienst und Open Source
Das System wird derzeit unter TestSwarm.com für ausgewählte Projekte als Dienst angeboten, darunter die freien Javascript-Bibliotheken jQuery, YUI, Dojo, MooTools und Prototype. Der Code von TestSwarm steht allerdings als Open Source zur Verfügung. Wer also sein eigenes Projekt damit testen will, kann dies mit einer eigenen Infrastruktur tun. Unterstützt werden derzeit die Testframeworks QUnit (jQuery), UnitTestJS (Prototype), JSSpec (MooTools), JSUnit, Selenium und Dojo Objective Harness. TestSwarm kann aber um eigene Testframeworks erweitert werden.
Server verteilt Aufgaben, sammelt und korrigiert Ergebnisse
Kern von TestSwarm ist ein zentraler Server, geschrieben in PHP und MySQL, mit dem sich alle Clients verbinden. Sie erhalten hier Aufgaben und liefern Ergebnisse zurück. Auf den Clients läuft der TestSwarm-Test-Runner, eine einfache Javascript-Applikation, die im Browser ausgeführt wird. Sie frage alle 30 Sekunden beim Server an, ob dieser neue Testsuiten anzubieten hat. Wird eine geliefert, führt der Testrunner sie aus und sendet die Ergebnisse zurück an den Server. Auf welchem Browser eine Testsuite ausgeführt werden soll, kann dabei eingeschränkt werden. Zudem lassen sich mehrere Testdurchläufe erzwingen.
Typische Fehler, die in einem solchen Szenario auftreten, soll TestSwarm automatisch korrigieren, denn Browser liefern durchaus inkonsistente Ergebnisse, haben Bugs oder verlieren ihre Netzwerkverbindung. Entsprechende Ergebnisse werden gelöscht, die Tests im Zweifel wiederholt.
Nutzer können sich an TestSwarm beteiligen, indem sie ihre Rechner und Browser für Tests zur Verfügung stellen. Dazu muss zuvor ein TestSwarm-Account eingerichtet werden.
Anders als beispielsweise Selenium oder JSTestDriver ist TestSwarm darauf ausgelegt, unterschiedliche Testsuiten zu unterstützen, arbeitet stärker dezentral, korrigiert problematische Ergebnisse automatisch und kommt ohne Browsererweiterungen aus.
Eine Projektseite zu TestSwarm findet sich derzeit bei GitHub, ebenso der Code des Projekts.
läuft schon seit heute Morgen aber bisher nichts...
und dank OpenSource sicher schnell realisierbar