Unit Testing, SUnit & You



Ähnliche Dokumente
Programmiertechnik II

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Unit Tests mit Junit 4. Dario Borchers

Testen mit JUnit. Motivation

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Whitebox-Tests: Allgemeines

SOFTWARE ENGINEERING 3 TESTVORBEREITUNGEN UND UNIT-TEST

Softwareentwicklungsprozess im Praktikum. 23. April 2015

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ


Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Fortgeschrittenes Programmieren mit Java. Test Driven Development

SEP 114. Design by Contract

Test-Driven Design: Ein einfaches Beispiel

Markus Wichmann. Testen von Java Code mit. JUnit

Internet Explorer Version 6

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

Professionelle Seminare im Bereich MS-Office

Was meinen die Leute eigentlich mit: Grexit?

Agile Softwareprozess-Modelle

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Testen Prinzipien und Methoden

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

SharePoint Demonstration

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Unit Testing mit NUnit

Einsatz von xalerator. bei den. Ergo Direkt Versicherungen. Bereich Versicherungstechnik/Leben

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Software Systems Engineering

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

5.2 Neue Projekte erstellen

Unit Testing mit JUnit. Dr. Andreas Schroeder

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Softwareentwicklung aus Sicht des Gehirns

ARCO Software - Anleitung zur Umstellung der MWSt

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Das Test-Framework JUnit ETIS SS04

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

Agiles Testen. Gedankensammlung. 17. November Patrick Koglin

Pflegende Angehörige Online Ihre Plattform im Internet

Requirements Engineering für IT Systeme

Software Engineering Klassendiagramme Assoziationen

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

Java Entwicklung für Embedded Devices Best & Worst Practices!

Reporting Services und SharePoint 2010 Teil 1

plus Flickerfeld bewegt sich nicht

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Software - Testung ETIS SS05

Microsoft Dynamics NAV 2013 R/2 Installationsanleitung. Inhalt: Begleitmaterial des ERP Übungsbuchs:

Chancen agiler Softwareentwicklung. Dipl.-Inform. Henning Wolf Geschäftsführer der akquinet agile GmbH

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Inhalt... 1 Einleitung... 1 Systemanforderungen... 1 Software Download... 1 Prüfdokumentation... 4 Probleme... 5 Hintergrund... 5

Real-Time Collaboration Eine Kostprobe Workshop

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

1 Mathematische Grundlagen

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

ACDSee 2009 Tutorials: Rote-Augen-Korrektur

IT-Basics 2. DI Gerhard Fließ. Vorgehensmodelle

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Grundbegriffe der Informatik

Code verifizieren mittels

Qualitätserlebnis statt Qualitätssicherung. Eine Mehrfachfallstudie agiler Teams

Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen.

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Programmieren I. Übersicht. Vorlesung 12. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Educase. Release Notes 1.7: Neue Funktionen und Verbesserungen. Base-Net Informatik AG Wassergrabe 14 CH-6210 Sursee

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Was ist Sozial-Raum-Orientierung?

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Abschnitt 16: Objektorientiertes Design

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Integrierte und automatisierte GUI-Tests in Java

Senkung des technischen Zinssatzes und des Umwandlungssatzes

Übung - Datensicherung und Wiederherstellung in Windows 7

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

BIF/SWE - Übungsbeispiel

Gruppenrichtlinien und Softwareverteilung

,$ -. "+0 *+*+ ! / -#$%$. #$%'' $ () 1 2$ #$%$! 1 2$3 )!

Professionelle Seminare im Bereich MS-Office

Online Banking System

Use Cases. Use Cases

Software-Entwicklung

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Übung - Datensicherung und Wiederherstellung in Windows Vista

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

AirKey Das Handy ist der Schlüssel

Transkript:

HUMBOLDT-UNIVERSITÄT ZU BERLIN MENSCH-TECHNIK-INTERAKTION ARBEITSGRUPPE SOFTWARETECHNIK (INSTITUT FÜR INFORMATIK) ARBEITSGRUPPE INGENEURPSYCHOLOGIE (INSTITUT FÜR PSYCHOLOGIE) Unit Testing, SUnit & You M. Hildebrandt N. Niestroj

Agenda» Unit Testing» Begriffsklärung» Eigenschaften» Test-driven Development» SUnit» Geschichte» Framework» Testschritte 2

