Lx-Office Testumgebung Mit der hier beschriebenen Testumgebung ist es möglich, Lx Office automatisiert zu testen. Automatische Tests haben den großen Vorteil, das verschiedene Standardtests nicht immer wieder von Hand durchgespielt werden müssen, sondern einmal in einem Skript verschriftet immer wieder verwendet werden können. Weitere Informationen können im Wiki nachgelesen und ergänzt werden: http://wiki.lx-system.de/index.php/Automatisiertes_Testen_von_Modulen Aufbau der Testumgebung Im Verzeichnis t/ finden sich alle testrelevanten Skripte.Der Aufruf der Tests folgt über #perl t/lx-office.t lx-office.t ruft alle Einzeltests der Reihe nach auf und fasst sie übersichtlich zusammen. Die Einzeltests befinden sich in einem Unterordner von t/. Jeder Unterorder enthält eine Datei AllTests.t, die wiederrum alle einzelnen Tests des Unterordners aufruft. t/lxtest.conf t/lxtest.conf.default Für die einzelnen Tests werden verschiedene Packetvariablen (globals) zur Verfügung gestellt, um die Testskripte einfach auf unterschiedliche Installationen anpassen zu können und um sich auf die selbe Test-Datenbank und denselben Test-Benutzer beziehen zu können. Die Datei t/lxtest.conf.default muss zunächst nach t/lxtest.conf kopiert werden. Dann ist die Datei t/lxtest.conf auf die lokalen Gegebenheiten anzupassen. Besnders die für Selenium nötigen Einstellungen bedürfen einer Überarbeitung. Definiert werden die Variablen in der Datei t/lxtest.conf. Aufgerufen werden die Variablen $lxtest->{VARIABLE}. Es ist ratsam, die vorhandenen Tests zu untersuchen, um sich ein Bild von den Möglichkeiten zu machen. Selenium Selenium ist eine Testsuite, mit der man Browserinteraktionen simulieren und die Ergebnisse auswerten kann. Der unschlagbare Vorteil von Selenium für das Testen von Lx ist es, dass es möglich wird, eine Test-Datenbank in einfachen Schritten erstellen zu können. Um Seleniumtests durchführen zu können, ist es nötig, das Packet Selenium Remote Control (Selenium RC) lokal zu installieren (Java Runtime ebenfalls erforderlich). Selenium RC gibt es unter: http://www.openqa.org/selenium-rc/ Für den Betrieb von Selenium ist eine lokale Workstation mit Browserumgebung nötig. Der Aufruf von selenium erfolgt unter Windows bspw. so: C:\java -jar "C:\selenium-remote-control-0.9.0 \server\selenium-server.jar" Unter Linux bspw. so: Die lokalen Einstellungen sind unbedingt in der t/lxtest.conf nachzutragen! Weitere Infos unter http://www.openqa.org/selenium-rc/ Dann reicht ein Start von #perl t/lx-office.t um dem Testskript bei der Arbeit zuzuschauen. Leider ist es nötig, auf dem Seleniumserver nach jedem Aufruf des Testskripts das Sicherheitszertifikat von LINET Services zu akzeptieren, was etwas nervig ist. t/selenium/ Der Ordner selenium beinhaltet alle einzelnen selenium Testskripte. Aufgerufen werden die Skripte über t/selenium/AllTests.t . Neue Tests müssen in dieser Datei angemeldet werden. Ziel ist es eine Demodatenbank von Lx mit Daten zu füllen und die Abhängigkeiten untereinander zu prüfen. Dazu sind die individuellen Testskripte nummeriert (001NAME.t bis 999NAME.t) um sie der Reihe nach abzuarbeiten. Die folgenden Skripte sind bereits installiert: 001CreateTestDatabase.t Erzeugt eine neue Testdatenbank 002CreateTestUser.t Erzeugt einen neuen Testbenutzer ... ... 998DeleteTestUser.t Löscht den Testbenutzer 999DeleteTestDatabase.t Löscht die Testdatenbank Dazwischen befinden sich die Skripte, um eine Demodatenbank aufzubauen und zu prüfen. t/backend/ In diesem Ordner befinden sich Backend Testskripte. t/frontend/ In diesem Ordner befinden sich Frontend Testskripte, die nicht unter selenium getestet werden. Was wenn ein Test fehlschlägt? Das Fehlschlagen von Tests kann verschiedene Gründe haben. 1. Der Test selbst ist fehlerhaft. 2. Es haben sich Lx Screens verändert, so das der Test von falschen Voraussetzungen ausgeht 3. Die zu testende Funktion ist fehlerhaft Nachdem 1. und 2. ausgeschlossen wurden, sollte zu 3. ein Bugreport angelegt werden. Bugreports unter https://lx-office.linet-services.de/bugzilla/ anlegen. Eigene Tests Eigene testskripte können einfach in die Testumgebung eingebunden werden. Die vorhandenen Skripte können als Anleitung dienen. Bei Selenium Tests ist es am leichtesten, mit Firefox und der Selenium IDE Extension Testpfade einfach aufzuzeichnen. ( http://www.openqa.org/selenium-ide/ ) Dann werden die Selenium IDE Testaufzeichnungen in Perl umgewandelt und angepasst. Fertige Skripte werden mit einer laufenden Nummer versehen und in den Ordner t/selenium/ kopiert. Dann wird das Skript in der Datei t/selenium/AllTests.t eingefügt. Ein erster Probelauf mit #perl t/selenium/AllTests.t sollte den Test absolvieren. (Dabei kann es nötig sein, andere Tests auszukommentieren, weil selenium Tests mitunter lange Laufzeiten haben können, oder weil die Demodatenbank und der Benutzer am Ende zu Debugging Zwecken nicht gelöscht werden sollen.)