54
TDD mit ABAP Units Webinar, 23.09.2016, 10:00 Uhr

TDD mit ABAP Units

Embed Size (px)

Citation preview

Page 1: TDD mit ABAP Units

TDD mit ABAP UnitsWebinar, 23.09.2016, 10:00 Uhr

Page 2: TDD mit ABAP Units

Föß TDD mit ABAP Units

Johann FößleitnerSenior Consultant at CadaxoeMail: [email protected]: @foessleitnerj

Beratungsschwerpunkte• Konzeption & Management von SAP

Entwicklungsprojekten• Qualitymanagement & Performanceoptimierung• Clean Code• SAP Fiori/SAPUI5

Page 3: TDD mit ABAP Units

Domi TDD mit ABAP Units

Domi BiglSenior Consultant at CadaxoeMail: [email protected]: @DomiBiglSAP

Beratungsschwerpunkte• Konzeption & Management von Entwicklungsprojekten• Qualitymanagement & Performanceoptimierung• ABAP Units• SAP Fiori, SAP UI5

Page 4: TDD mit ABAP Units

Cadaxo GmbH TDD mit ABAP Units

Page 5: TDD mit ABAP Units

TDD mit ABAP Units

TestsUnit TestsABAP Units + DemoTDDTDD mit ABAP Units – Demo

Agenda

Page 6: TDD mit ABAP Units

TDD mit ABAP Units

Tests

Page 7: TDD mit ABAP Units

TDD mit ABAP Units

4. Juni 1996

Explosion Ariane 5◦ 36,7 Sekunden nach dem Start◦ Ursache

Arithmetischer Überlauf bei der Umwandlung einer 64-Bit-Gleitkomma-Zahl in eine 16-Bit-Ganzzahl – der Wert der horizontalen Geschwindigkeit.

Lenksystem brach zusammen und löste eine Selbstzerstörung aus

◦ Hintergrund Software stammt von Ariane 4. Ariane 5 flog

jedoch schneller Schaden ca. 500 Millionen Dollar für Rakete und 4

Satelliten◦ https://www.youtube.com/watch?v=PK_yguLapgA

Page 8: TDD mit ABAP Units

TDD mit ABAP Units

Es geht ums Geld

Fehlerhafter/schlechter Code kostet!

Page 9: TDD mit ABAP Units

Testen, Testen, Testen TDD mit ABAP Units

UI Tests

Akzeptanztests

Integration Tests

Entwickler Tests

Page 10: TDD mit ABAP Units

Der traditionelle Entwicklertest TDD mit ABAP Units

Traditioneller Test eines ABAP Entwicklers◦ /H, Debugging◦ SE80, SE24, SE37, SE38, Workbench … und dann Testen◦ Testprogramme

Page 11: TDD mit ABAP Units

Der traditionelle Entwicklertest TDD mit ABAP Units

Nachteile der traditionellen Vorgehensweise◦ Zeitaufwendig◦ Nicht reproduzierbar◦ Unkoordiniert◦ Unprofessionell

Page 12: TDD mit ABAP Units

Der professionelle Entwickler TDD mit ABAP Units

Ein professioneller Entwickler◦ Sorgt dafür, dass nur funktionierende bzw. ordentlich

getestete Software an die Testteams übergeben wird

Page 13: TDD mit ABAP Units

TDD mit ABAP Units

Unit TestsUmfrage

Page 14: TDD mit ABAP Units

Unit Tests TDD mit ABAP Units

Unit Tests bzw. xUnit Frameworks◦ Mit Unit Tests werden einzelne Units (Methoden,

Funktionbausteine) automatisiert getestet◦ Ziel der Unit Tests ist die Isolation aller Parts eines

Programmes und die Prüfung ob alles ordnungsgemäß läuft

Page 15: TDD mit ABAP Units

Unit Tests TDD mit ABAP Units

Ziel von Unit Tests◦ Probleme/Bugs im Developmentprozess so früh wie

