Wie wird mein Code testbar? Referent: David Völkel

Größe: px
Ab Seite anzeigen:

Download "Wie wird mein Code testbar? Referent: David Völkel"

Transkript

1 Wie wird mein Code testbar? Referent:DavidVölkel

2 DavidVölkel

3 anti pattern hardtotestcode GuteTestbarkeit

4 Überblick *Testbarkeit *TDDvs.Legacy *Isolation *Ciao accidentalcomplexity!

5 Testbarkeit Kriterien *operability *decomposability *observability *controllability

6 DesignforTestability(DfT) Designziel *wenigtestaufwand UrsprungE Technik *Testschnittstellen

7 TestDrivenDevelopment vs. Legacy

8 TestDrivenDevelopment writefailingtest (refactor) makethetest pass

9 TestDrivenDevelopment writefailingtest (refactor) (refactor) makethetest pass

10 TestDrivenDevelopment writefailingtest (refactor) (refactor) makethetest pass ExterneQualität Funktional

11 TestDrivenDevelopment writefailingtest (refactor) (refactor) makethetest pass ExterneQualität Funktional InterneQualität =>TestDrivenDesign

12 TestDrivenDesign Test *DriveDesign kontinuierlich minimalistisch(yagni) testbar<=>gutesdesign Code

13 TestDrivenDesign *DriveDesign kontinuierlich minimalistisch(yagni) testbar<=>gutesdesign *FeedbackaufDesign Listentoyourtests! (ZitatJohansen,2010) Test Code

14 LegacyCode =keinetests schlechttestbaresdesign *eigenercode *3rdPartyCode(Frameworks)

15 Legacy TDD Renovierung Doppeltschwierig *NochwenigKnowHowimTeam *SchwertestbarerCode

16 Legacy TDD Renovierung * Lazy *FixierungmitSystemtests *Refactoring *UnittestsfürneueFeatures NachFeathers2004

17 Isolation

18 Isolation Ziele *KlarerFokus Test Testaufwandsinkt Fehlerlokalisierung einfacher *Performanz

19 frontdoor *KEINEIsolation *roundtriptests Test *stateverification BegriffenachMeszaros2007 Testling dependedoncomponents (DOCs)

20 backdoor Unittestsgegen Blätter Test Units mitdocs Mocks BegriffenachMeszaros2007

21 Isolierbarkeit Test Problem: TestDoublesnichtsetzbar Refactorings Isolierbar Test Doubles

22 Beispiel:Logger

23 Probleme Controllability(INPUT) Observability(OUTPUT)

24 Ursachen statischeabhängigkeiten *Konstruktoraufrufe *Singletons

25 StatischerAufruf=>Objekte

26 StatischerAufruf=>Objekte Klasse <=> *wenigeraufwand * don'tmockconcrete classes ZitatausFreeman/Pryce2009 Interface *Abhängigkeiten expliziter geringer(isp) *SemantikdurchRollen

27 Setzbarkeit DependencyInjection *DOCssetzbar *Konstruktorvs.Setter *keinstatic

28 StubmitBordmittel Controllability(INPUT) *Inputkontrollierbar *etwassperrig

29 StubmitMockframework einfacherbeibreitereninterfaces

30 TestSpymitBordmitteln Observability(OUTPUT)

31 TestSpymitMockframework *knapp * behaviorverification

32 TransitiveAbhängigkeiten trainwreckcode BegriffvonFreeman/Price Problem:ImpliziteAbhängigkeiten GUI Test Service

33 TransitiveAbhängigkeiten *Abhängigkeitexplizit *nurzu Nachbarn... GUI Test Service Begriff trainwreckcode vonfreeman/price2009

34 DependencyInjection Kontext Objekte Abhängigkeit *kennennurnachbarn

35 Ciao accidentalcomplexity!

36 Ciao accidentalcomplexity! Problem: *komplexesetups *schlechterfokus N 8704K 001_Boatswain_Mate_3rd_Class_Joanna_Saldana_cuts_the_rope_off_a_span_wire_aboard_the_aircraft_carrier_USS_John_F._Kennedy_ %28CV_67%29_during_an_underway_replenishment_.jpg?uselang=de

37 LogischeFehler *Schichten,z.B. Prod Code=>Test Code *Zyklen undvieleanderemehr!

38 decomposability BigBallofMud Separations of Concerns Systemkleinschneiden Alleshängtvonallemab

39 Fokus SRP=>Klasse

40 Unfokussiert... 2Aspekteaufeinmal

41 ExtractClassRefactoring fokussierter... einfachertestbar...

42 N 8704K 001_Boatswain_Mate_3rd_Class_Joanna_Saldana_cuts_the_rope_off_a_span_wire_aboard_t he_aircraft_carrier_uss_john_f._kennedy_ %28CV_67%29_during_an_underway_replenishment_.jpg?uselang=de DfT Strategie TDD Ciao accidentalcomplexity! Isolation