Begriff: Testen» Vorgehen» Anwenden des Testlings auf definierte Eingabewerte» Vergleich der Ergebnisse mit Erwartungswerten» Ziel» Finden von Fehlern» Nicht: Nachweis von Korrektheit Absence of proof is NOT proof of absence. 3

SUnit im Entwicklungsprozess Anwendungsszenarien Abnahmetest Grobentwurf Testfälle Systemtest Feinentwurf Testfälle Integrationstest Anforderungsdefinition Modulimplementation Testfälle Modultest 4

Unit Test vs. Integrationstest» Unit Test» Test, welcher sich auf Komponenten eines Systems bezieht» Methode, Klasse, Subsystem, Gesamtsystem» meistens: Klasse (CUT) bzw. Objekt (OUT) oder Software (SUT)» verwendet Testing Framework» Integrationstest» Test, welcher sich auf das Zusammenspiel mehrerer Komponenten bezieht» Komponenten bereits einzeln getestet» Abgrenzung nicht immer einfach» z.b. wenn die Integration mit Klassen implementiert ist 5

Unit Test vs. Integrationstest (con)» Stub:» Platzhalter für geplante aber noch nicht implementierte Funktionalität» Dummy:» Ersatz für die echte Implementierung für Testzwecke» simuliert die echte Implementierung, meist stark reduziert» Mock:» Dummy, welcher zusätzlich Testcode enthält» Benutzt für endoskopisches Testen 6

Unit Test: Eigenschaften» wiederholt und automatisiert ausführbar» häufiges Wiederholen möglich» der Test läuft schnell durch» häufiges Wiederholen möglich» ist unabhängig von anderen Tests» kann immer wieder unter denselben Bedingungen ausgeführt werden» einfach zu implementieren» kompliziertes Setup weißt auf Integrationstests hin Osherove, Roy (2007). The Art Of Unit Testing Manning Publications 7

Unit Test: Eigenschaften (con)» dienen der Beschreibung von Funktionalität» demonstrieren Benutzung und erwartetes Verhalten» sollte nicht öfter geändert werden als der getestete Code» auch für andere Entwickler zugänglich Osherove, Roy (2007). The Art Of Unit Testing Manning Publications 8

Was ist kein (guter) Unit Test?» Tests, die nach einen Tag/Monat/Jahr nicht mehr gültig sind» Tests, die nur vom Verfasser ausgeführt und interpretiert werden können» Tests, die länger als wenige Minuten zur Ausführung brauchen» Testsammlungen, die nicht durch einen Buttondruck ausgeführt werden können» Tests, die mehr als wenige Minuten zur vollständigen Implementierung brauchen Osherove, Roy (2007). The Art Of Unit Testing Manning Publications 9

Agenda» Unit Testing» Begriffsklärung» Eigenschaften» Test-driven Development» SUnit» Geschichte» Framework» Testschritte 10

Test-driven Development» agile Methode zur Entwicklung von Software» flexibler und schlanker Entwicklungsprozess» Reduzierung der Entwurfsphase auf ein Minimum» inkrementelle und iterative Entwicklung» Ziel: so früh wie möglich ausführbare Software» gemeinsame Abstimmung mit den Kunden» regelmäßig und in kurzen Abständen» Vorteil: flexibles Eingehen auf Kundenwünsche» Wünsche ändern sich (häufig)» Kunden wissen oft nicht so genau, was sie denn wollen» Kommunikationsprobleme 11

Test-driven Development (con)» Problem: häufige Änderungen am Code» erhöhte Fehlerwahrscheinlichkeit» Also: häufiges Testen» erfordert einfache und schnelle Tests» erfordert testbare Implementierung» also» Vorgehen: 1. Entwicklung von Tests 2. Entwicklung von Produktivcode» dabei: nur getestete Funktionalität implementieren» nichts unter Voraussicht künftiger Funktionalität» falls Anpassung nötig: Refactoring 12

Test-driven Development: Coding Phase» Bisheriger Ansatz: 13

Test-driven Development: Coding Phase (con)» Test-First Ansatz: 14

Agenda» Unit Testing» Begriffsklärung» Eigenschaften» Test-driven Development» SUnit» Geschichte» Framework» Testschritte 15

