Selenium Grid Server aufsetzen
06. August 2010In diesen Artikel geht es darum wie Selenium Grid installiert wird.
Wozu Selenium Grid?
Man kann Selenium Tests über einen Selenium RC Server automatisiert ausführen. Wer das schon mal gemacht hat, weiß das dieser Prozess sehr lange dauern kann. Insbesondere wenn man verschiedene Browser testen möchte und die Tests mit Dataprovidern verwendet. Das bedeutet das die Tests nicht nur einmal, sondern mehrmals laufen und dann kommen schnell ein paar Stunden zusammen. Diese Zeit ist besonders unangenehm wenn man die Software ausliefern möchte und lange auf die Test Ergebnisse warten muss.
Selenium Grid behebt das Problem in dem es wie eine Art Load Balancer arbeitet. Es existiert ein Hub der genau wie der RC Server die Test Kommandos entgegen nimmt. Der Hub verhält sich für den Test Client (z.Bsp.: PHPUnit) genauso wie der Selenium RC Server. An den Hub können sich verschieden RC Server Instanzen registrieren. Diese Server können auch auf ganz anderen Host Systemen oder Virtuellen Hosts laufen. Somit kann man auch wirklich alle Browser Varianten testen.
Installation
Man benötigt einen Host der vom Test Client erreichbar ist. Also der Rechner auf der PHPUnit oder JUnit läuft. Auf diesem Host muss Ant installiert sein um den Grid Hub zu starten. Selenium Grid muss man nur herunterladen und entpacken.
Hub Starten
Zum Starten des Hubs wechselt man ich den Grid Verzeichniss und startet den Hub über die buid.xml
ant launch-hub
Damit ist der Hub auf diesen Host unter localhost:4444 erreichbar.
RC Server starten
Den RC Server kann man entweder auf dem dem gleichen Host starten.
ant launch-remote-control -Dport=5555
oder auf einen anderen Host oder VHost
ant launch-remote-control -Dport=5555 -Dhost=vhost1 -DhubURL=http://grid-hub:4444
Host: Das ist die Adresse vom Hub aus gesehen zum Host auf dem der RC Server liegt.
HubUrl: Das ist die Adresse zum Hub vom Host mit dem RC Server.
Sinnvollerweise betreibt man die RC Server auf getrennten Hosts.
RC Server Einstellungen
Man kann den RC Server der unter Grid läuft genauso anpassen wie einen normalen RC Server. Um beispielsweise ein spezielles Firefox Profil zu verwenden kann man beim Starten des RC Servers noch das Selenium Argument firefoxProfileTemplate mit dem Ant Property seleniumArgs angeben.
ant launch-remote-control -Dport=5555-DseleniumArgs="-firefoxProfileTemplate C:\selenium_ff"
Umgebungen
Der RC Server unter Grid läuft im Gegensatz zum normalen RC Server immer nur mit einer Umgebung. Standardmäßig ist das “*firefox”. Um eine andere Umgebung zu starten muss das Argument environment angeben.
-Denvironment="*iexplore"
PHPUnit und Grid
Leider ist es nicht möglich den vollen Nutzen aus Grid zu ziehen wenn man mit PHPUnit arbeitet. Da PHPUnit nicht in der Lage ist die Tests parallel auszuführen.
Man kann aber dennoch die Tests mit dem –filter oder –group Argument aufteilen und diese dann parallel ausführen. Hierbei muss man aber dann die Ergebnisse aus den verschiedenen Ausführungen zusammenfassen.
Auf jeden Fall lohnt sich aber die Aufteilung für verschiedene Browser.
Absolut notwendig wird Grid wenn man verschiedene Build Prozesse hat die einen Selenium Server nutzen.
Fazit
Grid lässt sich relativ einfach aufsetzen und erhöht die Test Performance deutlich.
Tags: grid, selenium, Unittests
Der Beitrag wurde am Freitag, den 06. August 2010 um 21:00 Uhr veröffentlicht und wurde unter Test, Webwerkzeuge abgelegt. du kannst die Kommentare zu diesen Eintrag durch den RSS 2.0 Feed verfolgen. Kommentare und Pings sind derzeit nicht erlaubt.
