Rouven: Modultests für Algorithmen

Beitrag lesen

Hello,

Es reicht nicht aus zu testen, ob ein Algorithmus eine Eingabe korrekt sortiert, es muss sehr genau differenziert werden. Ein Modul-Test für Bubblesort darf beispielsweise keinen Quicksort passieren lassen. Ein Modul-Test für Heapsort soll nur Heapsort akzeptieren, keinen BinaryTree-Sort. Bei Quicksort ist die Reihenfolge der Vergleiche und Vertauschungen nicht eindeutig, sie ist zum Beispiel abhängig von der Wahl des Pivot-Elements.

wow, das klingt nach einer Herausforderung. Damit scheiden ja traditionelle Unit-Test Verfahren schon fast aus, weil zu sehr Blackbox. Welche Anhaltspunkte stehen dir denn technisch zur Verfügung, darfst du die Implementierung manipulieren, per Code Injection, per direkter Source Manipulation, ...? Du wirst es ja schließlich nur dann schaffen, wenn du automatisiert das Verhalten des Algorithmus überwachen und damit bei Zwischenschritten bereits kontrollieren kannst. Das ganze klingt schon fast nach einer Erkennung des Algorithmusses und damit gar nicht mal leicht. Ist die Menge der Kandidaten bekannt, sprich weißt du auf welche/wieviele Sortierverfahren du prüfst?

MfG
Rouven

--
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
Don't worry about the future. Or worry, but know that worrying is as effective as trying to solve an algebra equation by chewing bubble gum.  --  Mary Schmich (Chicago Tribune; 1997); Baz Luhrmann (1999), see http://en.wikipedia.org/wiki/Wear_Sunscreen