möglich entdecken◦ Probleme/Bugs nach Upgrades etc. rasch entdecken◦ Reduktion langer Debugging Sessions◦ Reduziert die „Hemmschwelle“ schlechtes Coding zu

optmieren -> Clean Code!

ABAP Unit

Page 16: TDD mit ABAP Units

Unit Tests TDD mit ABAP Units

ABAP Units◦ Sind erstmals mit 6.40 aufgetaucht◦ 100% Integration in die ABAP Entwicklungsumgebungen◦ Fortlaufende Weiterentwicklung durch SAP

Page 17: TDD mit ABAP Units

Live Demo – ABAP Unit Test TDD mit ABAP Units

Live DemoWir erstellen einen ABAP Unit Test

Page 18: TDD mit ABAP Units

Eigenschaften guter Unit Tests TDD mit ABAP Units

Vertrauenswürdig

Wartbar

Lesbar

Page 19: TDD mit ABAP Units

Lesbare Tests

Lesbare Tests◦ Unlesbare Tests sind (fast) völlig

wertlos◦ Tests werden von anderen Entwicklern

gelesen◦ Überlegte Namensgebung von Unit Tests,

Variablen, … ◦ Clean Code

TDD mit ABAP Units

ISBN 978-3-8266-5548-7

Page 20: TDD mit ABAP Units

Wartbare Tests

Wartbare Tests◦ Unwartbare Tests sind ein Albtraum, können Projekte

negativ beeinflussen◦ Entwickler werden Tests, deren Anpassungen zu lange

dauern, einfach nicht mehr warten bzw. aktualisieren◦ Keine Logik in Unit Tests aufnehmen

Ein IF oder CASE deutet schon auf Logik hin

TDD mit ABAP Units

Page 21: TDD mit ABAP Units

Vertrauenswürdige Tests

Vertrauenswürdige Tests◦ Ein Test ist dann vertrauenswürdig, wenn er uns das

Gefühlt gibt zu wissen was vor sich geht

TDD mit ABAP Units

Page 22: TDD mit ABAP Units

Unit Tests TDD mit ABAP Units

Unit Tests – FIRST Prinzip◦ Fast – Tests sollen schnell sein◦ Independent – Tests sollen nicht von einander abhängen◦ Repeatable – Jede Umgebung (Dev, QA, Prod, … )◦ Self-Validating – der Test wird bestanden oder er scheitert◦ Timely – Tests müssen rechtzeitig geschrieben werden

Page 23: TDD mit ABAP Units

TDD mit ABAP Units

TDDUmfrage

Page 24: TDD mit ABAP Units

Traditionelles Projekt (Wasserfallmodell) TDD mit ABAP Units

Requirem.Design

EntwickelnTesten

Bugfixing

SupportGoLive

Planen, Analyse, Design, … Entwickeln T&B GoLive Support

Testing & Bugfixing

Page 25: TDD mit ABAP Units

Wasserfallmodell

Probleme des Wasserfallmodells◦ Auf neue bzw. geänderte Anforderungen kann nur

schlechte oder gar nicht reagiert werden◦ Phasen können oft nicht so klar getrennt werden◦ Rückschritte zur vorigen Phase oft nicht vermeidbar◦ Fehler werden unter Umständen erst spät erkannt und

können nur durch großen Aufwand behoben werden

TDD mit ABAP Units

Page 26: TDD mit ABAP Units

Agile Softwareentwicklung TDD mit ABAP Units

Jetzt sind wir alle agil!

früher jetzt

Page 27: TDD mit ABAP Units

Agile Softwareentwicklung

Eigenschaften von agiler Softwareentwicklung◦ Anforderung sind unvollständig oder ändern sich◦ Iteratives Vorgehen, inkrementelle Entwicklung◦ Regelmäßige Reflexion◦ Frühzeitige Ergebnisse◦ Regelmäßiges Testen

TDD mit ABAP Units

