Programmierung

Strategien zur Testerstellung (Teil 1)

In den vorhergehenden Artikeln über C16Unit wurde gezeigt, wie mit einfachen Mitteln automatisierbare Testfunktionen erstellt werden können. Im Folgenden möchte ich Strategien vorstellen, wie sich die Erstellung in bestehende Entwicklungsprozesse integrieren lässt.

Die beiden folgenden Fragen wurden bereits in den vergangenen Artikeln beantwortet:

Damit Modultests optimal in den eigenen Entwicklungsprozess integriert werden können, sollten außerdem die folgenden Fragen betrachtet werden:

  • Was kann effektiv mit Modultests getestet werden? (Testobjekte)
  • Wann sollten Tests erstellt werden? (Testzeitpunkt)
  • Wie können komplexere Funktionen getestet werden? (Testumgebung)

Testobjekte

Sehr gut testen lassen sich eigene Systemfunktionen, die eine gut definierte Schnittstelle haben. Im besten Fall werden der Funktion ein paar Werte als Parameter übergeben und die zurückgelieferten Rückgabewerte können auf Korrektheit überprüft werden. Dies trifft beispielsweise auf die Funktion „StringReplace“ aus dem letzten Artikel zu. Aber auch eine Exportfunktion, die bestimmte Daten in einem vorgegebenen Format exportiert (etwa als XML- oder JSON-Datei), eignet sich sehr gut für einen automatisierten Test.
Eine klar definierte Schnittstelle gibt es auch meist bei externen DLLs, die in CONZEPT 16 eingebunden werden können. Auch Abfragen über die Socket-Schnittstelle bzw. das HTTP-Objekt lassen sich relativ gut testen, wenn das Ergebnis in Textform verarbeitet werden kann. Eine Funktion, die die aktuellen Wechselkurse abfragt, lässt sich zum einen darauf testen, ob sie ohne Fehler abgearbeitet wird und zum anderen, ob die zurückgelieferten Kurse in einem zu erwartenden Bereich liegen.
Komplexe Selektionen, beispielsweise für Auswertungen, können ebenfalls automatisiert getestet werden. Es lässt sich dabei überprüfen, ob die selektierten Datensätze den Filterkriterien entsprechen, also keine Datensätze fehlen und keine falschen Datensätze enthalten sind.
Verarbeitungen, die von der Benutzeroberfläche abhängen, lassen sich meist nicht gut automatisiert testen. Es gibt allerdings Fälle, in denen die Erstellung von Modultests für die Oberfläche hilfreich ist. Sollen beispielsweise manche Einträge eines Kontextmenüs abhängig von den Rechten des Applikationsbenutzers ausgegraut werden, so kann zur Überprüfung ein Modultest programmiert werden. Dieser startet das gewünschte Fenster, öffnet prozedural das Kontextmenü und vergleicht die Eigenschaft wpDisabled der Menüeinträge mit den erwarteten Werten.
Generell sollte bei der Wahl der zu testenden Funktionen auch die zu erwartende Veränderlichkeit berücksichtigt werden: Eine Systemfunktion, die korrekt funktioniert und wahrscheinlich nie mehr angepasst wird, ist für einen Modultest weniger interessant wie eine DLL-Funktion von einem externen Lieferanten, die regelmäßig aktualisiert wird.

Ausblick

Im nächsten Teil der Serie soll das Thema “Testzeitpunkt” behandelt werden. Hierbei steht die Frage im Mittelpunkt, in welchem Schritt des Entwicklungsprozesses ein Einstieg in die Testerstellung sinnvoll ist.

Keine Kommentare

Kommentar abgeben