43 Quellen PeterZimmer,2012:Testability ALevertoBuildSustainingSystems,OOP Conference SteveFreeman,NatPryce,2009: GrowingObject OrientedSoftwareguidedbyTests MichealFeathers,2004: Workingeffectivelywithlegacysystems RobertC.Martin,2009: CleanCode GerardMeszaros,2007: xunittestpatterns bzw. ChristianJohansen,2010: Test DrivenJavaScriptDevelopment EricEvans,2003: DomainDrivenDesign

44 Fragen und Diskussion

45 LizensiertunterCreativeCommons3.0Attribution+Sharealikesiehe sa/3.0/deed.de

Design for Testability in der Praxis Referent: David Völkel

Design for Testability in der Praxis Referent: David Völkel Design for Testability in der Praxis Referent:DavidVölkel http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg DavidVölkel anti pattern

Mehr

Design for Testability in der Praxis David Völkel, codecentric AG

Design for Testability in der Praxis David Völkel, codecentric AG Design for Testability in der Praxis David Völkel, codecentric AG http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg David Völkel *

Mehr

Test Driven Development

Test Driven Development Test Driven Development Definition & Motivation [~15min] Demo [~10min] Stubs & Mocks [~15min] Übliche Fehler [~5min] Folie 1 TDD [Kent Beck] Schreibe keine Zeile Code ohne einen fehlschlagenden (roten)

Mehr

STRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS

STRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS STRICT TDD DIE UNTERSCHÄTZTE WAFFE DES ENTWICKLERS David Völkel Stuttgarter Testtage 2013 ÜBER MICH David Völkel IT-Consultant für codecentric Twitter: @davidvoelkel Schwerpunkte: Test Driven Development

Mehr

- - CodE 11 CodE 0 0 0 0 0 0 0 0 2.o C 1 10.0 C 2 off 3 3.0 4 2.0 5 off 6 1 8 20.0 9 60 C 7 4.0 10 80 C 1 38 C 12 8 k 13 on 14 30.0 15 10 16 - - CodE 11 CodE 0 0 0 0 0 0 0 0 2.o C 1 10.0 C 2

Mehr

Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software

Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software Michael C. Feathers Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software Vorwort................................................... 13 Geleitwort.................................................

Mehr

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric TDD mit JUnit & Mockito Tobias Trelle, codecentric AG @tobiastrelle 1 Tobias Trelle Software Architekt @ codecentric AG Twitter: @tobiastrelle Slideshare: http://de.slideshare.net/tobiastrelle/ GitHub:

Mehr

Putting TDD to the Test. Edwin Günthner, IBM Germany Development Lab

Putting TDD to the Test. Edwin Günthner, IBM Germany Development Lab Putting TDD to the Test Edwin Günthner, IBM Germany Development Lab Zum Titel www.dict.cc: to put sb./sth. to the test jdn./etw. auf den Prüfstand stellen Java Forum Stuttgart 2017 2 Agenda Teil 1: Grundsätzliches,

Mehr

Inhaltsverzeichnis. Geleitwort Einleitung... 13

Inhaltsverzeichnis. Geleitwort Einleitung... 13 5 Geleitwort..................................................... 11 Einleitung..................................................... 13 1 Einführung.......................................................

Mehr

JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer.

JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Namics. Stefan Bechtold. Principal Software Engineer. JUnit. HierarchicalContextRunner. Mehr Struktur. TDD. Clean Code. Verantwortung. Skills. Stefan Bechtold. Principal Software Engineer. 16. Oktober 2014 Aus dem Alltag eines Entwicklers Ein typischer (Unit-)

Mehr

TDD für iphone OS. xpdays 2009. Tammo Freese

TDD für iphone OS. xpdays 2009. Tammo Freese TDD für iphone OS xpdays 2009 Tammo Freese Inhalt Unit Testing für iphone OS Mockobjekte für iphone OS TDD für iphone OS? Unit Testing auf dem iphone Vor iphone OS 3.0: kaum dokumentiert nur auf dem Entwicklungsrechner

Mehr

Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag

Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag Refactoring von Legacy Systemen Jochen Winzen jochen.winzen@andrena.de andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität

Mehr

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN? David Völkel XPDays Germany 14.11.2013 ÜBER MICH David Völkel IT-Consultant für codecentric Twitter: @davidvoelkel Schwerpunkte: Test-Driven Development

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator Inhalt Gute OOP-Programmierung ist schwer Objekte Objekte, wird aber so vermittelt (siehe jede Einführung in OOP) Ansprüche an gutes Design diametral welche Ansprüche haben wir überhaupt? Fehler im Design

Mehr

Record Refactor - Replay

