Im ersten Teil der Serie zum Thema Teststrategien wurde darauf eingegangen, welche Funktionen sich effektiv automatisiert testen lassen. In diesem Artikel soll diskutiert werden, welcher Zeitpunkt sich besonders gut zum Programmieren der Modultests eignet.
Das Ziel der vorgestellten Teststrategien ist eine optimale Integration in den bestehenden Entwicklungsprozess. Zu diesem Zweck werden die folgenden Themen behandelt:
- Was kann effektiv mit Modultests getestet werden? (Testobjekte)
- Wann sollten Tests erstellt werden? (Testzeitpunkt)
- Wie können komplexere Funktionen getestet werden? (Testumgebung)
Testzeitpunkt
Soll die Testerstellung in den eigenen Entwicklungsprozess integriert werden, dann stellt sich die Frage nach dem geeigneten Zeitpunkt. Es macht betriebswirtschaftlich gesehen wenig Sinn, den Entwicklungsprozess für ein paar Wochen oder gar Monate zu stoppen und für alle vorhandenen Funktionen Testfälle zu programmieren.
Bei der Implementierung von neuen Funktionalitäten lässt sich allerdings gut ein Einstieg für automatisierte Modultests finden. Die neu erstellten Funktionen müssen ohnehin getestet werden und meist erstellt der Programmierer zu diesem Zweck auch bereits kleine Testfunktionen. Diese Testfunktionen verschwinden allerdings mit der Zeit, da sie selten an einem zentralen Ort gespeichert werden. Was spricht dagegen, diese Tests so anzusetzen, dass sie auch nach dem Entwicklungszeitpunkt ausgeführt werden können? Durch die zentrale Verwaltung in C16Unit stehen die Testfunktionen jederzeit zur Verfügung und lassen sich nach jeder Änderung des Quelltextes durchführen.
Die Erstellung der Tests kann prinzipiell vor, während oder nach dem Entwickeln der eigentlichen Funktionalität vorgenommen werden. Der erste Fall wird auch als „Test-driven development“ bezeichnet, da das erwartete Verhalten zuerst durch die Tests spezifiziert und erst anschließend von der Funktion realisiert wird. Dies hat den Vorteil, dass die Benutzbarkeit der neuen Funktion im Fokus bleibt. In jedem Fall wird durch die zeitnahe Testerstellung die Modularität des Quelltextes verbessert, weil dabei klare Schnittstellen gefördert werden. Dies kommt auch der Wartbarkeit und Wiederverwendbarkeit der Module zugute.
Ein weiterer Fall, der zur Erstellung von Modultests antreiben kann, sind Fehler. Wird in einem Modul ein Fehlverhalten festgestellt, so kann dieser nach Möglichkeit über einen automatisierten Test reproduziert werden. Der Vorteil liegt auf der Hand: Nach einer Fehlerkorrektur kann automatisiert geprüft werden, ob sie den gewünschten Effekt hatte. Außerdem wird sichergestellt, dass derselbe Fehler sich nicht nach einiger Zeit erneut einschleichen kann.
Ausblick
Im folgenden letzten Teil der Serie soll das Thema “Testumgebung” behandelt werden. Hierbei steht das Testen von komplexeren Funktionen im Mittelpunkt, die in üblichen CONZEPT 16-Anwendungen häufig anzutreffen sind.