SlideShare ist ein Scribd-Unternehmen logo
1 von 54
TDD mit ABAP Units
Webinar, 23.09.2016, 10:00 Uhr
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
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
Cadaxo GmbH TDD mit ABAP Units
TDD mit ABAP Units
 Tests
 Unit Tests
 ABAP Units + Demo
 TDD
 TDD mit ABAP Units – Demo
Agenda
TDD mit ABAP Units
Tests
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
TDD mit ABAP Units
Es geht ums Geld
Fehlerhafter/schlechter Code kostet!
Testen, Testen, Testen TDD mit ABAP Units
UI Tests
Akzeptanztests
Integration Tests
Entwickler Tests
Der traditionelle Entwicklertest TDD mit ABAP Units
 Traditioneller Test eines ABAP Entwicklers
◦ /H, Debugging
◦ SE80, SE24, SE37, SE38, Workbench … und dann Testen
◦ Testprogramme
Der traditionelle Entwicklertest TDD mit ABAP Units
 Nachteile der traditionellen Vorgehensweise
◦ Zeitaufwendig
◦ Nicht reproduzierbar
◦ Unkoordiniert
◦ Unprofessionell
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
TDD mit ABAP Units
Unit Tests
Umfrage
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
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
Unit Tests TDD mit ABAP Units
 ABAP Units
◦ Sind erstmals mit 6.40 aufgetaucht
◦ 100% Integration in die ABAP Entwicklungsumgebungen
◦ Fortlaufende Weiterentwicklung durch SAP
Live Demo – ABAP Unit Test TDD mit ABAP Units
Live Demo
Wir erstellen einen ABAP Unit Test
Eigenschaften guter Unit Tests TDD mit ABAP Units
Vertrauenswürdig
Wartbar
Lesbar
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
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
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
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
TDD mit ABAP Units
TDD
Umfrage
Traditionelles Projekt (Wasserfallmodell) TDD mit ABAP Units
Requirem.
Design
Entwickeln
Testen
Bugfixing
Support
GoLive
Planen, Analyse, Design, … Entwickeln T&B GoLive Support
Testing & Bugfixing
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
Agile Softwareentwicklung TDD mit ABAP Units
Jetzt sind wir alle agil!
früher jetzt
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
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 …
Agile Softwareentwicklung TDD mit ABAP Units
Scrum
Kanban
eXtreme Programming
TDD mit ABAP Units
TDD mit ABAP Units
Was haben agile Projekte jetzt mit Unit Tests
zu tun?
TDD Zyklus TDD mit ABAP Units
Development Test
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
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
Traditioneller Entwicklungsprozess TDD mit ABAP Units
Start
Test erstellen
Produktionscode
implementieren
Test ausführen
 Traditioneller
Entwicklungsprozess
Testgetriebener Entwicklungsprozess TDD mit ABAP Units
Start
Test erstellen
Test ausführen
Produktionscode
implementieren
Test ausführen
Refactoring
 Testgetriebener
Entwicklungsprozess
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
Live Demo – ABAP Unit Test TDD mit ABAP Units
Live Demo
Jetzt erleben wir TDD
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
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
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)
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
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
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
TDD mit ABAP Units
TDD üben mit
Waza, Randori
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.
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
◦ …
Test-Driven Development - Bücher TDD mit ABAP Units
ISBN 978-0321146533 ISBN 978-3826697128
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/
Nächste Webinare Clean Code in ABAP
https://www.eventbrite.com/e/abap-750-releaseabhangige-anderungen-tickets-28011248398
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
Vergangene Webinare
http://www.cadaxo.com/blog/
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/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
http://com.slideshare.net/cadaxogmbh
https://twitter.com/cadaxo
https://www.linkedin.com/company/cadaxo-gmbh
http://www.youtube.com/CadaxoGmbH
https://www.facebook.com/CadaxoGmbH
https://www.xing.com/companies/cadaxogmbhCadaxo GmbH
Stubenring 18/5a| 1010 Vienna, Austria
office@cadaxo.com
www.cadaxo.com

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (10)

Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAP
 
Effizienz im Testen von SAP Anwendungen durch Testautomation
Effizienz im Testen von SAP Anwendungen durch TestautomationEffizienz im Testen von SAP Anwendungen durch Testautomation
Effizienz im Testen von SAP Anwendungen durch Testautomation
 
Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und Microsoft
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 Releaseinformationen
 
Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54
 
Selenium oder CBTA - Automatisierter Test von Weboberflächen im SAP Umfeld
Selenium oder CBTA - Automatisierter Test von Weboberflächen im SAP UmfeldSelenium oder CBTA - Automatisierter Test von Weboberflächen im SAP Umfeld
Selenium oder CBTA - Automatisierter Test von Weboberflächen im SAP Umfeld
 
eCATT & OpenSource - Automatisierter Test in heterogenen Systemlandschaften
eCATT & OpenSource - Automatisierter Test in heterogenen SystemlandschafteneCATT & OpenSource - Automatisierter Test in heterogenen Systemlandschaften
eCATT & OpenSource - Automatisierter Test in heterogenen Systemlandschaften
 
Webinar ABAP Managed Database Procedures
Webinar ABAP Managed Database ProceduresWebinar ABAP Managed Database Procedures
Webinar ABAP Managed Database Procedures
 
W-JAX 2013 Spring Batch - Performance und Skalierbarkeit
W-JAX 2013 Spring Batch - Performance und SkalierbarkeitW-JAX 2013 Spring Batch - Performance und Skalierbarkeit
W-JAX 2013 Spring Batch - Performance und Skalierbarkeit
 