Record Refactor - Replay Record Refactor - Replay Stefan Mandel 2 Java-Code den man nicht hinterlassen sollte Hat zu wenige (automatisierte) Tests Hat unkontrollierte Seiteneffekte Auf globale Variablen Und Argumente Verzichtet

Mehr

SEQIS 10 things. Herzlich Willkommen! Alexander Weichselberger SEQIS Geschäftsleitung

SEQIS 10 things. Herzlich Willkommen! Alexander Weichselberger SEQIS Geschäftsleitung SEQIS 10 things SEQIS 10 things Herzlich Willkommen! Alexander Weichselberger SEQIS Geschäftsleitung SEQIS 10 things Programm 2014 20.03.14 Business Analyse Einführung in den BABOK Guide 26.06.14 API Testing:

Mehr

Refactoring C# Legacy Code

Refactoring C# Legacy Code Refactoring C# Legacy Code Stefan Lieser @StefanLieser http://refactoring-legacy-code.net http://er.jsc.nasa.gov/seh/13index.jpg Houston, we ve had a problem. Wandelbarkeit https://pixabay.com/de/chamäleon-hautnah-exotische-grün-1414084/

Mehr

Inhaltsverzeichnis. Vorwort 15

Inhaltsverzeichnis. Vorwort 15 Vorwort 15 Einleitung 17 Über dieses Buch 18 Wie Sie dieses Buch verwenden 18 Wer dieses Buch lesen sollte 18 Meilensteine 18 Codekonventionen und Downloads 19 Softwareanforderungen 20 Danksagung 20 Teil

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015 Systematisches Testen der Funktionalität von Softwaresystemen 17. Juni 2015 Überblick Semantische Qualität von Software Teststrategien und prinzipien Testgetriebene Softwareentwicklung Welche Arten von

Mehr

Skalierbare Enterprise Architekturen für Universal Windows Platform Apps

Skalierbare Enterprise Architekturen für Universal Windows Platform Apps Agenda Ziele Portable Class Libraries Projektaufbau MVVM Databinding #1 MVVM Light Inversion of Control & Dependency Injection Repository Pattern Databinding #2 Skalierbare Enterprise Architekturen für

Mehr

Test-driven development JUnit-Test. Lars Varain

Test-driven development JUnit-Test. Lars Varain Test-driven development JUnit-Test Lars Varain Inhalt Test-driven Development (TDD) Junit4 Beispiel Inhalt Test-driven Development (TTD) Warum TDD? Zyklus Ausnahmebehandlung Junit4 Beispiel Inhalt Test-driven

Mehr

Inhaltsverzeichnis. Teil I Erste Schritte 23. Vorwort zur zweiten Auflage... 13. Vorwort zur ersten Auflage... 15. Einleitung...

Inhaltsverzeichnis. Teil I Erste Schritte 23. Vorwort zur zweiten Auflage... 13. Vorwort zur ersten Auflage... 15. Einleitung... Vorwort zur zweiten Auflage....................................... 13 Vorwort zur ersten Auflage......................................... 15 Einleitung.......................................................

Mehr

Prüfungsvorbereitungsfragen SE2

Prüfungsvorbereitungsfragen SE2 Prüfungsvorbereitungsfragen SE2 Woche 1 Projektmanagement 1. Erklären Sie den Satz Projektmanagement ist keine Insel. Woche 2 Build Server / Automation 2. Warum braucht es Buildserver? 3. Nennen sie drei

Mehr

Iterativ. Inkrementell

Iterativ. Inkrementell Iterativ Inkrementell Build Release Test Qualität Architektur & Documentation Distributed Version Control Continuous Integration TDD Design Agile Architektur Dependency Feature Branches Mocks

Mehr

Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen

Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen Dr. Carola Lilienthal, cl@wps.de, @cairolali www.wps.de //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG 1 Business-Software

Mehr

Softwaretests mit Junit

Softwaretests mit Junit Softwaretests mit Junit Techniken der testgetriebenen Entwicklung Bearbeitet von Johannes Link überarbeitet 2005. Taschenbuch. XVI, 416 S. Paperback ISBN 978 3 89864 325 2 Format (B x L): 16,5 x 24 cm

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes Programmieren mit Java. Test Driven Development Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test

Mehr

Reengineering und Refactoring von Softwarearchitekturen

Reengineering und Refactoring von Softwarearchitekturen Methodische und Praktische Grundlagen der Informatik 3 Reengineering und Refactoring von Softwarearchitekturen Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik WS 2008/2009 Lernziele?

Mehr

TDLCR Test Driven Legacy Code Refactoring

TDLCR Test Driven Legacy Code Refactoring TDLCR Test Driven Legacy Code Refactoring Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Java Forum Nord Hannover, 20.10.2016 Version: 1.0 www.oio.de info@oio.de Abstract Bestandsanwendungen

Mehr

