SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
A power workshop during JAX 2007 on advanced techniques of test-driven development. It deals with acceptance tests using FIT as well as with mock objects, GUI testing and Groovy as a testing language for Java.
A power workshop during JAX 2007 on advanced techniques of test-driven development. It deals with acceptance tests using FIT as well as with mock objects, GUI testing and Groovy as a testing language for Java.
1.
Fortgeschrittene Techniken
der Testgetriebenen Entwicklung
JAX Powerworkshop, 23.04.2007
Tammo Freese, Johannes Link
2.
Agenda
• Testgetriebene Entwicklung im Überblick
• Akzeptanztests mit FIT
• Unit Tests mit JUnit/Mockobjekte mit EasyMock
• Legacy Code und Code Coverage
• Testen von GUIs und Web-Applikationen
• Testen mit Skriptsprachen
• Diskussion
3.
Motivation
• Software hat Geschäftswert durch zwei Qualitäten
• Funktionale Qualität
(Funktionalität, Fehlerfreiheit)
• Strukturelle Qualität
(Design/Codestruktur für Weiterentwicklung)
• Hinzufügen neuer Funktionalität
gefährdet funktionale und strukturelle Qualität
• Verbesserung der strukturellen Qualität
gefährdet die funktionale Qualität
4.
Testgetriebene Entwicklung
• Testgetriebene Programmierung:
Motiviere jede Verhaltensänderung am Code
durch einen automatisierten Test
(ständige Absicherung der funktionalen Qualität)
• Refactoring:
Vereinfache das Code-Design soweit wie möglich
(funktionale Qualität ist durch Tests abgesichert)
• (Häufige Integration:
Integriere den Code so häufig wie nötig)
5.
Entwickler schreiben Unit Tests
• testen Komponenten des Systems in Isolation
• geben uns konkretes Feedback
• ermöglichen sichere Änderungen
• sichern Erhalt der vorhandenen Funktionalität
• müssen bei jeder Integration zu 100% laufen
• können funktionale Tests auf Systemebene
nicht ersetzen!
6.
Kunden spezifizieren Akzeptanztests
• testen das System überwiegend als Ganzes
• geben unseren Kunden Vertrauen
in die gelieferte Software
• klären die Anforderungen
frühzeitig an konkreten Beispielen
• machen den Projektfortschritt sichtbar
• müssen vom Kunden erstellt und gepflegt
werden können
• Unsere Aufgabe ist es, den entsprechenden
Rahmen für ihre Automatisierung zu schaen!
7.
Akzeptanztests mit FIT
• FIT: Framework for Integrated Test
• Zum Schreiben und Ausführen automatischer
Akzeptanztests
• Testdaten werden tabellarisch erstellt
(in HTML, mit Excel oder im Wiki)
• Anbindung ans System in Java
• Portierung für aktuelle Sprachen verfügbar
• http://fit.c2.com
8.
Drei Fixture-Klassen
• ColumnFixture testet Ein-/Ausgabewertemengen.
• ActionFixture spielt ein Benutzerszenario durch
und ist deshalb gut für GUI-orientierte Tests
geeignet.
• RowFixture prüft eine Ergebnismenge
von Objekten mit ihren Attributen.