Stefan Lieser Wer erstellt regelmäßig Unit Tests?

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
der Universität Oldenburg
Phasen und ihre Workflows
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Kritische Betrachtung
Professional XNA Game Programming
Kapselung , toString , equals , Java API
Relativpronomen Fill in Rel.pron. Kombiniert! Konjunktiv Fill.
Abstrakte Klassen.
Ein Beispiel in Java.
Konstruktoren.
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
Das Test-Framework JUnit
Das Test-Framework JUnit
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
NetUSE Web Application Framework Kai Voigt NetUSE AG 28. Februar 2003.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Informatikunterricht mit Java
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling.
Automated Software Testing
Testgetriebene Entwicklung (TDD)
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
Testtechniken-Praktikum WS 2005/06 1 Arbeiten mit JUnit Andreas Höfer Dr. Matthias Müller Mit Beiträgen von Johannes Link.
TDD mit MSTest Stefan Lieser Web:
TDD mit MSTest Stefan Lieser
Stefan Lieser Web:
Stefan Lieser Web:
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Testvorbereitungen, Unit Test
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
TDD mit MSTest Stefan Lieser Web:
Die Präsentation des Lehrers der 21- allgemeinbildenden Schule des Bezirks Peschkö in Gebiet Buchara von Alijor Jahjojev.
Test-Driven Development
Software - Testung ETIS SS05.
BA Stuttgart, Technische Informatik, SW-Engineering, Objektorientierter Entwurf April 2007 Seite 1 Objektorientierter Entwurf (OOD) Beispiel: Generator.
Abstrakte Klassen und das Interface-Konzept
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
Objektorientierte (OO) Programmierung
Test 1 Test 2 Test 3. Test 4 Test 5 Test 6 Test 7 Test 8 Test 9.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Venusspiegel und Marsschild
Nichts sticht besser Objekte isoliert testen
Test.
Definition Felder Konstruktor Methoden Beispiel
Implementieren von Klassen
Grundkurs Informatik 11-13
 Präsentation transkript:

Stefan Lieser

Wer erstellt regelmäßig Unit Tests?

Wer kennt seine Testabdeckung?

Wer erstellt Tests um Bugs zu reproduzieren?

Wer erstellt Tests vor der Implementierung ?

TDD

Test Driven Development

Test First

Revolution!

Zeit TestCode

Test = hinterher

Sprache formt das Denken

Sapir-Whorf Hypothese

?

BDD

Behavior Driven Development

Evolution

Specification First

Test Specification

Testen?

Das machen die Tester!

Das kostet zu viel Zeit!

Mein Code ist fehlerfrei!

Dafür sind wir da!

Sollen wir arbeitslos werden?

Ihr habt keine Ahnung!

TDD Entwicklung

Tests für vorhandenen Code

Vertrauen

Reduktion

Dokumentation

Offenbarung

Verhalten

Mockups

User Stories

Als Shopbenutzer möchte ich Bücher in meinen Warenkorb legen um meine Bestellung besser überblicken zu können.

Who What Why

Role Gole Motivation

Technologie

Business Domain

Sprache der Domain verwenden

Business und Technik verwenden die selbe Sprache! It‘s all behavior

Gegeben ein MessageBoardController Wenn die Index Action aufgerufen wird und wenn 10 Nachrichten vorhanden sind Dann sollen die 5 neusten Nachrichten aus dem Repository ermittelt werden

Gegeben ein Nachrichten System Wenn es dargestellt wird Dann zeigt es die 5 neusten Nachrichten

Als Benutzer des Nachrichten Systems möchte ich die 5 neusten Nachrichten sehen damit die Nachrichten auf meinen Bildschirm passen

BDD = Automatisierte Akzeptanztests

Unit Tests: Der Code ist richtig. Akzeptanztests: Es ist der richtige Code.

Syntax

Assert.AreEqual(5, x); Assert.That(x, Is.EqualTo(5)); x.ShouldBeEqualTo(5); x.should_be_equal_to(5);

Arrange/Act/Assert

Setup/Exercise/Verify

[TestFixture] public class ClassicalTDD { private I Service Service; private AuftragsAbwicklung auftragsAbwicklung; private IAuftrag auftrag; [Test] public void AuftragsAbwicklung_sendet_ _wenn_der_Auftrag_ausgeliefert_wird() { // Arrange Service = MockRepository.GenerateMock (); auftrag = MockRepository.GenerateStub (); auftragsAbwicklung = new AuftragsAbwicklung( Service); // Act auftragsAbwicklung.Liefern(auftrag); // Assert Service.AssertWasCalled(x => x.Send()); auftrag.AssertWasCalled(x => x.Ausgeliefert()); }

Context/Specification

[Concern(typeof(AuftragsAbwicklung))] public class Wenn_ein_Auftrag_ausgeliefert_wird : InstanceContextSpecification { private I Service Service; private IAuftrag auftrag; protected override void establish_context() { Service = dependency (); auftrag = dependency (); } protected override AuftragsAbwicklung create_sut() { return new AuftragsAbwicklung( Service); } protected override void because() { sut.Liefern(auftrag); } [Observation] public void wird_eine_ _gesendet() { Service.was_told_to(x => x.Send()); } [Observation] public void wird_der_Auftrag_in_den_Status_Ausgeliefert_versetzt() { auftrag.was_told_to(x => x.Ausgeliefert()); }

BDD Frameworks

JP Boodhoo xunit.bddextensions (Björn Rochel) SpecUnit (Scott Bellware)

NBehave (Dan North) enthält Behave# und NSpec MSpec (Aaron Jensen)

Bildnachweis Sonstige/Zafira_Crash_Test.jpg