Unit Testing, SUnit & You

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

Mehr

Code Retreat Softwerkskammer Stuttgart / JUGS 17. Nov. Oliver Böhm JUGS / Daniel Georges Softwerkskammer Stuttgart

Code Retreat Softwerkskammer Stuttgart / JUGS 17. Nov. Oliver Böhm JUGS / Daniel Georges Softwerkskammer Stuttgart Code Retreat Softwerkskammer Stuttgart / JUGS 17. Nov Ablauf 09:00 : Ankunft und Frühstück 09:30 : Einführung durch den Moderator 10:00 : Session #1 10:45 : Retrospektive und Pause 11:00 : Session #2 11:45

Mehr

Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET

Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET Timo Wagner & Sebastian Kühn Entwurf einer Multi-Tier Anwendung in ASP.NET Überblick 1.Einfürung in die Multi-Tier Architektur 2.Ausgangspunkt und Probleme 3.Rundgang durch die Architektur 4.Architektur

Mehr

Funktionales TDD. Alles gleich oder alles anders?

Funktionales TDD. Alles gleich oder alles anders? Funktionales TDD Alles gleich oder alles anders? Johannes Link johanneslink.net Softwaretherapeut "In Deutschland ist die Bezeichnung Therapeut allein oder ergänzt mit bestimmten Begriffen gesetzlich nicht

Mehr

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick... 13 3.2 Flache Aufwandskurve... 14 3.3 Qualitätskriterien für den inkrementellen Entwurf...

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick... 13 3.2 Flache Aufwandskurve... 14 3.3 Qualitätskriterien für den inkrementellen Entwurf... ix 1 Einleitung 1 Roman Pichler Stefan Roock 1.1 Agile Softwarewicklung und Scrum............................ 1 1.2 Zielgruppe und Zielsetzung.................................. 2 1.3 Überblick über das

Mehr

Refactorings in großen Softwareprojekten

Refactorings in großen Softwareprojekten Refactorings in großen Softwareprojekten (C) 2004 Martin Lippert lippert@acm.org Stefan Roock stefan@stefanroock.de Was ist Refactoring? A change made to the internal structure of software to make it easier

Mehr

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Prof. Dr. Dr. h.c. Manfred Broy Sommersemester Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Einführung in die Softwaretechnik Übung 6: Feinentwurf Aufgabe 17: Entwurfsmuster

Mehr

Probeklausur. Lenz Belzner. January 26, 2015. Lenz Belzner Probeklausur January 26, 2015 1 / 16

Probeklausur. Lenz Belzner. January 26, 2015. Lenz Belzner Probeklausur January 26, 2015 1 / 16 Probeklausur Lenz Belzner January 26, 2015 Lenz Belzner Probeklausur January 26, 2015 1 / 16 Definieren Sie Software Engineering in Abgrenzung zu Individual Programming. Ingenieursdisziplin professionelle

Mehr

PHP 6 Beliebte Webskriptsprache wird erwachsen. Linux User Group Bern 14.05.2009 René Moser <mail@renemoser.net>

PHP 6 Beliebte Webskriptsprache wird erwachsen. Linux User Group Bern 14.05.2009 René Moser <mail@renemoser.net> PHP 6 Beliebte Webskriptsprache wird erwachsen Linux User Group Bern 14.05.2009 René Moser Inhalt 1.Wie entstand PHP? 2.Was PHP? 3.Warum PHP? 4.Wie installiere ich PHP? 5.Wie programmiere

Mehr

Die Welt der SW-Qualität Ein Streifzug in 30 Minuten! Johannes Bergsmann Eigentümer

Die Welt der SW-Qualität Ein Streifzug in 30 Minuten! Johannes Bergsmann Eigentümer Die Welt der SW-Qualität Ein Streifzug in 30 Minuten! Johannes Bergsmann Eigentümer Inhalt Top Themen Requirements Testen Testautomatisierung Change-Management Risiko-Management Agile Methoden Traceability

Mehr

Fragen Arthur Zaczek. Dez 2015

Fragen Arthur Zaczek. Dez 2015 Arthur Zaczek Dez 2015 1 Ihre Fragen 2015 2 Allgemeines 2.1 Sinnhaftigkeit Ich bitte um Verzeihung, aber ich hatte in diesen Semester nicht die Zeit, die ich für diese Lehrveranstaltung gebraucht hätte,

Mehr

PS Software Engineering WS 2018/19

PS Software Engineering WS 2018/19 PS Software Engineering WS 2018/19 Wöchentlich Dienstag 08:00-10:00 Start: 8:15 Termine: PLUSonline Homepage zum PS: Allgemeines www.softwareresearch.net Teaching Programmieren im Großen Die Entwicklung

Mehr

Scriptbasierte Testautomatisierung. für Web-Anwendungen

