Framework for Integrated Tests (FIT)

Werbung
Universität Karlsruhe (TH)
Forschungsuniversität · gegründet 1825
Framework for Integrated Tests
(FIT)
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Motivation
• Erleichterung der Erstellung des Akzeptanztest
für den Benutzer
• Benutzer beschreibt die Eingaben und Ausgaben
• Entwickler implementieren den Test
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
2
FIT im Überblick
Wrapper
FIT
führt Wrapper aus
liest Tests
.html
Lehrstuhl für Programmiersysteme
führt Tests aus
.java
Test-Spezifikation
Fakultät für Informatik
.java
Anwendung
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
3
Aufgaben
• Entwickler und Kunde einigen sich auf
Schnittstelle des Wrappers
• Entwickler schreibt Wrapper
• Kunde stellt Test-Spezifikation bereit, basierend
auf HTML-Tabellen
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
4
Wrapper-Typen
• FIT stellt verschiedene Wrapper-Typen bereit,
z.B.:
• ActionFixture
• andrena Erweiterungen
• MultiTestFixture
• IncludeFixture
• IPD Erweiterungen
• ChessFixture
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
5
ActionFixture
• Interpretiert Zeilen einer HTML-Tabelle als Folge
von Kommandos
• Interaktion mit Implementierung möglich
• Erweiterungen können eigene Kommandos
anbieten, wie z.B. ExtendedActionFixture
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
6
ActionFixture: Kommandos
fit.ActionFixture
start
<Class>
enter
<Method>
<Argument>
check
<Method>
<Argument>
press
<Method>
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
<Result>
7
ExtendedActionFixture
de.andrena.ExtendedActionFixture
comment
<Comment>
Constant
<Name>
<Value>
variable
<Name>
<Value>
fillvariable
<Name>
<Method>
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
8
IncludeFixture
• Vorgefertigte Tests können eingefügt werden
• setUp und Konstantenbelegungen für Vielzahl
von Tests möglich
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
9
IncludeFixture
de.andrena.IncludeFixture
include
<Url>
parameter
<Name>
<Value>
param
<Name>
<Value>
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
10
ChessFixture
• Erweitert ExtendedActionFixture um Vergleich
von Komma-Separierten-Werten (CSV)
• checkCSV
• checkDisjointCSV
• Zeigt Brettstellungen graphisch an
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
11
Forsythe-Edwards
Notation (FEN)
•
•
Textuelle Darstellung des Zustands einer
Schachpartie
http://www.very-best.de/pgn-spec.htm
Enthält 6 Felder durch ein Leerzeichen getrennt:
1.
2.
3.
4.
5.
6.
Verteilung der Steine
Farbe am Zug
Rochaderechte
Zielfeld beim EnPassant
Halbzug Zähler
Zug Zähler
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
12
Verteilung der Steine
• Reihen eines Schachbrettes aus der Perspektive
von Weiß (oben nach unten)
• 8te Reihe zuerst, danach absteigend
• In jeder Reihe von links nach rechts
(Linie „a“ bis Linie „h“)
• Trennung zwischen Reihen durch „/“
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
13
Verteilung der Steine
• Leere Felder durch Ziffern beschrieben, die
Anzahl der Freien Felder angeben
• Notation der Spielsteine:
Notation (weiß, schwarz) Figur (en, de)
K, k
King, König
Q, q
Queen, Dame
R, r
Rook,Turm
B, b
Bishop, Läufer
N, n
Knight, Springer
P, p
Pawn, Bauer
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
14
Farbe am Zug
• Weiß am Zug „w“ (white)
• Schwarz am Zug „b“ (black)
• Wert bei Spielbeginn: „w“
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
15
Rochaderechte
• Der König kann nach zwei Seiten rochieren
• Auf Seite des Königs
• Auf Seite der Dame
• Zwei Einträge für beide Seiten
• Wert bei Spielbeginn: „KQkq“
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
16
Zielfeld beim EnPassant
• Bauern können von Grundlinie zwei Felder
vorrücken
• Übersprungenes Feld ist das Zielfeld beim
EnPassant
• Wert bei Spielbeginn: „-“
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
17
Halbzug Zähler
• Halbzug ist die Steinbewegung einer Farbe
• Halbzugzähler gibt die Anzahl der Halbzüge seit
der letzten Bauernbewegung oder seit dem
letzten Schlagen eines Spielsteins
• Dient zur Bestimmung der 50-Züge-Regel
http://en.wikipedia.org/wiki/Fifty_move_rule
• Wert bei Spielbeginn: „0“
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
18
Zug Zähler
• Anzahl der vollen Züge
• Startet bei 1
• wird bei jedem Zug von Schwarz um eins (1)
erhöht
• Wert bei Spielbeginn: „1“
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
19
FEN: Spielbeginn
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
20
FEN: Fortgeschrittenes Spiel
• Weiß am Zug
• 38 Züge gespielt
• 5 Halbzüge seit letztem Bauernzug
bzw. Schlagen
4k3/q7/8/8/8/8/4P3/4K3 w - - 5 39
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
21
ChessFixture
de.uka.ipd.fit.ChessActionFixture
checkDisjointCSV
<Command>
<Value>
checkCSV
<Command>
<Value>
print
<Command>
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
22
MultiTestFixture
• Wurzeldokument
• Fasst die einzelnen Testspezifikationen
zusammen
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
23
MultiTestFixture
de.andrena.MultiTestFixture
run
<Url>
targetDir
<Dir>
sourceDir
<Dir>
timestamp
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
24
Mein Kunde kann kein HTML!
• Aber er wird doch Excel/OpenOffice können?
• Erstellen der Spezifikation mit Excel und
exportieren nach HTML
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
25
Projektaufgabe
• XPChess: Schachprogramm mit
Kommandozeilen Schnittstelle
• Grundgerüst enthält:
• Suchfunktion
• Bauern/Könige können ziehen
• Kommandos:
• Move
• SetBoard
• SetColor
• SetDepth
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
26
XPChess Paketstruktur
searcher
driver
board
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
movecontainer
movegenerators
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
27
FIT Demo – Hausaufgabe
als Projekt in Eclipse importieren.
• FIT herunterladen:
http://fit.c2.com/wiki.cgi?DownloadNow
• Das Archiv fit.jar bekannt machen.
• Die Klasse fit.FileRunner mit den Argumenten
• FITDemo.zip
./src/fitDemoIn.html ./src/fitDemoOut.html
ausführen.
• Getestet wird die Klasse java.util.ArrayList.
Ausprobieren!
Fakultät für Informatik
Lehrstuhl für Programmiersysteme
Extreme Programming-Praktikum · Sommersemester 2007
Andreas Höfer
28
Herunterladen