Page 28: TDD mit ABAP Units

Agile Werte / Agiles Manifest TDD mit ABAP Units

Individuals and interactionsover processes and tools

Working softwareover comprehensive documentation

Customer collaborationover contract negotation

Responding to changeover following a plan

Februar 2001: Robert C. Martin , Kent Beck, Ward Cunningham, Ron Jeffries, Martin Fowler …

Page 29: TDD mit ABAP Units

Agile Softwareentwicklung TDD mit ABAP Units

Scrum

Kanban

eXtreme Programming

Page 30: TDD mit ABAP Units

TDD mit ABAP Units

Page 31: TDD mit ABAP Units

TDD mit ABAP Units

Was haben agile Projekte jetzt mit Unit Tests zu tun?

Page 32: TDD mit ABAP Units

TDD Zyklus TDD mit ABAP Units

Development Test

Page 33: TDD mit ABAP Units

TDD Zyklus TDD mit ABAP Units

Test Development

Refactoring

Unit Test erstellen Vergewissere dich, dass

der Test fehlschlägt

Entwickle soviel Code, dass der Test nicht mehr fehlschlägt

Code optimieren

Page 34: TDD mit ABAP Units

TDD – Test-driven development

TDD – Test-driven development◦ Bei TDD geht es ganz einfach darum, dass

automatisierte Tests vor der Code Implementierung erstellt werden.

◦ TDD ist ein wesentlicher Teil von Extreme Programming (XP)

◦ TDD setzt auf kurze Iterationszyklen zwischen Tests und Implementierung

TDD mit ABAP Units

Page 35: TDD mit ABAP Units

Traditioneller Entwicklungsprozess TDD mit ABAP Units

Start

Test erstellen

Produktionscode implementieren

Test ausführen

Traditioneller Entwicklungsprozess

Page 36: TDD mit ABAP Units

Testgetriebener Entwicklungsprozess TDD mit ABAP Units

Start

Test erstellen

Test ausführen

Produktionscode implementieren

Test ausführen

Refactoring

TestgetriebenerEntwicklungsprozess

Page 37: TDD mit ABAP Units

TDD mit ABAP UnitsRefactoring

Refactoring◦ Optimieren des Codings ohne die Funktionalität zu

ändern◦ Coding lesbarer gestalten, Code-Dupletten bereinigen,

Methode „verkleinern“, … ◦ Robert C. Martin sagt: Wir „massieren“ unseren Code◦ Clean Code

Page 38: TDD mit ABAP Units

Live Demo – ABAP Unit Test TDD mit ABAP Units

Live DemoJetzt erleben wir TDD

Page 39: TDD mit ABAP Units

TDD mit ABAP Units

Erhöht sich der Aufwand durch TDD/Unit Tests?◦ Stimmt nicht◦ TDD bzw. Unit Tests verändern nur unsere Tests, die wir

– hoffentlich – auch bisher schon alle machen

Page 40: TDD mit ABAP Units

TDD mit ABAP Units

Unit Tests „verrotten“ mit der Zeit◦ Stimmt nicht!◦ Unit Tests sind Bestandteil der Entwicklungen, es liegt

ans diese aktuell zu halten

Page 41: TDD mit ABAP Units

TDD mit ABAP Units

Unit Tests sind in ABAP nicht sinnvoll einsetzbar◦ Stimmt nicht!◦ Wenn wir nach modernen Standards entwickeln (Clean

Code, OO, Entwurfsmuster, .. ), können Unit Tests wunderbar im ABAP Umfeld eingesetzt werden

◦ DB Zugriffe, WebServices Calls, … können beispielsweise über Interfaces abgebildet werden und damit durch Mockups ersetzt werden (trotzdem, DB Interaktionen sind natürlich ein Problem)

Page 42: TDD mit ABAP Units

TDD mit ABAP Units