Scriptbasierte Testautomatisierung. für Web-Anwendungen Scriptbasierte Testautomatisierung für Web-Anwendungen Scriptbasierte Testautomatisierung + Web-Anwendung: Erstes Einsatzgebiet, Ergebnisse aber allgemein übertragbar + Test aus Benutzersicht - Nicht Unit-Test,

Mehr

Christoph Behounek, eggs unimedia

Christoph Behounek, eggs unimedia Adobe Experience Manager6.1 Planung eines erfolgreichen AEM Upgrades Christoph Behounek, eggs unimedia Adobe Experience Manager Ohne Planung funktioniert es nicht Planung eines erfolgreichen AEM Updates

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Was bringt TDD wirklich?

Was bringt TDD wirklich? Was bringt TDD wirklich? Wissensspritze vom 6..2009, Christian Federspiel Catalysts GmbH McCabe Metrik CCN Die Cyclomatic Complexity Number, misst die Anzahl der möglichen Pfade durch einen Code. Die Metrik

Mehr

xii 5.3 Debugging Einplanung der Fehlersuche in Produkt und Prozess Vorbereitung und Ausführung des Debugging

xii 5.3 Debugging Einplanung der Fehlersuche in Produkt und Prozess Vorbereitung und Ausführung des Debugging xi I Warum überhaupt testen? 1 1 Komplexe Systeme führen zu Fehlern... 3 1.1 Kommunikation.............................................. 3 1.2 Gedächtnis... 6 1.3 Fachlichkeit... 6 1.4 Komplexität... 7

Mehr

Seminarprogramm 2014. Test-Driven Development mit ABAP OO Praktiken & Design Pattern Zeitmanagement Inhouse Seminare Webinare & elearning

Seminarprogramm 2014. Test-Driven Development mit ABAP OO Praktiken & Design Pattern Zeitmanagement Inhouse Seminare Webinare & elearning Seminarprogramm 2014 Test-Driven Development mit ABAP OO Praktiken & Design Pattern Zeitmanagement Inhouse Seminare Webinare & elearning Majer Consulting WER WIR SIND Herzlich Willkommen zum Majer Training

Mehr

The Art of Unit Testing

The Art of Unit Testing The Art of Unit Testing Deutsche Ausgabe von Roy Osherove, Michael Feathers, Robert C. Martin 1. Auflage The Art of Unit Testing Osherove / Feathers / Martin schnell und portofrei erhältlich bei beck-shop.de

Mehr

Software - Testung ETIS SS05

Software - Testung ETIS SS05 Software - Testung ETIS SS05 Gliederung Motivation Was ist gute Software? Vorurteile gegenüber Testen Testen (Guidelines + Prinzipien) Testarten Unit Tests Automatisierte Tests Anforderungen an Testframeworks

Mehr

Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis

Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis Klaus Kusche, Juni 2013 Inhalt Was ist das? Warum braucht man das? Was bringt das? Wann hilft es noch? Realistisches Beispiel

Mehr

FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java

FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java FWP Komponentenorientierte Softwareentwicklung Test-Driven-Development mit Java Hochschule München FK 07 SS 2009 Theis Michael - Senior Developer HVB Information Services GmbH März 2009 Grundlagen des

Mehr

Testgetriebene Entwicklung

Testgetriebene Entwicklung Testgetriebene Entwicklung Arbeitskreis Objekttechnologie Norddeutschland Hamburg, 18.03.2002 Frank Westphal freier Berater, Hamburg Tammo Freese OFFIS, Oldenburg westphal@acm.org tammo.freese@offis.de

Mehr

FORTGESCHRITTENE ANDROID ENTWICKLUNG Max Wielsch 27.05.2015

FORTGESCHRITTENE ANDROID ENTWICKLUNG Max Wielsch 27.05.2015 FORTGESCHRITTENE ANDROID ENTWICKLUNG Max Wielsch 27.05.2015 WAS LETZTES MAL GESCHAH... Eine Notitz App 2 Ansichten entwickelt: 1. Übersicht (Anlegen, Details anzeigen / bearbeiten) 2. Detailansicht (Bearbeiten):

Mehr

Labor Datenverarbeitung SS 2006

Labor Datenverarbeitung SS 2006 Labor Datenverarbeitung SS 2006 Versuch Speicherprogrammierbare Steuerungen Versuch Objektorientierter Entwurf mit Design-Pattern 1 SPS, Allgemeines Umfang der Versuche Logische Grundverknüpfungen kombinatorische

Mehr

7. Zusammenfassung (1)

7. Zusammenfassung (1) Typisierung in OO-Sprachen Subtyping vs. Subclassing Untertypen für Typkonstrukte Funktionsuntertypen und Überschreiben Generik Einsatz von Vererbung konzeptioneller Entwurf: Abstraktion Spezialisierung

Mehr

