Tests

Allgemeines

Zur Gewährleistung einer Mindestqualität sind mit dem aktuellen Code-Stand je nach Entwicklungsstufe die nachfolgenden Tests durchzuführen. Voraussetzung für die Tests ist die Integration des JAI-Moduls in die Testumgebung, um auch Fehler im Bildbetrachter (ImageViewer) zu erkennen. Es wird vorausgesetzt, dass im Testsystem der vollständige aktuelle Codestand vorliegt. Nach jedem Arbeitsschritt ist zu prüfen, ob dieser erfolgreich und vollständig abgearbeitet wurde. Zur Kontrolle sollte der Log-Level auf DEBUG geschaltet werden und jede Kommandoausgabe in eine Datei geschrieben werden.

Stufe 0 - Commit während einer Komponentenentwicklung

  • Neues compilieren der MyCoRe-Kern Quellen mit vorherigem Löschen der alten Daten durch 'ant clean jar'.
  • Neues Compilieren der DocPortal Quellen durch 'ant jar'.

Stufe 1 – Bugfix

  • Test der Stufe 0 durchführen
  • Gefixte Komponenten und alle ggf. mit betroffenen Teile individuell testen.

Stufe 2 - Komponente ist fertig entwickelt

  • Test der Stufe 0 durchführen
  • Vollständige Neuinstallation der DocPortal-Anwendung bis zur Betriebsbereitschaft mit vorherigem Löschen der alten Daten durch 'ant clean clean.data'. Dazu sind die folgenden Schritte auszuführen:
    • Anlegen der Verzeichnisse mit 'ant create.directories'.
    • Erzeugen der XML-Schemas mit 'ant create.schema'.
    • Neues compilieren der DocPortal Quellen durch 'ant jar'.
    • Erzeugen der CLI-Scripts mit 'ant create.scripts'
    • Starten der HSQLDB mit 'build/bin/hsqldbstart.sh' bzw. 'build\bin\hsqldbstart'.
    • Test der Verbindung zur HSQLDB mit 'build/bin/hsqldbadmin.sh' bzw. 'build\bin\hsqldbadmin' (Server - localhost:8298).
    • Start des CLI mit 'build/bin/mycore.sh' bzw. 'build\bin\mycore'. Prüfen mit 'help' ob alle CLI-Teile geladen wurden (z. B. Image-Kommandos).
    • Laden der Standard-User mit 'ant create.users' (testet 'load permissions data from file ...', 'init superuser', 'change to user ...', 'create group data from file ...', 'create user data from file ...' und 'check user data consistency').
    • Start des CLI mit 'build/bin/mycore.sh' bzw. 'build\bin\mycore'. Prüfen mit 'list all users' und 'list all groups' ob alle User-System-Teile vollständig geladen wurden.
    • Laden der Klassifikationen mit 'ant create.class' (testet 'update all classifications from directory ...').
    • Test der korrekten Installation der Klassifikationen mittels select -Statement über das hsqladmin-Tool.
    • Erzeugen des Applet-Keys mit 'ant create.genkeys'.
    • Erzeugen der Web-Applikation mit 'ant webapps'.
    • Starten der Anwendung mit 'build/bin/jettystart.sh' bzw. 'build\bin\jettystart'.
    • Aufruf von statischen Seiten, einer Suchmaske, einer Klassifikationsauswahl und dem Benutzerwechsel (wechseln zu author1A).
  • Laden und Testen der Standardbeispieldaten in die Anwendung. Diese stehen in der gesonderten MyCoRe-Komponente Content. Dazu sind die folgenden Schritte auszuführen:
    • Stoppen der Anwendung mit 'build/bin/jettystop.sh' bzw. 'build\bin\jettystop'.
    • Laden der Institutionen mit 'ant load.institution' in content/defaultsample (testet 'update object from file ...').
    • Laden der Autoren mit 'ant load.author' in content/defaultsample (testet 'update object from file ...').
    • Laden der Dokumente mit 'ant load.document' in content/defaultsample (testet 'update object from file ...').
    • Laden der Objekte mit 'ant load.derivate' in content/defaultsample (testet 'update derivate from file ...').
    • Starten der Anwendung mit 'build/bin/jettystart.sh' bzw. 'build\bin\jettystart'.
    • Test der Anwendung im Browser: Aufruf der Suche, Navigation in der Trefferliste, Anzeige von Einzeltreffern und Detaillisten. Suche nach Volltexten und Anzeige von Bildern mit dem ImageViewer. Navigation in Klassifikationen.
    • Stoppen der Anwendung mit 'build/bin/jettystop.sh' bzw. 'build\bin\jettystop'.
    • Test der Datensicherung mit 'build/bin/Save.sh' bzw 'build\bin\Save'. Prüfen der gespeicherten Daten im Verzeichnis save inklusive der korrekten ACLs (testet 'export object ... to directory ... with ...', 'export derivate ... to directory ... with ...', 'export all classifications to ... with ...', 'export all groups to file ...', 'export all users to file ...' und 'export all permissions to file ...'.
  • Intensiver Test der neuen Komponenten.
  • Dokumentation der Komponente auf Vollständigkeit prüfen

Stufe 3 - Release oder Snapshot

Die Tests sind für Unix/Linux und Windows durchzuführen!

  • Test der Stufe 1 durchführen
  • Test des Commandline Interfaces
  • Test der Web-Anwendung
  • Test des WCMS
  • Test sonstiger Funktionen

Test des Commandline Interfaces

  • Tests des CLI (Nutzerverwaltung)
    • Start des CLI mit 'build/bin/mycore.sh' bzw. 'build\bin\mycore'.
    • Login mit 'login administrator'.
    • Sichern des Users author1A mit 'export user author1A to file author1A.xml'.
    • Sichern des Users author1B mit 'export user author1B to file author1B.xml'.
    • Sichern der Gruppe authorgroup1 mit 'export group authorgroup1 to file authorgroup1.xml'.
    • Löschen einer Gruppe mit 'delete group authorgroup1'. Das Kommando darf NICHT funktionieren!
    • Löschen eines Nutzers mit 'delete user author1A'.
    • Löschen eines Nutzers mit 'delete user author1B'.
    • Löschen einer Gruppe mit 'delete group authorgroup1'. Das Kommando muss jetzt funktionieren!
    • Import der Gruppe authorgroup1 mit 'import group data from file authorgroup1.xml'.
    • Import des Nutzers author1A mit 'import user data from file author1A.xml'.
    • Import des Nutzers author1B mit 'import user data from file author1B.xml'.
    • Test des Datenbestandes mit 'list all users' und 'list all groups'.
    • Beenden des CLI mit 'quit'.
  • Tests des CLI (Klassifikationsverwaltung)
    • Start des CLI mit 'build/bin/mycore.sh' bzw. 'build\bin\mycore'.
    • Sichern einer Klassifikation (ohne aktive Verweise) mit 'export classification DocPortal_class_00000009 to . with save'
    • Löschen einer referenzierten Klassifikation mit 'delete classification DocPortal_class_00000006'. Das Kommando darf NICHT funktionieren!
    • Löschen einer nicht referenzierten Klassifikation mit 'delete classification DocPortal_class_00000009'. Das Kommando muss funktionieren!
    • Laden der gespeicherten Klassifikation mit 'load classification from file DocPortal_class_00000009.xml'.
    • Update der gespeicherten Klassifikation mit 'update classification from file DocPortal_class_00000009.xml'.
    • Beenden des CLI mit 'quit'.
  • Tests des CLI (Rechteverwaltung)
    • Start des CLI mit 'build/bin/mycore.sh' bzw. 'build\bin\mycore'.
    • Auflisten aller Permissions mit 'list all permissions'.
    • Export aller Permissions mit 'export all permissions to file permission.xml' und prüfen der Ausgabe.
    • [ToDo – 2007-08-29 – Jena ] Test der 'update permission'-Kommandos beschreiben
    • Beenden des CLI mit 'quit'.
  • Tests des CLI (Objekte und Derivate)
    • Start des CLI mit 'build/bin/mycore.sh' bzw. 'build\bin\mycore'.
    • Anzeige der letzten verwendeten MCRObjectID mit 'get last ID for base DocPortal_document'. Es wird 'DocPortal_document_07910403' ausgegeben.
    • Anzeige der nächsten MCRObjectID mit 'get next ID for base DocPortal_document'. Es wird 'DocPortal_document_07910404' ausgegeben.
    • Reparieren der Indizes aller Dokumente mit 'repair metadata search of type document'.
    • Reparieren des Dokuments DocPortal_document_07910403 mit 'repair metadata search of ID DocPortal_document_07910403'.
    • Reparieren des Derivate DocPortal_derivate_00410903 mit 'repair derivate search of ID DocPortal_derivate_00410903'
    • Löschen des Derivates DocPortal_derivate_00410902 mit 'delete derivate DocPortal_derivate_00410902'.
    • Löschen des Objektes DocPortal_document_00410902 mit 'delete object DocPortal_document_00410902'.
    • Löschen des Objektes DocPortal_document_00410901 mit 'delete object DocPortal_document_00410901' (ohne vorherigem Löschen des Derivates).
    • Prüfen der relevanten HSQLDB-Tabellen und des Lucene-Eintrages.
    • Beenden des CLI mit 'quit'.

Test der Web-Anwendung

  • Starten der Anwendung mit 'build/bin/jettystart.sh' bzw. 'build\bin\jettystart'.
  • Tests der Web-Anwendung (statische Seiten)
    • Es sind alle Seiten der sitemap.xml Anzeige durchzutesten.
  • Tests der Web-Anwendung (Suche/Präsentation/Navigation)
    • Suche nach Institutionen
    • Suche nach Personen, weiter Suchen nach verlinkten Dokumenten
    • Suche nach Dokumenten ohne Parameter und Navigation in der Trefferliste. Navigation aus der Anzeige heraus zur Trefferliste und zur Detailansicht. Anzeige von Dokumenten mit Bildern (bei integriertem ImageViewer).
    • Suche nach Dokumenten mit Parametern und Volltextsuchbegriffen, z. B. 'Hühnerstall', 'Huhn*', usw.
    • Test der Zugriffsrechte auf Objekte mit Wechsel der User (z. B. Suche nach 'Umbau').
    • Navigation über den Personenindex und von dort zu Dokumenten (z. B. Trappe).
    • Navigation in den Klassifikationen (z. B. Herkunft, Format).
  • Tests der Web-Anwendung (Editor-Funktionen)
    • Login als User 'author1A'.
    • Neuanlegen einer Institution, Bearbeiten der Daten im Workflow, Löschen der Institution aus dem Workflow.
    • Neuanlegen einer Institution, ändern der ACLs (mehrer Versionen durchspielen), Hochladen der Institution, Bearbeiten der Daten, Suchen nach den Daten und Löschen der Daten aus dem Server.
    • Neuanlegen einer Person, Bearbeiten der Daten im Workflow, Löschen der Institution aus dem Workflow.
    • Neuanlegen einer Person, ändern der ACLs (mehrer Versionen durchspielen), Hochladen der Person, Bearbeiten der Daten, Suchen und Navigieren nach den Daten, Setzen der ACL-Permission 'deletedb' für 'author1A' und Löschen der Daten aus dem Server.
    • Neuanlegen eines Dokuments (mit Link auf einen Personendatensatz), Bearbeiten der Daten im Workflow, Hinzufügen eines Derivates, Hinzufügen einer Datei zum Derivate, Umbenennen des Derivates und Löschen des Dokuments aus dem Workflow.
    • Neuanlegen eines Dokuments (mit Link auf einen Personendatensatz), Hochladen des Dokuments, Bearbeiten der Daten, Hinzufügen eines Derivates, Hinzufügen einer Datei zum Derivate, Umbenennen des Derivates, Löschen einer Datei aus dem Derivate und Löschen des Dokuments aus dem Server.
    • Logout als 'gast'
  • Tests der Web-Anwendung (Klassifikationseditor)
    • Login als User 'administrator'.
    • Auswahl Menüpunkt Klassifikationseditor starten.
    • Neue Klassifikation erstellen (ID DocPortal_class_00000100), Klassifikation speichern, Klassifikationsbeschreibung ändern, zwei neue Kategorien hinzufügen, Reihenfolge tauschen, Kategorie editieren, 'empty' Kategorie löschen, Klassifikation speichern, exportieren und wieder löschen.
    • Logout als 'gast'.
    • Navigation in den Klassifikationen.
  • Tests der Web-Anwendung (Nutzerverwaltung)
    • Aufruf Startseite, Aufruf Login als anderer User, 'Abbrechen', Aufruf Login als anderer User, Login als User 'administrator', Rückkehr zur Anwendung, Benutzer wechseln -> 'Abbrechen', Benutzer abmelden.
    • Login als User 'administrator' und Rückkehr zur Anwendung.
    • Passwort ändern und 'Abbrechen' drücken.
    • Passwort ändern und 'Ändern' drücken. Login mit dem neuen Passwort.
    • Benutzerdaten anzeigen lassen.
    • Neue Gruppe 'test' anlegen, Gruppe administrieren und 2 Benutzer 'test' zuweisen. Neuen Benutzer 'otto' für die Gruppe 'test' anlegen.
    • Logout als 'gast'.
  • Tests der Web-Anwendung (ACL-Editor)
    • Login als User 'administrator'.
    • ACL-Editor starten, nach MCRObjectID DocPortal_author_00410901 filtern, 'writedb' auf 'SYSTEMRULE000000006' setzen, OK, Logout als 'gast', Suche nach Person 'Kupferschmidt' – muss jetzt von 'gast' editierbar sein.
    • Login als User 'administrator'.
    • ACL-Editor starten, Rule-Editor aufrufen, 'SYSTEMRULE0000000002' um Gruppe 'test' erweitern, OK. Login as 'test' ant try to change sample data.
    • Logout als 'gast'.
  • Tests der Web-Anwendung (Broadcasting Modul)
    • Login als User 'administrator'
    • Module-Broadcasting Monitoring -> edit, 'Power' -> on, ' Message Header' und 'Message Tail' ausfüllen, 'Nachricht an Gruppe' -> admingroup -> ...text... , OK. Login als User 'administrator' (sollte Nachricht erhalten).
    • Module-Broadcasting Monitoring -> edit, 'Power' -> off
  • Tests der Web-Anwendung (WebCLI Module)
    • Starten des Web-Commandline-Interfaces
    • Auswählen von Kommandos wie 'list all users' und kritsches prüfen des Ergebnisses
    • Web-Commandline-Interfaces schließen
    • Login als gast und erneuter Versuch, das Tool zu starten (darf nicht gehen).
  • Stoppen der Anwendung mit 'build/bin/jettystop.sh' bzw. 'build\bin\jettystop'.

Test des WCMS

  • [ToDo – 2007-08-29 – Jena]

Test sonstiger Funktionen

  • Test Google-Servlet
  • Test OAI
    • [ToDo – 2007-09-25 - Rostock]
  • Test Z3950
    • [ToDo – 2007-09-25 - Rostock]
  • Test MyCoRe Remote Access
    • Starten der Anwendung mit 'build/bin/jettystart.sh' bzw. 'build\bin\jettystart'.
    • ant webservice.deploy
    • Suchmaske nach Dokumenten aufrufen, 'diesem und ausgewählten Servern' sowie 'Lokal via WebService' und 'DocPortal Sample Server' markieren und die Suche starten. Es müssen die Beispieldaten je dreimal als Treffer erscheinen. Navigation in den Treffern testen.
    • Stoppen der Anwendung mit 'build/bin/jettystop.sh' bzw. 'build\bin\jettystop'.
  • Test der Vererbung
    • [ToDo – 2007-09-25 - Leipzig]

Test der Distribution

Die Tests sind für Unix/Linux und Windows durchzuführen!

  • Test der Installation des Basispaketes
  • Test der Installation der Content-Pakete
  • Test gemäß Punkt 'Test der Web-Anwendung'
  • Test des Entfernens der Distribution

Selenium-Tests

Am einfachsten ist es wohl man macht einfach das was Jenkins auch macht,
ein Durchlauf via ant

ant -k download configure start.hsqldb load.data build.webapp
start.jetty selenium stop.jetty stop.hsqldb check

Das ant target "selenium" lässt die Tests gegen ein lokales Jetty
laufen. Die Tests liegen in docportal/test/selenium/ und sind an sich
einfache HTML-Seiten.

Die Testergebnisse sind wiederum HTML-Seiten

http://www.mycore.de/jenkins/job/DocPortal/seleniumhq/
bzw.
docportal/build/test/selenium-results.html

Damit selenium lokal läuft muss es in der Lage sein im
Hintergrund einen firefox zu starten.

Das hat z.B.
JAVA_OPTS=-Djava.awt.headless=true
erfordert, und die Installation von Xvfb, weil der Server kein X11
Display hat.

Das ist hier beschrieben, aber da steht eher zu viel

http://wiki.openqa.org/display/SRC/Selenium-RC+and+Continuous+Integration

Man sollte die Tests auch einfach laufen lassen können, wenn man das
Selenium-Plugin für Firefox installiert

http://seleniumhq.org/