Direkt zum Inhalt
Axel Roth

Funktionstests - Einleitung

In größeren Softwareprojekten wächst der Funktionsumfang und damit die Codebasis ständig. Mitunter sind Applikationen so umfangreich, dass es manuell nicht mehr möglich ist alle bestehenden Funktionen intensiv zu testen. Dies ist allerdings unbedingt nötig um sicherzustellen, dass nach Featurupdates, Sichereitsupdates, oder dem Einspielen von Patches und Hot-Fixes noch alles funktioniert. Gerade geschäftskritische Funktionen wie Bezahlanbindungen, oder allgemein Shop-Lösungen müssen immer funktionieren. Bei OpenSource-Software wie Drupal können Updates sehr häufig nötig sein. Automatisierte Funktions-Tests sind hier unbedingt anzustreben.

Funktionstest überprüfen Webentwicklungen auf Erwartungswerte aus Nutzersicht. Es werden also Fragen geklärt wie:

  • Funktioniert das Rechtemodell noch zuverlässig
  • Finden Formular-Validierungen zuverlässig statt?
  • Funktioniert die PayPal-Anbindung nach dem Update noch?
  • Funktionieren alle Warenkorbfunktionen?
  • [...]

In Shopsystemen müssen oftmals eine Vielzahl von Bestellarten und Zusatzfunktionen wie Coupons oder Gutscheine, Abos, Kündigungen, verschiedene Payment-Anbieter, etc. getestet werden. Zusätzlich zur Funktionsfülle gibt es die Herausforderung, dass die Funktionstests in unterschiedlichen Browsern durchgeführt werden müssen. Viele Agenturen scheuen diesen Aufwand. Dadurch schleichen sich über die Zeit Fehler ein und die meisten werden erst entdeckt wenn ein Kunde Feedback gibt.

Selenium IDE + Selenium RC + Bromine

Auf der Suche nach einer Testumgebung für Webanwendungen sind wir auf das Open Source-Projekt Selenium gestoßen. Selenium hat eine IDE als Addon zu Mozillas Firefox. Hiermit kann Nutzerverhalten auf einer Webseite simuliert werden. Die Selenium IDE wiederum kann durch Plugins erweitert werden. Dazu gehört zum Beispiel das "Flow-Control"-Plugin mit dem man Schleifen und Bedingungen einbauen kann.

Test bestehen aus TestCases und Testsuites. Eine Testsuite kann mehrere Testcases enthalten. Testcases enthalten einzelne Operationen. Eine Operation kann zum Beispiel das Klicken auf einen Link sein.

Mit der IDE kann man Operationen ähnlich einem Makro aufnehmen, testen, abändern, speichern und exportieren. Dies funktioniert mit Drupal sehr gut, da einzelne Formular-Felder eindeutig ansteuerbar sind. Selenium unterstützt dabei unterschiedliche Formate. Wird nur die IDE verwendet reicht dabei HTML aus. Möchte man die Tests erweitern, kann man die Tests z.B. nach PHP zu exportieren und als RC-Test abspielen.

Die Selenium IDE testet die Applikationen direkt im Firefox. Natürlich möchte man auch die anderen Browser und davon alle Varianten und Derivate durchtesten.

Dafür bietet sich Bromine an. Bromine ist eine Webapplikation mit der Browser ferngesteuert werden können. Wir setzen Bromine ein, um Testsuites zu organisieren, zu verwalten und um die Tests dann über Nacht auf verschiedenen Maschinen laufen zu lassen.

Links: