2009-01-13 13 views
10

Für C++ gibt es viele gute Unit-Test-Frameworks, aber ich konnte keinen guten für finden. Mit Funktionstests meine ich Dinge, die die Festplatte berühren, die ganze Anwendung erforderlich ist usw.Testframework für Funktions-/Systemtests für C/C++?

Punkt für Fall: Welches Framework hilft beim Testen von Dingen wie, ob Ihre I/O funktioniert? Ich habe ein handgerolltes System installiert, das temporäre Ordner erstellt, eine Reihe von Daten kopiert, so dass die Tests immer in derselben Umgebung durchgeführt werden, aber bevor ich mehr Zeit für mein benutzerdefiniertes Framework aufwenden muss - gibt es ein schon da draußen?

+0

Auf welchen Plattformen befinden Sie sich? –

+0

Windows und Linux im Moment. Mein aktuelles Testframework ist gegen .NET 2 geschrieben und funktioniert dort, wo Mono funktioniert. – Anteru

Antwort

3

Ich schrieb eine von Grund auf dreimal - zweimal zum Testen von C++ - Apps, die mit dem FIX-Protokoll sprachen, einmal für eine GUI-App.

Das Problem ist, dass Sie die Außenwelt nachahmen müssen, um den Systemtest richtig durchzuführen. Ich meine nicht "außerhalb deines Codes" - außerhalb deiner Bewerbung. Dies beinhaltet das Emulieren von Endbenutzern, externen Entitäten, dem Internet und so weiter.

Normalerweise benutze ich Perl, um mein System Test Framework und Tests zu schreiben, vor allem, weil es gut mit dem Zugriff auf alle Arten von Betriebssystemen und Regexps ist erstklassige Bürger.

Einige Tipps: Stellen Sie sicher, dass Ihre Protokolle leicht zu analysieren sind, aber nicht zu ausführlich. Habe eine vernünftige Standardkonfiguration. Erleichtern Sie das Zurücksetzen der Anwendung - Sie müssen dies nach jedem Test tun.

Der Ansatz, den ich normalerweise verwende, ist eine Art "Adapter", der die Kommunikation der Anwendung mit der Außenwelt in stdin/stdout einer ausführbaren Datei umwandelt. Dann baue ich noch ein Perl-Framework auf, und dann benutzen die Testfälle das Framework.

2

Im Folgenden liste ich ein paar Tools und größere Testanwendungen, von denen ich weiß. Wenn Sie mehr Informationen zu Ihrer Plattform (Betriebssystem usw.) bereitstellen, können wir wahrscheinlich bessere Antworten liefern.

Für einen Teil von dem, was Sie benötigen, bietet Microsoft die Application Verifier:

Application Verifier (AppVerifier) ​​ist eine Runtime-Verification Tool in Testanwendungen für die Kompatibilität mit Microsoft Windows XP verwendet. Dieses Tool kann verwendet werden, um eine Vielzahl bekannter Kompatibilitätsprobleme während der Ausführung der Anwendung zu testen. Dieser Artikel beschreibt die Schritte zum Verwenden von AppVerifier als eine effektive Ergänzung zu den Anwendungsentwicklungs- und Testzyklen.

Application Verifier kann nützlich sein, um niedrige Speicherbedingungen, andere niedrige Ressourcen und andere API-Nutzung zu testen. Ein weiterer Teil des Puzzles ist das Microsoft Detours-Paket, mit dem Sie API-Aufrufe durch Ihren eigenen Code ersetzen können (z. B. um Fehlercodes für schwierig einzurichtende Tests zurückzugeben).

Detours ist eine Bibliothek zum Instrumentieren beliebiger Win32-Funktionen auf x86-, x64- und IA64-Maschinen. Detours fängt Win32-Funktionen ab, indem der In-Memory-Code für Zielfunktionen neu geschrieben wird. Das Detours-Paket enthält auch Dienstprogramme zum Anhängen beliebiger DLLs und Datensegmente (die als Payloads bezeichnet werden) an beliebige Win32-Binärdateien.

Es gibt auch andere, größere (und teurere) umfassende Pakete. Borland macht Silk.
Automatisierte Software macht TestComplete. Die Auswahl eines dieser Tools entspricht Ihren Anforderungen für Ihre Anwendungen.
IBM/Rational bietet die Rational Functional Tester, die auf vielen Plattformen verfügbar und funktionsreich ist.

+0

Das Problem mit Detours ist, dass v2.1 kostenlos ist, es ist für die Forschung, nicht-kommerzielle, nicht-Produktion. Version 3.0 entfernt diese Einschränkungen, kostet aber 9.999 US-Dollar - eine saftige Verpflichtung, wenn Sie nicht wissen, ob sie Ihren Anforderungen entspricht. –

0

Hallo Ich bin mir nicht sicher, ob das Framework, das wir in Ihrer Situation haben, aber in Rational Functional Tester einhängt und den Benutzer ermöglicht, verschiedene Datensätze zu erstellen, um verschiedene Tests anzuhängen und die Umgebungen zu ändern, ohne die Skripts zu ändern und erneut zu verwenden die Automatisierung auf effiziente Weise. Wenn Sie interessiert sind: http://www.testpro.com.au/Test-Automation-Framework.html

+2

Fügen Sie Ihren Posts, die Ihre Produkte empfehlen, einen Haftungsausschluss hinzu. Ich sehe, dass Sie Ihre Zugehörigkeit in Ihrem Profil offenlegen, aber nicht jeder wird nachdenken. Siehe auch die [faq # promotion]. –

Verwandte Themen