The Art of Unit Testing

The Art of Unit Testing The Art of Unit Testing 01.02.2011 Marco Heimeshoff Heimeshoff@gmx.de Übersicht Grundlagen des Unit Testing Test Driven Development Stubs & Mocks Behavior Driven Design The Art of Unit Testing Definition

Mehr

Testing Today - Seminar Sommersemester 2015. Dipl.-Math. Raphael Pham, Prof. Kurt Schneider

Testing Today - Seminar Sommersemester 2015. Dipl.-Math. Raphael Pham, Prof. Kurt Schneider Sommersemester 2015 Dipl.-Math. Raphael Pham, Prof. Kurt Schneider Heute Überblick über relevante Research Topics Vergabe der Themen 2 Aktuelle Forschungsthemen im Software Testing 3 Definition: Software

Mehr

Die Kunst der kleinen Schritte. David Völkel XP Days Germany

Die Kunst der kleinen Schritte. David Völkel XP Days Germany Die Kunst der kleinen Schritte David Völkel XP Days Germany 09.11.2018 @davidvoelkel codecentric Software Craft Meetup Munich David Völkel XP Days Germany 09.11.2018 #TDD Disclaimer! "It's the small steps

Mehr

Fabian Schmengler Pragmatisches Unit Testing. Meet Magento DE 2015

Fabian Schmengler Pragmatisches Unit Testing. Meet Magento DE 2015 Fabian Schmengler Pragmatisches Unit Testing Meet Magento DE 2015 1 Agenda Grundlagen: Warum automatisierte Tests? Tests und TDD mit Magento: Überblick und Beispiel Ausblick auf Magento 2 2 Warum Automatisiertes

