Automatische Softwaretests
Software, die nicht das tut, was sie tun soll, ist nutzlos. Eines der wichtigsten Kriterien für die Qualität von Software ist daher die Fehlerfreiheit. Eine bewährte Methode um Fehler in Software zu finden sind systematische Tests. Ein Ansatz der sich besonders gut für Freie Software eignet, sind automatische Tests, da für regelmässige und umfangreiche Manuelle Tests bei den meisten freien Projekten die Ressourcen fehlen. In den letzten Jahren sind diverse Variationen automatischer Tests unter den Schlagworten "Test Driven Development" oder "Unittests" insbesondere von Befürwortern des "Extreme Programming" bekannt gemacht worden. Die Idee, Tests zu automatisieren, ist zwar schon deutlich älter und wird in manchen freien Software Projekten schon seit Jahren eingesetzt, der Rummel um Extreme Progamming hat jedoch automatisierte Tests mehr Entwicklern bekannt gemacht und immmer mehr Projekte fangen an sie zu verwenden. Automatische Tests, sind, wenn sie richtig gehandhabt werden, aus mehreren Gründen interessant. Sie können praktisch auf Knopfdruck ausgeführt werden und der Entwickler kann das Resultat auf einen Blick beurteilen. Damit verschwindet die Mühsal von manuellen Tests. Die Tests können sehr einfach auch nach kleinen Änderungen durchgeführt werden, so daß Fehler oft sehr früh entdeckt werden. Änderungen an der Software, insbesondere Refactoring, werden dadurch erleichtert. Wenn man dann noch die Tests gleichzeitig mit der Software entwickelt -- "test a little, code a little" -- wird auch das Erstellen der Testsuite selbst recht einfach. Ausserdem wird die Software von vornherein so entworfen, daß automatische Tests einfach zu schreiben sind. Das führt in der Regel auch zu gut modularisiertem und wartbarem Code. Der Vortrag wird theoretische Aspekte von automatischen Tests vorstellen und ihre praktische Umsetzung bei Freier Software untersuchen und mit Beispielen erläutern. Im theoretischen Teil werden verschiedene Arten von Tests wie etwa Unittests, funktionale Tests oder Regressionstests vorgestellt und Wege besprochen, wie diese Test in den Entwicklungsprozess eingebunden werden können. Des weiteren werden einige Grenzen von automatisierten Tests aufgezeigt. Im praktischen Teil wird anhand von einigen Projekten, an denen der Vortragende selbst beteiligt ist, wie etwa dem Geodatenbetrachter Thuban und dem Vektorzeichenprogramm Skencil, demonstriert, wie man konkret Testfälle schreiben kann. Da sowohl Thuban als auch Skencil hauptsächlich in Python geschrieben sind ist dieser Teil im wesentlichen eine Einführung in das unittest Modul von Python.
Bernhard Herzog leitet die Softwareentwicklung bei der Intevation GmbH,
Osnabrück (intevation.de). Im Rahmen der Tätigkeit bei Intevation
entwickelt er den freien Geodatenbetrachter Thuban
(thuban.intevation.de). Nebenbei ist er Hauptentwickler des freien
Vektorzeichenprogramms Skencil (sketch.sourceforge.net). Von der
Ausbildung her ist er zwar eher Physiker, er hat sich aber schon zur
Schulzeit und während des Studiums viel mit Computerprogrammierung
beschäftigt und seine Diplomarbeit lag mit einem Thema aus der
medizinischen Bildverarbeitung im Überlappugnsbereich zwischen
theoretischer Physik und Informatik. In den letzten Jahren hat er
mehrere Vorträge auf dem LinuxTag und der EuroPython Konferenz gehalten.