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