Mehr

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 1 185.A01 OOP Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 2 OOP Vererbung versus Delegation class A { public void x() { z();

Mehr

Statt Banaware Java GUI Testautomatisierung

Statt Banaware Java GUI Testautomatisierung Statt Banaware Java GUI Testautomatisierung Martin Moser Quality First Software GmbH qfs@qfs.de Tel: +49 8171 386480 Überblick Quality First Software GmbH Warum Testen? GUI Testautomatisierung Demo QF-Test

Mehr

TDLCR Test Driven Legacy Code Refactoring

TDLCR Test Driven Legacy Code Refactoring TDLCR JUG Hannover 15.03.2017 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Über mich Falk Sippach (@sippsack) Trainer, Berater, Entwickler Co-Organisator

Mehr

SASUnit in der Praxis: Aufbau eines Sicherheitsnetzes für angstfreie Änderungen an SAS Programmen

SASUnit in der Praxis: Aufbau eines Sicherheitsnetzes für angstfreie Änderungen an SAS Programmen SASUnit in der Praxis: Aufbau eines Sicherheitsnetzes für angstfreie Änderungen an SAS Programmen KSFE 2016 in Greifswald 03.03.2016 Johannes Lang HMS Analytical Software 1 HMS Analytical Software GmbH

Mehr

Effektives Arbeiten mit Legacy Code

Effektives Arbeiten mit Legacy Code Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software von Michael C. Feathers 1. Auflage Effektives Arbeiten mit Legacy Code Feathers schnell und portofrei erhältlich bei beck-shop.de

Mehr

Automatisierte Akzeptanztests und TDD für ios

Automatisierte Akzeptanztests und TDD für ios Automatisierte Akzeptanztests und TDD für ios Sven Günther - it-agile GmbH User Storys Als möchte ich damit Woher kommen die Details? User Story Woher kommen die

Mehr

Testgesteuert Entwickeln mit JUnit 4

Testgesteuert Entwickeln mit JUnit 4 Testgesteuert Entwickeln mit JUnit 4 Tests nebenbei automatisieren Christoph Knabe Beuth-Hochschule für Technik Berlin Testgesteuert Entwickeln mit JUnit4, Christoph Knabe 2002, BHT Berlin, FB VI, 2016-10-20,

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

Agilisierung von Testsystemen

Agilisierung von Testsystemen Agilisierung von Testsystemen Von der Eistüte zur Testpyramide ObjektForum Stuttgart, 15.09.2014 Daniel Knapp 2 Typische Probleme in historisch gewachsenen Systemlandschaften Ausgedehnte QS- und Stabilisierungsphasen

Mehr

Testbarkeit im Entwicklungsprozess

Testbarkeit im Entwicklungsprozess Testbarkeit im Entwicklungsprozess TAE-Kolloquium Testen im System- und Software-Lifecycle 30. November 2005 Dr. Stefan Jungmayr Teradyne Diagnostic Solutions Sprecher des GI-Arbeitskreises Testen objektorientierter

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

LavA OS: Ein Betriebssystem für konfigurierbare MPSoCs

LavA OS: Ein Betriebssystem für konfigurierbare MPSoCs LavA OS: Ein Betriebssystem für konfigurierbare MPSoCs Diplomarbeit Abschlussvortrag Stephan Vogt stephan.vogt@cs.uni-dortmund.de 1 Inhalt Einleitung Wiederverwendung von BS Arbeiten an CiAO Kommunikation

Mehr

Effizientes und effektives Testen von Embedded SW mit Google Test. Michael Bernhard

Effizientes und effektives Testen von Embedded SW mit Google Test. Michael Bernhard Effizientes und effektives Testen von Embedded SW mit Google Test Michael Bernhard 1 Agenda Warum testen? Wie testen? Google Test und Google Mock Toolintegration Schlussfolgerung 2 Die Norm fordert es

Mehr

Technische Schulden in Architekturen erkennen und beseitigen

Technische Schulden in Architekturen erkennen und beseitigen Technische Schulden in Architekturen erkennen und beseitigen Dr. Carola Lilienthal Carola.Lilienthal@wps.de, @cairolali www.wps.de //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG Business-Software, die

Mehr

SEMINARPROGRAMM APPLIED ABAP OBJECTS TRANSFORMING TECHNICAL DEBT TDD WITH ABAP CLEAN CODE ABAP DESIGN PATTERNS WITH ABAP SAP POWER DAYS MAJER TRAINING

SEMINARPROGRAMM APPLIED ABAP OBJECTS TRANSFORMING TECHNICAL DEBT TDD WITH ABAP CLEAN CODE ABAP DESIGN PATTERNS WITH ABAP SAP POWER DAYS MAJER TRAINING 2019 SEMINARPROGRAMM APPLIED ABAP OBJECTS TRANSFORMING TECHNICAL DEBT TDD WITH ABAP CLEAN CODE ABAP DESIGN PATTERNS WITH ABAP SAP POWER DAYS MAJER TRAINING WER WIR SIND Herzlich Willkommen zum Majer Training

Mehr

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Mocking Libraries Shootout

Mocking Libraries Shootout Mocking Libraries Shootout Warum ist Mocking interessant? Ermöglicht Tests ohne echte Testumgebung Schnelle Tests durch gute Test-Isolation Kontrolle des indirekten Inputs Simulation von Fehlern Überprüfung

Mehr

Viele Entwickler finden Testen langweilig.

Viele Entwickler finden Testen langweilig. 1 Viele Entwickler finden Testen langweilig. 2 Das galt auch für mich und meine Kollegen. 3 Programmierung kreativ Testen wiederholend, langweilig, eintönig 4 Programmierung konstruktiv, neuen Nutzen schaffen

Mehr

ENTWURFSPRINZIPIEN DIE SOLID-PRINZIPIEN NACH ROBERT C. MARTIN 1 / 21. Markus Just Wissenschaftliche Vertiefung

ENTWURFSPRINZIPIEN DIE SOLID-PRINZIPIEN NACH ROBERT C. MARTIN 1 / 21. Markus Just Wissenschaftliche Vertiefung ENTWURFSPRINZIPIEN DIE SOLID-PRINZIPIEN NACH ROBERT C. MARTIN Markus Just 22.01.2016 Wissenschaftliche Vertiefung 1 / 21 Agenda 1) Einführung 2) SOLID- nach Robert C. Martin 3) Fazit 2 / 21 Mängel von

Mehr

Inhalt. TEIL I ABAP gestern, heute und morgen. 1 Qualität, Performance und Sicherheit in der aktuellen Softwareentwicklung... 23

Inhalt. TEIL I ABAP gestern, heute und morgen. 1 Qualität, Performance und Sicherheit in der aktuellen Softwareentwicklung... 23 Einleitung... 15 TEIL I ABAP gestern, heute und morgen 1 Qualität, Performance und Sicherheit in der aktuellen Softwareentwicklung... 23 1.1 Motivation... 24 1.1.1 Dimensionen von Qualität... 25 1.1.2

Mehr

Einblicke ins Testen und die testgetriebene Entwicklung (TDD) in wissenschaftlicher Softwareentwicklung

Einblicke ins Testen und die testgetriebene Entwicklung (TDD) in wissenschaftlicher Softwareentwicklung Einblicke ins Testen und die testgetriebene Entwicklung (TDD) in wissenschaftlicher Softwareentwicklung Im Seminar Softwareentwicklung in der Wissenschaft 2015 Hamburg 5. Mai 2015 Marek.Jacob@studium.uni-hamburg.de

Mehr

Agile Methoden. David Tanzer. Oliver Szymanski

Agile Methoden. David Tanzer. Oliver Szymanski Agile Methoden David Tanzer Oliver Szymanski Ziel von Softwareentwicklung Anforderungen zuverlässig und effizient in lauffähige Software verwandeln. Ziel von Softwareentwicklung Bedürfnisse des Kunden