SUnit im Entwicklungsprozess Anforderungsdefinition Anwendungsszenarien Abnahmetest Grobentwurf Testfälle Systemtest Feinentwurf Testfälle Integrationstest Modulimplementation Testfälle Modultest SUnit 16

SUnit» Testing Framework für Smalltalk» Kent Back:» Simple Smalltalk Testing With Patterns (1989)» (ursprünglicher) Entwickler von Sunit» Schöpfer vom extrem Programming 17

SUnit Framework Black, A.P., Ducasse, P., Nierstrasz, O., Pollet, D. (2008). Squeak By Example 18

SUnit Framework: TestCase» abstrakte Klasse, wird für eigene Tests abgeleitet» Gruppe von Tests mit gemeinsamen Kontext» Tests: Methoden» Kontext: Instanzvariablen» Testdurchlauf» erzeuge neue TestCase Instanz» führe setup aus (erzeuge Kontext)» führe Testmethode aus» führe teardown aus (aufräumen)» Testdurchlauf wird für jede Methode ausgeführt 19

SUnit Framework (cont): TestSuite» gruppiert TestCases und TestSuites» ebenfalls ausführbar» sinnvoll bei zwei und mehr Testfällen, die automatisiert hintereinander ausgeführt werden sollen 20

SUnit Framework (cont): TestResult» Ergebnis einer TestSuite-Ausführung» beinhaltet» Anzahl bestandener Tests» Anzahl nicht bestandener Tests (failures)» Anzahl an aufgetretene Fehler (errors)» Anzahl ausgeführter Tests 21

SUnit Framework: TestResource» Singleton» sinnvoll, wenn eine Ressource» aufwendig zu initialisieren ist» von mehreren Testfällen (einer TestSuite) benutzt wird» es genügt die Ressource nur einmal für eine Testsuite zu initialisieren» Testfälle, die Ressource nicht zerstören können» muss mit einer TestCase Instanz assoziiert werden» Beispiel: Datenbankverbindung 22

Agenda» Unit Testing» Begriffsklärung» Eigenschaften» Test-driven Development» SUnit» Geschichte» Framework» Testschritte 23

SUnit: Testschritte im Überblick 1. Erstellen einer Testklasse 2. Kontext des Testes erschaffen 3. Testmethoden schreiben 4. Tests laufen lassen 5. Ergebnisse interpretieren 24

Schritt 1: Testklasse erstellen» dazu wird immer von TestCase eine Unterklasse erstellt» Beispiel: ATEOOperateurTest» gruppiert Tests für die Klasse ATEOOperateur 25

Schritt 2: Testkontext erstellen» Testkontext:» Instanzvariablen» Methode setup» für jeden Durchlauf neu erzeugt» Beispiel: ATEOOperateurTest>>setUp 26

Schritt 3: Testmethoden schreiben» jede Methode ist ein Test» Name muss mit test beginnen» keine Parameter» Hilfsmethoden» assert: abooleanorblock» abooleanorblock enthält den eigentlichen Test oder auszuwertenden Ausdruck» evaluiert zu true oder false» abooleanorblock = true Test bestanden abooleanorblock = false Test nicht bestanden» deny: abooleanorblock» Negation von assert: assert: abooleanorblock value not 27

Schritt 3: Testmethoden schreiben (con)» Hilfsmethoden» should: ablock raise: anexceptionalevent» ablock enthält Testcode und soll die Ausnahme anexceptionalevent auslösen» Ausnahme tritt auf Test bestanden» Ausnahme tritt nicht auf Test nicht bestanden» shouldnt:raise:» Negation von should 28

Schritt 3: Testmethoden schreiben (con)» Beispiel: ATEOOperateurTest>>testPopupDown 29

Schritt 4: Test laufen lassen» Testrunner in Squeak 30

Schritt 5: Ergebnisse interpretieren» Mögliche Ausgänge eines Tests 1. Test bestanden z.b. Block bei assert wertet zu true aus 2. Test nicht bestanden (failure) z.b. Block bei assert wertet zu false aus 3. Test abgebrochen wegen einem Fehler (error) z.b. MessageNotUnderstood, IndexOutOfBounds 31

Schritt 5: Ergebnisse interpretieren (cont.) 32

DANKE FÜR DIE AUFMERKSAMKEIT. Fragen? Hinweise? Ergänzungen? 33