1. TDD mit ABAP Units
Webinar, 23.09.2016, 10:00 Uhr
2. Föß TDD mit ABAP Units
Johann Fößleitner
Senior Consultant at Cadaxo
eMail: johann.foessleitner@cadaxo.com
Twitter: @foessleitnerj
Beratungsschwerpunkte
• Konzeption & Management von SAP Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• Clean Code
• SAP Fiori/SAPUI5
3. Domi TDD mit ABAP Units
Domi Bigl
Senior Consultant at Cadaxo
eMail: dominik.bigl@cadaxo.com
Twitter: @DomiBiglSAP
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• ABAP Units
• SAP Fiori, SAP UI5
7. 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
8. TDD mit ABAP Units
Es geht ums Geld
Fehlerhafter/schlechter Code kostet!
9. Testen, Testen, Testen TDD mit ABAP Units
UI Tests
Akzeptanztests
Integration Tests
Entwickler Tests
10. Der traditionelle Entwicklertest TDD mit ABAP Units
Traditioneller Test eines ABAP Entwicklers
◦ /H, Debugging
◦ SE80, SE24, SE37, SE38, Workbench … und dann Testen
◦ Testprogramme
11. Der traditionelle Entwicklertest TDD mit ABAP Units
Nachteile der traditionellen Vorgehensweise
◦ Zeitaufwendig
◦ Nicht reproduzierbar
◦ Unkoordiniert
◦ Unprofessionell
12. 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
14. 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
15. 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
16. Unit Tests TDD mit ABAP Units
ABAP Units
◦ Sind erstmals mit 6.40 aufgetaucht
◦ 100% Integration in die ABAP Entwicklungsumgebungen
◦ Fortlaufende Weiterentwicklung durch SAP
17. Live Demo – ABAP Unit Test TDD mit ABAP Units
Live Demo
Wir erstellen einen ABAP Unit Test
19. 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
20. 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
22. 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
24. Traditionelles Projekt (Wasserfallmodell) TDD mit ABAP Units
Requirem.
Design
Entwickeln
Testen
Bugfixing
Support
GoLive
Planen, Analyse, Design, … Entwickeln T&B GoLive Support
Testing & Bugfixing
25. 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
27. 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
28. Agile Werte / Agiles Manifest TDD mit ABAP Units
Individuals and interactions
over processes and tools
Working software
over comprehensive documentation
Customer collaboration
over contract negotation
Responding to change
over following a plan
Februar 2001: Robert C. Martin , Kent Beck, Ward Cunningham, Ron Jeffries, Martin Fowler …
33. 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
34. 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
35. Traditioneller Entwicklungsprozess TDD mit ABAP Units
Start
Test erstellen
Produktionscode
implementieren
Test ausführen
Traditioneller
Entwicklungsprozess
36. Testgetriebener Entwicklungsprozess TDD mit ABAP Units
Start
Test erstellen
Test ausführen
Produktionscode
implementieren
Test ausführen
Refactoring
Testgetriebener
Entwicklungsprozess
37. 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
38. Live Demo – ABAP Unit Test TDD mit ABAP Units
Live Demo
Jetzt erleben wir TDD
39. 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
40. 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
41. 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)
42. 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
43. 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
44. 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
46. 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.
47. 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
◦ …
49. 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/
50. Nächste Webinare Clean Code in ABAP
https://www.eventbrite.com/e/abap-750-releaseabhangige-anderungen-tickets-28011248398
51. 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
53. If you want to stay in touch …
https://twitter.com/domibiglsap
https://www.linkedin.com/in/dominik-bigl-9b98b68b
https://www.xing.com/profile/dominik_bigl
dominik.bigl@cadaxo.com
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
johann.foessleitner@cadaxo.com
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet!
Manchmal, haben wir das Glück ein Projekt auf einer grünen Wiese hin zu realisieren
Business wünscht sich dies und das und wir machen und hacken und alle sind 100% happy!
Business glaubt bereits, wir könnten mit der Software die Weltherrschaft erringen
Business wünscht, wir hacken done! – Super!
Dann vergehen ein paar Monate,
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Setup/Teardown nur für Initialisierungen bzw. zum Zusammenräumen verwenden
Eventuell von deren Verwendung absehen und Setup/Teardown in die Testmethode integrieren
Kent Beck – TDD & eXtreme Programming
Robert C. Martin – Clean Code
Ward Cunningham – eXtreme Programming
Ron Jeffries – eXtreme Programming
Menschen und Interaktionen stehen über Prozessen und Werkzeugen
Funktionierende Software steht über einer umfassenden Dokumentation
Zusammenarbeit mit dem Kunden steht über der Vertragsverhandlung
Reagieren auf Veränderung steht über dem Befolgen eines Plans
eXtreme Programming hat seinen Ursprung im C3 Projekt: Chrysler Consolidated Compensation aus dem Jahre 1997 und 1998. Als das Projekt zu scheitern drohte, hat Chrylser Ken Beck, Ron Jeffries und ein paar weitere Personen engagiert um das Projekt zu retten. Ken Beck die dort entstandenen Ideen in einem Buch zusammengefasst und publiziert.