2008-09-16 7 views
3

Ich bin auf der Suche nach einem Werkzeug für Regressionstests einer Reihe von Geräten, die wir bauen.Test-Framework für Black-Box-Regressionstest

Das aktuelle Konzept besteht darin, dass Sie eine Eingabedatei (text/csv) für das Werkzeug erstellen, die Eingaben für das zu testende System angibt. Das Tool erfasst dann die Ausgaben des Systems und zeichnet die Eingaben und Ausgaben in einer Ausgabedatei auf.

Die Ausgabe hat dasselbe Format wie die ursprüngliche Eingabedatei und kann als Eingabe für die folgenden Durchläufe des Werkzeugs verwendet werden, wobei die gemessenen Ausgaben mit den Werten des vorherigen Laufs übereinstimmen.

Die Ergebnisse von zwei Läufen werden nicht genau übereinstimmen, es gibt einige Zeitunterschiede, die vom Zustand der Batterie abhängen oder die von einem anderen internen Zustand des Geräts abhängen.

Wir müssten unsere eigenen Schnittstellen schreiben, um die Befehle vom Werkzeug an die Ausrüstung zu übergeben und die Ausgabe der Ausrüstung zu erfassen.

Dies ist eine relativ einfache Aufgabe, aber ich suche nach einem vorhandenen Werkzeug/Paket/Bibliothek, um zu vermeiden, die Wheel/Steal Lehren neu zu erfinden.

Antwort

0

Sie können einfach jedes Testframework verwenden. Der schwierige Teil besteht darin, die Tools zum Senden/Abrufen der Daten von Ihrem Testsystem zu schreiben, nicht die tatsächlichen Zeichenfolgenvergleiche.

Ihre Tests würden alle aussehen wie folgt aus:

x = read_input_file(ifilename); 
y1 = read_expected_data(ofilename); 
send_input_file_to_server(); 
y2 = read_output_from_server(); 
checkequal(y1, y2) 
2

ich ein System wie dieses oben auf git (http://git.or.cz/) vor kurzem gebaut. Im Grunde schreiben Sie ein Programm, das all Ihre Eingabedateien übernimmt, sie an den Server sendet, die Ausgabe zurück liest und in eine Reihe von Ausgabedateien schreibt. Übertragen Sie nach dem ersten Lauf die Ausgabedateien an git.

Für zukünftige Läufe, Ihren Erfolg durch bestimmt wird, ob das Git Repository ist sauber nach dem Lauf beendet:

test 0 == $(git diff data/output/ | wc -l) 

Als Bonus können Sie alle Git-Tools verwenden Unterschiede zu vergleichen, und verpflichten sie, wenn Es stellte sich heraus, dass die Unterschiede eine Verbesserung waren, so dass zukünftige Runs vergehen werden. Es funktioniert auch gut beim Zusammenführen zwischen Zweigen.

+0

Dies ist eine kreative Art und Weise, es zu tun. – kizzx2

1

Ich bin mir nicht sicher, ob es ein einzelnes Paket geben wird, das genau Ihren Bedürfnissen entspricht. Sie haben ein paar Überlegungen zu machen:

  1. Wie Daten an das Gerät zu übergeben und wie sie wieder zu sammeln. Dies ist sehr anwendungsspezifisch, aber eine normalerweise gute Option ist der alte 'gute' serielle Port (RS232), für den ein einfaches Interface für jede Programmiersprache existiert.
  2. So führen Sie die Tests aus. Ein Unit-Testing-Framework kann Ihnen hier definitiv helfen. Die vorhandenen Frameworks verfügen über viele der implementierten Grundfunktionen - Auswahl der zu testenden Tests, Auswahl der Detailebene des Reports (sehr wichtig für das detaillierte Debugging bei der ersten und späteren PASS/FAIL-Analyse in der Produktionsphase). Ich habe gute Erfahrungen mit den Test-Frameworks von Perl und Python beim Testen von Embedded-Geräten gemacht.
  3. Sie müssen auch entscheiden, wie Sie die Vergleiche machen. Wie Sie richtig bemerkt haben, werden die Ergebnisse nicht gleich sein. Hier kommt Ihr Domänenwissen ins Spiel. Normalerweise wird es einfach mit Fehlermargen implementiert, die in Ihrer Domain anwendbar sind. Natürlich können Sie kein grundlegendes diff Werkzeug verwenden und müssen ein intelligentes Skript schreiben.
Verwandte Themen