Mehr

Langlebige Softwarearchitekturen der Weg aus den technischen Schulden

Langlebige Softwarearchitekturen der Weg aus den technischen Schulden Langlebige Softwarearchitekturen der Weg aus den technischen Schulden Dr. Carola Lilienthal, cl@wps.de, @cairolali www.wps.de //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG 1 Business-Software, die Spaß

Mehr

Build-Pipeline mit Jenkins

Build-Pipeline mit Jenkins JUG Augsburg 24.10.2013 Seite 1 Wer sind wir? Agiler Architekt und Entwickler Eigenes Produkt mit kompletter Pipeline / CD aktuell: Architekt / Entwickler in einem großen Entwicklungsprojekt im Automotiv

Mehr

Wahlpflichtfach Design Pattern

Wahlpflichtfach Design Pattern Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik miwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338

Mehr

Continuous Integration mit VSTS Dieter Rüetschi

Continuous Integration mit VSTS Dieter Rüetschi Continuous Integration mit VSTS Dieter Rüetschi (ruetschi@ability-solutions.ch) 1 2 Warum ist Continuous Delivery so wichtig? Geschwindigkeit schnell auf dem Markt Unterstützung und Teil des ALM 3 DevOps

Mehr

Seminarprogramm 2015. Majer Training

Seminarprogramm 2015. Majer Training Seminarprogramm 2015 ABAP Objects Refresher Test-Driven Development mit ABAP OO-Praktiken & Design Pattern Agiles Zeitmanagement Building High Performance Teams Inhouse-Seminare Webinare Majer Training

Mehr

Die Macht, die uns umgibt. Design Prinzipien. Schneller und besser Software entwickeln. 2012 Jörg Bächtiger

Die Macht, die uns umgibt. Design Prinzipien. Schneller und besser Software entwickeln. 2012 Jörg Bächtiger Die Macht, die uns umgibt Design Prinzipien Schneller und besser Software entwickeln 2012 Jörg Bächtiger Joerg.Baechtiger@Abraxas.ch http://www.xing.com/profile/joerg_baechtiger Übersicht geben Zusammenhänge

Mehr

Stabile GUI-Tests durch modulare Testarchitektur. Martin Moser

Stabile GUI-Tests durch modulare Testarchitektur. Martin Moser Stabile GUI-Tests durch modulare Testarchitektur Martin Moser qfs@qfs.de +49 8174 386 48 0 Überblick Quality First Software GmbH Testziele GUI Testautomatisierung 2 / 21 Quality First Software GmbH Gegründet

Mehr

Code verifizieren mittels

Code verifizieren mittels Code verifizieren mittels Unit- und Regressionstests Institut für Numerische Simulation, Universität Bonn Seminarreihe Technische Numerik Wozu sollen gut sein? Was für Testarten gibt es? Wie funktionieren

Mehr

Üble Gerüche aus der Entwicklerküche. Wann fängt Programmcode an (uns) zu stinken?

Üble Gerüche aus der Entwicklerküche. Wann fängt Programmcode an (uns) zu stinken? Üble Gerüche aus der Entwicklerküche Wann fängt Programmcode an (uns) zu stinken? Ziel dieses Vortrags Sie vermeiden üble Gerüche aus der Entwicklerküche Sie schlafen Nachts wieder ruhiger Sie kennen 5

Mehr

GI Fachgruppentreffen RE 2015

GI Fachgruppentreffen RE 2015 GI Fachgruppentreffen RE 2015 Miteinander reden statt gegeneinander schreiben Lagerfeuer Bundenbach Schmidtburg 2003 von Tiger St.Georg - selbst fotografiert von Tiger St.Georg. Susanne Mühlbauer 1 November

Mehr

Unit Tests in der Testgetriebenen Entwicklung

Unit Tests in der Testgetriebenen Entwicklung Unit Tests in der Testgetriebenen Entwicklung Reduzierung des Testanteils am Gesamtsoftwareentwicklungsaufwand -- neue Strategien und Tools -- Hauptseminar Systemorientierte Informatik Christian Krauß

Mehr

Software Technologie Refactoring. Nutzungsverhalten der Entwickler bzgl. des Refactoring. Nguyen Hung

Software Technologie Refactoring. Nutzungsverhalten der Entwickler bzgl. des Refactoring. Nguyen Hung Software Technologie Refactoring Thema 1.1 Nutzungsverhalten der Entwickler bzgl. des Refactoring Nguyen Hung Überblick Refactoring Ziele des Refactoring Refactoring bei Entwicklern Nutzungsverhalten Fragen

Mehr

Legacy Code meistern in x einfachen Schritten

Legacy Code meistern in x einfachen Schritten Legacy Code meistern in x einfachen Schritten Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Abstract In einer idealen Welt würden wir nur "neuen" Code

Mehr