Ihre Strategie und Ihr Skelett hängen nicht trivial davon ab, welche Arten von Tests Sie generieren möchten, welche Art von Berichterstattung Sie suchen und in welcher Sprache / Umgebung Sie arbeiten.
Es ist ziemlich einfach, einen Testgenerator zu schreiben, der für Sprachen wie C oder Java Klassensignaturen liest und automatisch Tests für Standard-Eckfälle generiert (Übergabe von 0, 2 Zufallswerten, MAX_INT, MIN_INT, an ein ganzzahliges Argument, Nullen für Nullwerte , etc...). Sie können dann die generierten Tests ausführen, die Ergebnisse für jeden Test aufzeichnen und manuell filtern, um irrelevante zu entfernen, akzeptable Ergebnisse für Tests zu genehmigen, die bestanden wurden (damit sie fortan automatisch bestanden werden können), und als ungültige Tests markieren, die fehlschlagen .
Sie können dies durch Markieren / Kommentieren / Umgestalten von Klassen ergänzen, um Ihrem Generator zusätzliche Hinweise zu geben. Möglicherweise haben Sie ein Tag, das alle möglichen Ausnahmen auflistet, die ein Methodenaufruf auslösen darf, oder das einen reduzierten Bereich gültiger Ganzzahlen für ein Ganzzahlargument angibt. Betrachten Sie diese als Kurzform, um die Tests selbst schreiben zu müssen.
Hier sind einige Komponenten, die Sie sich ansehen möchten:
- Eine Komponente zum automatischen Analysieren von Quellcode- / Funktionssignaturen / manuellen Anmerkungen, Erstellen von Standardtestfällen oder Umrissen / Signaturen für Testfälle, die darauf warten, dass Ihre Eingabe abgeschlossen wird.
- Eine ständig wachsende / sich ändernde Sprache von Tags / Anmerkungen / Kommentaren, die bis zu einem beliebigen Grad an Granularität (Methode / Klasse / Signatur / while-Schleifen / etc ...) reichen kann und Hinweise für den automatisierten Test-Builder darstellt. Idealerweise sollten Sie in der Lage sein, mit dieser Sprache zu spielen, ohne Ihr Framework oder Teile davon neu codieren zu müssen
- Automatisierter Testläufer mit der Fähigkeit, neue / alte Tests zu identifizieren und für jeden Test "akzeptable" Antworten aufzuzeichnen / zu testen. Idealerweise erstellt dieser Läufer eine Datenbank mit Testläufen, akzeptierten / abgelehnten Ergebnissen und aktuell akzeptablen Ergebnissen für jeden Test.
- Automatisierter "Objektfälscher", der bei einem Klassennamen und einer Zuordnung von Namen-> Werten ein Objekt erzeugen kann, das die Klasse nachahmt und anpassbare Daten für Funktionsaufrufe, Accessoren, öffentliche Datensteckplätze usw. zurückgibt.
Es gibt viele Test-Frameworks, die bereits Teile dieser Funktionalität für verschiedene Sprachen und Plattformen enthalten. Es ist zwar ziemlich einfach, diese Arbeit selbst zu erledigen und diese Art von Framework intern intern zu erweitern, aber es ist auch ein endloses langfristiges Projekt, das wahrscheinlich vorhandene Arbeiten duplizieren wird. Ich würde empfehlen, sich viel Zeit zu nehmen, um zuerst zu prüfen, was verfügbar ist, und dann zu entscheiden, ob es sich lohnt, einzutauchen.