Was wir Testen

By Gerald Mücke | October 27, 2015

Was wir Testen

Die Disiziplin des Testens hat in den letzten Jahren durch Agile Entwicklung und Automation ein Revival erlebt. Zwar gibts es nach wie vor noch manuelle Tests, insbesondere Smoke Tests und Usability Tests, doch der überwiegende Teil der Tests, allen voran Unit Tests, wird heutzutage automatisert ausgeführt. Ein Grossteil dessen, was wir testen, sind Funktionen oder Features. Diese Funktionen und Features überführen bestimmte Eingabeparameter in ein beobachtbares Resultat.

Diese Eingabeparameter setzen sich aus bis zu drei Komponenten zusammen: - Direkt Eingabewerte I. Dies sind Parameter die durch Wert- oder Referenzübergabe direkt an eine Funktion übergeben werden. - Lokaler Zustand S. Dies ist die Menge aller Werte und Objekte und deren Zustände einer zu testenden Einheit, wie zum Beispiel Instanzvariablen einer Klasse. - Globaler Zustand E. Dies ist die Menger aller Werte, Objekte und Zustände der Umgebung, JVM (z.B. System Properties), Betriebssystem (z.B. Umgebungsvariablen, Dateisystem), aber auch alle Umsysteme wie z.B. WebServices oder Datenbanken und deren Inhalt.

Das beobachtbare Ergebnis kann aus vier Komponenten bestehen: - Veränderte Eingabewerte I', wenn z.B. Objekte als Referenzen übergeben wurden, aber auch Aufrufe von Callbacks oder Lambdas. - Rückgabewerte O, z.B. das Ergebnis einer Berechnung, oder auch ein neues Objekt. - Veränderter Lokaler Zustand S' der zu testenden Einheit, z.B. beim Aufruf eines Setters. - Veränderter Globaler Zustand E', wenn Änderung an der Umgebung stattgefunden haben, z.B. Statische Variablen, System Properties, Dateien im Dateisystem, Änderungen in der Datenhaltung.

Eine Funktion F ist die Abbildung der Eingabewerte G auf das beobachtbare Ergebnis T

F: {I, S, E} -> {I‘, O, S‘, E‘}

und genau diese Abbildung wollen wir testen. Dabei interessiert uns jedoch nicht, wie wir von G nach T kommen, sondern ob wir von G nach T kommen, wenn ein bestimmtes Ereignis - der Aufruf der Funktion F - eintritt.

Beim Schreiben von Tests sollte also besonderes Augenmerk drauf gelegt werden, wie wir den Ausgangszustand erzeugen und welches beobachtbare Resultat, wir erwarten und wie wir dieses definieren.

comments powered by Disqus