Unit Tests sind in ABAP nicht sinnvoll einsetzbar◦ Stimmt nicht!◦ Wenn wir nach modernen Standards entwickeln (Clean

Code, OO, Entwurfsmuster, .. ), können Unit Tests wunderbar im ABAP Umfeld eingesetzt werden

Page 43: TDD mit ABAP Units

TDD mit ABAP Units

Bei User Interface, DB Zugriffen unbrauchbar◦ Stimmt nicht!◦ DB Zugriffe, WebServices Calls, … können

beispielsweise über Interfaces abgebildet werden und damit durch Mockups ersetzt werden trotzdem, DB Interaktionen sind natürlich ein Problem aber ….

◦ ABAP 7.50 - TEST-SEAM & TEST-INJECTION

Page 44: TDD mit ABAP Units

TDD mit ABAP Units

Kunden sind skeptisch (höhere Aufwände, … )◦ Unsere Kunden wollen sauberen, funktionierenden und

wartbaren Code. - Unit Tests gewährleisten dies◦ Es liegt an uns, dem Fachbereich bzw. den Kunden die

Vorteile aufzuzeigen und durch bessere Softwarequalität auch zu beweisen

Page 45: TDD mit ABAP Units

TDD mit ABAP Units

TDD üben mit Waza, Randori

Page 46: TDD mit ABAP Units

Waza – Paarweise üben TDD mit ABAP Units

Paarweise üben◦ Entwickler A schreibt einen ABAP Unit Test◦ Entwickler B implementiert die Methode, bis der Test

bestanden wird◦ Entwickler A kann für den Test z.B. auch min.

Geschwindigkeit oder den max. Speicherverbrauch vorgeben.

Page 47: TDD mit ABAP Units

Randoir – Übungen fürs Team TDD mit ABAP Units

Übungen für‘s Team◦ Editor wird an die Wand projiziert◦ Entwickler A schreibt einen ABAP Unit Test◦ Entwickler B implementiert die Methode, bis der Test

bestanden wird◦ Entwickler B schreibt einen ABAP Unit Test◦ Entwickler C implementiert die Methode, bis der Test

bestanden wird◦ …

Page 48: TDD mit ABAP Units

Test-Driven Development - Bücher TDD mit ABAP Units

ISBN 978-0321146533 ISBN 978-3826697128

Page 49: TDD mit ABAP Units

Weitere Infos TDD mit ABAP Units

Weitere Informationsquellen◦ https://sites.google.com/site/unclebobconsultingllc◦ https://de.wikipedia.org/wiki/Extreme_Programming◦ https://www.youtube.com/watch?v=QHnLmvDxGTY◦ http://clean-code-developer.de/

Page 50: TDD mit ABAP Units

Nächste Webinare Clean Code in ABAP

https://www.eventbrite.com/e/abap-750-releaseabhangige-anderungen-tickets-28011248398

Page 51: TDD mit ABAP Units

Workshop TDD mit ABAP Units

Intensiv Workshop◦Clean Code◦ABAP Units/TDD◦Ca. 3 - 4 Stunden◦Wien◦An einem Freitag◦Dezember 2016 oder Jänner 2017

?

Page 53: TDD mit ABAP Units

If you want to stay in touch …

https://twitter.com/domibiglsap https://www.linkedin.com/in/dominik-bigl-9b98b68b https://www.xing.com/profile/[email protected]

See you again!Thank you for participating!

https://twitter.com/foessleitnerj https://www.linkedin.com/in/johann-fößleitner-a9851b2a https://www.xing.com/profile/johann_foessleitner [email protected]

Page 54: TDD mit ABAP Units

http://com.slideshare.net/cadaxogmbh

https://twitter.com/cadaxo

https://www.linkedin.com/company/cadaxo-gmbh

http://www.youtube.com/CadaxoGmbHhttps://www.facebook.com/CadaxoGmbH

https://www.xing.com/companies/cadaxogmbhCadaxo GmbHStubenring 18/5a| 1010 Vienna, Austria

[email protected]