.NET zu .NET Core
.NET zu .NET Core.NET zu .NET Core
.NET zu .NET Core
 

Andere mochten auch

Abap query
Abap queryAbap query
Abap query
brtkow
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
Cadaxo GmbH
 
Comandos e funções em abap
Comandos e funções em abapComandos e funções em abap
Comandos e funções em abap
alienscorporation
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standards
surendra1579
 
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.docManikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
manikanta sai kumar karri
 

Andere mochten auch (18)

Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - Overview
 
ABAP Test & Troubleshooting @SITMuc 2013
ABAP Test & Troubleshooting @SITMuc 2013ABAP Test & Troubleshooting @SITMuc 2013
ABAP Test & Troubleshooting @SITMuc 2013
 
ITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP FoundationsITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP Foundations
 
Analista programador SAP ABAP IV
Analista programador SAP ABAP IVAnalista programador SAP ABAP IV
Analista programador SAP ABAP IV
 
Abap query
Abap queryAbap query
Abap query
 
Qué es abap
Qué es abapQué es abap
Qué es abap
 
Web dynpro for abap
Web dynpro for abapWeb dynpro for abap
Web dynpro for abap
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
 
Comandos e funções em abap
Comandos e funções em abapComandos e funções em abap
Comandos e funções em abap
 
Icones - ABAP
Icones - ABAPIcones - ABAP
Icones - ABAP
 
View - Tutorial ABAP
View - Tutorial ABAPView - Tutorial ABAP
View - Tutorial ABAP
 
Sap abap Q&A
Sap abap Q&A Sap abap Q&A
Sap abap Q&A
 
Funções - Tutorial ABAP
Funções - Tutorial ABAPFunções - Tutorial ABAP
Funções - Tutorial ABAP
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standards
 
Basic abap oo
Basic abap ooBasic abap oo
Basic abap oo
 
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.docManikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
 

Ähnlich wie TDD mit ABAP Units

Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Christian Güdemann
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
Christian Baranowski
 
XING Agile QA
XING Agile QAXING Agile QA
XING Agile QA
XING AG
 

Ähnlich wie TDD mit ABAP Units (20)

Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPages
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
 
Beyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and SpeedBeyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and Speed
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 
Refactoring: Mythen & Fakten
Refactoring: Mythen & FaktenRefactoring: Mythen & Fakten
Refactoring: Mythen & Fakten
 
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)
 
Ich will agil testen! was muss ich können iqnite 2014 - verison 2.0
Ich will agil testen! was muss ich können   iqnite 2014 - verison 2.0Ich will agil testen! was muss ich können   iqnite 2014 - verison 2.0
Ich will agil testen! was muss ich können iqnite 2014 - verison 2.0
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
Regressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SERegressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SE
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Next Level Unit Testing
Next Level Unit TestingNext Level Unit Testing
Next Level Unit Testing
 
Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performance
 
Referat: Scrum Rocks – Testing Sucks?! (reloaded)
Referat: Scrum Rocks – Testing Sucks?! (reloaded)Referat: Scrum Rocks – Testing Sucks?! (reloaded)
Referat: Scrum Rocks – Testing Sucks?! (reloaded)
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
XING Agile QA
XING Agile QAXING Agile QA
XING Agile QA
 
Rückwärts denken vorwärts handeln - Requirements Reverse Engineering bei Syst...
Rückwärts denken vorwärts handeln - Requirements Reverse Engineering bei Syst...Rückwärts denken vorwärts handeln - Requirements Reverse Engineering bei Syst...
Rückwärts denken vorwärts handeln - Requirements Reverse Engineering bei Syst...
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
Wann lohnt sich Software Testautomatisierung?
Wann lohnt sich Software Testautomatisierung?Wann lohnt sich Software Testautomatisierung?
Wann lohnt sich Software Testautomatisierung?
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 

TDD mit ABAP Units

  • 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
  • 4. Cadaxo GmbH TDD mit ABAP Units
  • 5. TDD mit ABAP Units  Tests  Unit Tests  ABAP Units + Demo  TDD  TDD mit ABAP Units – Demo Agenda
  • 6. TDD mit ABAP Units Tests
  • 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
  • 13. TDD mit ABAP Units Unit Tests Umfrage
  • 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
  • 18. Eigenschaften guter Unit Tests TDD mit ABAP Units Vertrauenswürdig Wartbar Lesbar
  • 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
  • 21. 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
  • 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
  • 23. TDD mit ABAP Units TDD Umfrage
  • 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
  • 26. Agile Softwareentwicklung TDD mit ABAP Units Jetzt sind wir alle agil! früher jetzt
  • 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 …
  • 29. Agile Softwareentwicklung TDD mit ABAP Units Scrum Kanban eXtreme Programming
  • 30. TDD mit ABAP Units
  • 31. TDD mit ABAP Units Was haben agile Projekte jetzt mit Unit Tests zu tun?
  • 32. TDD Zyklus TDD mit ABAP Units Development Test
  • 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
  • 45. TDD mit ABAP Units TDD üben mit Waza, Randori
  • 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 ◦ …
  • 48. Test-Driven Development - Bücher TDD mit ABAP Units ISBN 978-0321146533 ISBN 978-3826697128
  • 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

Hinweis der Redaktion

  1. 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.
  2. Setup/Teardown nur für Initialisierungen bzw. zum Zusammenräumen verwenden Eventuell von deren Verwendung absehen und Setup/Teardown in die Testmethode integrieren
  3. 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
  4. 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.