Testsuite im Unit Test erstellen

Im Unit Test werden alle Funktionen auf ihre logische Funktionalität getestet. Das bedeutet für jeden Parameter alle möglichen Varianten zu prüfen, wie es dem Blackbox Testen entspricht. Das geht dann allerdings in astronomische Größenordnungen für die Laufzeit der Tests. Für einen 16 bit Integer Parameter sind das 65535 Varianten. Bei mehreren Parametern multipliziert sich das noch, weil jede Kombination aus allen Parametern getestet werden müsste. Das ergibt dann Laufzeiten, die selbst bei schnellsten Rechnern immer noch viel zu lang werden. Ist also mehr etwas für Sonderfälle.

Also muss die Anzahl der Tests begrenzt werden!

Es bieten sich direkt an: Äquivalenzklassen zu bilden und Grenzwerte zu überprüfen. Damit sind wir beim Whitebox Testen angekommen. Das ist für den Unit Test ausreichend, da ich ohnehin nach Vorgaben eine Funktion entwickle und damit nur auf deren Einhaltung Testen muss.
Ich nehme also alle Werte innerhalb eines Wertefensters als eine Äquivalenzklasse und nehme einen oder vielleicht zwei Werte daraus für meinen Test. Jedes Fenster hat Ränder, also Grenzwerte. Auch dafür schreibe ich jeweils einen Test. Für alle Werte außerhalb des Fensters ohne die Grenzwerte gilt dann eine andere Äquivalenzklasse und wie vorhin nehme ich auch daraus einen oder zwei Werte für den Test. Damit habe ich dann eine Handvoll Tests für eine Funktion. Die Anzahl hängt natürlich von der Komplexität der zu testenden Funktion ab. Je mehr Parameter, Fenster und Grenzwerte vorhanden, desto mehr Tests werden gebraucht.

Eine Testsuite besteht nun aus Gruppen von Funktionstests aller Funktionen die Zusammengehören, wie z.B. alle Funktionen innerhalb eines C Files.
Die ganze Prozedur erscheint etwas Aufwendig. Es hilft aber sehr bei der Entwicklung einen ungewollten Seiteneffekt sofort zu entdecken.

Links und Literaturhinweise dazu:

Bill Hamilton
– NUnit Pocket Reference

David Bush
– NUnit 3.0 with Visual Studio 2015

http;//nunit.org

http://cppunit.sourceforge.net/doc/cvs/cppunit_cookbook.html

http://sourceforge.net/projects/cppunit/

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.