Facebook
Twitter
Google+
Kommentare
5

Selenium – Was kann ich testen?

Ich hatte ja letzte Woche einen wirklichen Grund-Grundkurs zum Thema Selenium angesetzt. Schien auch gut angekommen zu sein. Deswegen will ich heute gleich anknüpfen und das Thema Selenium ein wenig vertiefen. Ein paar von euch hatten sich den Fokus auf „Was kann ich testen?“ und „Was sollte ich testen und was nicht?“ gewünscht. Heute will ich mich auf das „Was kann ich testen“ konzentrieren, da das andere Thema darauf aufbaut. Ich hoffe das ist ok.

Um zu wissen, was ich mit Selenium testen kann, muss man ein wenig ausholen und erklären, wie Selenium im Kern funktioniert. Der Ansatz ist eigentlich so genial, wie auch einfach. Selenium rendert in die Webseiten, die es aufruft zusätzlichen JavaScript Code (deswegen muss auch immer ein externes Tool existieren: Selenium IDE bzw. Selenium RC). In diesem Code stehen die Anweisungen, die ausgeführt werden sollen. Der Browser arbeitet diese, wie jeden anderen JS Code auch, ab und gibt einem somit das Gefühl, ihn fern zu steuern.

Genial einfach, oder? Wir brauchen also keine Plugins im Browser, wir müssen nur dafür sorgen, dass irgendeine Instanz zwischen Browser und Webseite liegt, die ein wenig JavaScript Magie zaubert. Ganz so einfach ist natürlich nicht, aber für eine erste Abstraktion sollte die Erklärung hoffentlich reichen. Da es nicht im direkt im Browser laufen muss hat es übrigens auch den Vorteil, dass es mit die meisten gängigen Browsern kompatibel ist. Ihr könnte also einen Safari genau so testen, wie einen Firefox. IE geht natürlich auch.

Dem findigen Leser wird natürlich auch klar sein, warum ich diese etwas ausführlichere Einleitung gewählt habe. Selenium benutzt die JavaScript Fähigkeiten des Browsers. Es kann also alles, was JavaScript zur Verfügung stellt. Das ist eine ganze Menge. Ich kann Klicks erzeugen, ich kann eine Seite zurück gehen, ich kann den DOM Tree abfragen und verändert. Zusätzlich kann ich natürlich auch Ajax Requests feuern.

Viel mehr will man gar nicht. Zumindest nicht in der Domäne, in der wir uns gerade aufhalten: Funktionale Tests. Was können wir jetzt also machen, wenn wir unsere Tests betrachten. Wir können das Vorhandensein von Texten, Links, HTML Elementen prüfen. Sehr wichtig. Wir können alle JavaScript Events abfeuern, die wir auch als User feuern können. Kleines Beispiel: Wir haben einen Knopf, wenn ich per Maus da drauf drücke, dann holt sich der Browser per JavaScript per Ajax ein Div-Popup, dort kann ich mich dann anmelden. All das kann ich mit JavaScript automatisieren. Somit kann ich alle Klickpfade und (fast alle) Userstories automatisieren.

Was ich nicht kann, sind Dinge, die JavaScript nicht kann. Ich kann also nicht im Browser die Tabs wechseln, Message-Boxen wegklicken oder Einstellungen im Browser vornehmen (gibt natürlich noch mehr Dinge). Ok, ein paar von den Dingen muss man auch nicht können, aber gerade bei Message-Boxen kann es ab und zu nützlich sein. Zu PopUps zu wechseln oder sie zu schließen ist auch nicht ohne Probleme möglich.

Selenium kann also eine ganze Menge an Problemen lösen. Man sollte es aber mit Bedacht einsetzen, denn alles was man damit machen kann ist, dadurch dass es Browser läuft, relativ langsam und instabil. So ein Zufall. Mein nächster Beitrag von Selenium wird ja sein, was sollte man testen? Denn nur weil ich etwas testen kann, ist es nicht sinnvoll.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

5 Comments

  1. „Zu PopUps zu wechseln oder sie zu schließen ist auch nicht ohne Probleme möglich.“

    Was genau meinst du damit? Neue Fenster, die mit „window.open“ oder ähnlichem geöffnet wurden, sollte man doch schliessen können (window.close)?
    Oder meinst du alert-Boxen?

    Reply
  2. Super Sache! Ich hoffe es folgen eine ganze Serie von Selenium-Beiträgen.

    Achja, das ist nach Monaten passivem Lesens übrigens mein erstes Kommentar. Asche über mein Haupt 😉

    Reply
  3. @PHPGangsta: Ja das geht, da hast du recht. Eigene PopUps sind machbar. Selenium zeichnet solche Dinge aber leider nicht über die IDE auf. Einfaches „Click & Play“ klappt da also nicht. Deswegen hatte ich geschrieben „nicht so einfach“.

    @Sebastian: Dann doch trotzdem mal ein herzliches Willkommen. Weiter so. *Asche wegmach*

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen