Category: Qualitätssicherung

Automatisch Web-Anwendungen testen: Watir vs. Selenium

Web Anwendungen werden immer komplexer und jeder der einmal eine Anwendung, egal ob Desktop oder Web testen mußte, kennt sicherlich den Verfall der eigenen Motivation, wenn man zum dritten, fünften oder zehntenmal das Selbe machen muss. Daher gibt es für sowas Test-Automaten, in denen man vorher Testfälle bzw. Klickpfade definieren kann, welche dann abgearbeitet werden. Nach meinen Google Recherchen würde ich sagen Watir (gesprochen Water) und Selenium sind die wahrscheinlich bekanntesten Vertreter.

Von Watir (www.watir.com) habe ich erst vor ca. einem Monat durch Google erfahren, Selenium (seleniumhq.org) kenne ich dagegen schon seit über zwei Jahren, hatte aber nie wirklich Zeit es mal auszuprobieren. Im Rahmen der Qualitätssicherung in der Firma habe ich mich nochmal mit beiden Anwendungen beschäftigt und mich, um es kurz zu machen, für Selenium entschieden.

Nachfolgend die Gründe für meine Entscheidung, bitte korrigiert mich, falls ihr einen Fehler finden solltet:

  • Selenium bietet eine Firefox Erweiterung mit welcher Testfälle ohne Programmierkenntnisse aufgezeichnet und in verschiedene Programmiersprachen exportiert werden können
  • Der Selenium-Server versteht sowohl Java, als auch PHP und Perl und einige weitere (http://seleniumhq.org/about/platforms.html#programming-languages), somit passt sich das Framework der Umgebung an

Auf der Watir Homepage ist eine wirkliche eindrucksvolle Sammlung von Unternehmen-Logos zu sehen, die es angeblich einsetzen, sogar Facebook gehört dazu. Für den Einstieg, denke ich, ist aber Selenium die richtige Wahl, weil man nicht erstmal Ruby lernen muß, außer die eigene Anwendung läuft natürlich bereits in Ruby, welches zwingend für Watir erforderlich ist.

Error 404, 500, etc. automatisch finden

Gerade bei größeren Webseiten, mit unterschiedlichen Plugins und Erweiterung, kann es vorkommen das einzelne Seiten nicht aufrufbar sind. Die Gründe dafür sind noch vielfälter als die zur Verfügung stehenden Status-Codes. In den Google Webmaster Sitemap Tools befindet sich unter der Kategorie Crawling Fehler folgende Einteilung:

  • Nicht gefunden
  • Nicht aufgerufene URLs
  • URLs durch “robots.txt” eingeschränkt
  • Zeitüberschreitung beim Aufrufen von URLs.
  • HTTP-Fehler
  • Nicht erreichbare URLs
  • Soft- 404-Fehler

Zu beachten ist dabei, das Google nicht nur die Verlinkung innerhalb der Seite überprüft, sondern auch Links von extern, welche Möglicherweise auf nicht mehr gültige URLs zeigen. Dafür eignet sich die anschließend vorgestellte Analyse Methode nicht. Im folgenden geht es ausschließlich um Links welche Innerhalb der Seite keinen 200 Code, OK bzw. Erfolgreich, zurückgeben.

Sehr anschaulich ist die Firefox Erweiterung LinkChecker, welche unter https://addons.mozilla.org/de/firefox/addon/linkchecker/ heruntergeladen werden kann.

Link Checker Ergebnis

Link Checker Ergebnis

Diese stellt in Ampelfarben, welche auch entsprechend konfiguriert werden können, die Erreichbarkeit von Links auf der jeweiligen Seite dar. In der Statusleiste gibt es zudem eine Anzeige, welche die Gesamtanzahl der Links, sowie die Anzahl der geprüften und den Fortschritt anzeigt:

Linker Checker Progress Bar

Linker Checker Progress Bar

Für größere Webseiten, welche über viele verschiedene Seiten und Kategorie verfügen, ist die händische Überprüfung mittels Firefox Plugin sicherlich nicht praktikabel. Dafür eignet sich wget. wGet ist ein kleines Kommandozeilen Tool, welches vielfältig einsetzbar ist. Für unseren Anwendungsfall benötigen wir die Spider Funktionalität:

[html]
wget -r –spider -o log.txt http://www.bugblog.de
[/html]

Wget verfolgt (-r rekursiv) alle Links innerhalb der selben Domain und läd die Dateien zum finden weiterer Links temporär (–spider) herunter. Das Ergebnis beim Aufrufen der Dateien (-o output) wird in der log.txt Datei gespeichert. Diese kann später nach den oben beschriebenen Statuscodes durchsucht werden.

Eine ausführliche Auflistung, aller möglichen Status Codes befindet sich unter: http://www.google.com/support/webmasters/bin/answer.py?answer=40132