3.2.2. Test-Phase

Die Test-Phase beginnt durch den Aufruf einer Testmethode. Innerhalb der Testmethode greift der Test über ein Modell auf die Seiten der Web-Anwendung in der gestarteten Browser-Instanz zu. Die Art der Tests kann dabei sehr stark variieren.

Abbildung 3.3. Checkerberry web Test-Phase

Checkerberry web Test-Phase


Die obige Abbildung beschreibt die Kommunikation der am Test beteiligten Komponenten. Der Selenium-Client wird aus dem Test heraus verwendet, um die Felder der zu testenden Webseite zu manipulieren. Über das HTTP-Protokoll kommuniziert der Selenium-Client direkt mit dem Selenium-Core innerhalb des Browsers. In dem Beispiel wird der Befehl type zur Eingabe eines Textes in ein Feld übergeben. Der Selenium-Core empfängt den Request und führt ihn mit Hilfe von JavaScript in dem zweiten Browserfenster aus. Dies führt dazu, dass in der zu testenden Webseite ein Wert eingetragen wird. Nach der erfolgreichen Bearbeitung sendet der Selenium-Core eine Bestätigung an den Selenium-Client.

Der erste Teil des Beispiels verdeutlicht, dass man Selenium sehr gut als Fernsteuerung interpretieren kann. Durch den Selenium-Client können die Komponenten einer Webseite über eine Testmethode manipuliert werden.

Der zweite Teil des Beispiels aus Abbildung 3.3, „Checkerberry web Test-Phase“ beginnt mit der Aktion clickAndWait, die eine HTML-Komponente drückt und auf ein Ergebnis wartet. Der Selenium-Client sendet die Anfrage wieder an den Selenium-Core, der das Drücken z.B. eines Buttons auf der Webseite ausführt. Das Drücken des Buttons führt in dem Beispiel zum Laden einer neuen Webseite. Durch die vorgenommene „Proxy Injection“ wird der HTTP-Request zum Laden der neuen Webseite über den HTTP-Proxy bearbeitet. Dieser sendet einen eigenen Request an den Web-Server. Die Response des Webservers wird durch den HTTP-Proxy manipuliert und an den Browser zurückgeliefert. Der Selenium-Core übermittelt dann die erfolgreiche Verarbeitung an den Selenium-Client.

Die „Same Origin Policy“ lässt sich anhand dieses Beispiels gut erklären. Alle Browser erlauben die Ausführung von JavaScript-Aufrufen nur, wenn sowohl das JavaScript als auch die zugehörige Webseite von dem gleichen Server geladen wurden [Same Origin Policy, 2010]. Diese Situation ist bei der Verwendung von Selenium zunächst nicht gegeben, da die JavaScript-Funktionen des Selenium-Core nicht über den Web-Server der zu testenden Anwendung geladen wurden. Aus diesem Grund manipuliert der HTTP-Proxy des Selenium RC Servers die Kommunikation zwischen Browser und Web-Server. Auf diese Art und Weise wird dem Browser vorgetäuscht, dass sowohl JavaScript wie auch die Webseite vom gleichen Server geladen wurden, sodass die JavaScript-Funktionen des Selenium-Core auf die zu testende Webseite zugreifen können.