![Page 1: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/1.jpg)
Use this title slide only with an image
Test Code Design PatternWinfried Schwarzmann, SAP AGFebruary 19, 2014 Public
![Page 2: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/2.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 2Public
Agenda
5-S Methode für Test Code
Schritt 3: Säubere den ArbeitsplatzLesbarkeitDuplikation
Schritt 4: Standardisiere Sauberkeit am ArbeitsplatzTest Code Design Pattern
Ausblick
![Page 3: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/3.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 3Public
5-S Methode
Entferne auskommentierten Test Code…
1. Sortiere unnötige Dinge aus
Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers
![Page 4: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/4.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 4Public
5-S Methode
Formatiere Test Code einheitlich…
2. Stelle verbliebene Dinge ordentlich hin
Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers
![Page 5: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/5.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 5Public
5-S Methode
Verbessere die LesbarkeitHebe Duplikation auf
…
3. Säubere den Arbeitsplatz
Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers
![Page 6: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/6.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 6Public
5-S Methode
Entwerfe Test Code Design Pattern…
4. Standardisiere Sauberkeit am Arbeitsplatz
Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers
![Page 7: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/7.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 7Public
5-S Methode
Wende Test Code Design Pattern effizient an…
5. Sichere den Standard und verbessere ihn
Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers
![Page 8: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/8.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 8Public
TestmethodeStruktur
Gegeben: Erzeuge Objekt der zu testenden Klasse (CUT) Erzeuge Objekte der abhängigen Klassen (DOCs) Installiere DOCs in CUT (Injektion)
Wenn: Bereite Eingabe vor (Argumente für Eingabeparameter) Führe die zu testende Methode (MUT) mit Eingabe aus Nehme (tatsächliche) Ausgabe oder Fehlermeldung entgegen
Dann: Bereite die erwartete Ausgabe vor Vergleiche erwartete mit tatsächlicher Ausgabe
GEGEBEN
WENN
DANN
![Page 9: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/9.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 9Public
3. Säubere den ArbeitsplatzLesbarkeit: allgemein
Lesbarkeit eines Methodenaufrufs: -Gute Namen für die Methode und ihre Parameter-Beschränkung auf wenige Eingabeparameter-Vermeide Schalter und Negation bei Parametern
Nur wenige zu testende Methoden erfüllen diese Kriterien. Was tun?
![Page 10: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/10.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 10Public
3. Säubere den ArbeitsplatzLesbarkeit: MUT Aufruf
Lösung: Hilfsmethode (HUT) der Testklasse kapselt MUT Aufruf-HUT Name präzise und informativ-Name der HUT Parameter einfach und selbsterklärend-HUT Aufruf ohne Dummy Parameter-HUT Aufruf ohne Parameter wenn Eingabe im HUT Name-HUT Aufruf mit wenigen Schaltern-HUT Schalter ohne/richtige Negation
MUTHUT
![Page 11: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/11.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 11Public
3. Säubere den ArbeitsplatzLesbarkeit, Duplikation: Ein- und Ausgabe von MUT
Lösung: Hilfsattribute (HATs) der Testklasse -HUT muss keine Parameter für Dateneingabe definieren-HUT muss keine Parameter für Datenausgabe definieren-HUT kann Datenausgabe gleich mit Erwartung vergleichen
![Page 12: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/12.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 12Public
3. Säubere den ArbeitsplatzLesbarkeit, Duplikation: Ein- und Ausgabeobjekt für MUT
![Page 13: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/13.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 13Public
3. Säubere den ArbeitsplatzLesbarkeit, Duplikation: Vorbereitung der Erwartung
HUT = WENN + DANN
![Page 14: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/14.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 14Public
4. Standardisiere Sauberkeit am ArbeitsplatzTest Class Design Pattern
Test Class Design Pattern: Eine Testklasse soll sich auf eine Produktivmethode beschränken.
Begründung: Single-Responsibility-PrinzipGroßer innerer Zusammenhang zwischen MUT auf der einen Seite und HUT und HAT auf der anderen Seite.
![Page 15: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/15.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 15Public
4. Standardisiere Sauberkeit am ArbeitsplatzIsolation von MUT gegen CUT-Methoden: Überblick
TD_MUT leitet von CL_CUT ab und redefiniert die CUT Methoden, von denen MUT abhängt (DOMs).
![Page 16: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/16.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 16Public
4. Standardisiere Sauberkeit am ArbeitsplatzIsolation von MUT: Probleme
Probleme:-Verschiedene DOM Anforderungen der MUT Tests führen in TD_MUT zu Fallunterscheidungen oder komplexem Code (Lesbarkeit).-DOM Redefinitionen der Test Double Klassen zu verschiedenen MUTs
sind ähnlich (Duplikation).
![Page 17: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/17.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 17Public
4. Standardisiere Sauberkeit am ArbeitsplatzIsolation von MUT: Lösung
TD_DOM als einziger Anbieter von DOM Redefinitionen:statt für jedes MUT die DOM Redefinitionen auf lokale Test Double Klassen zu verteilen
Isolation von MUT aus mehreren DOM Doubles kombinierbar: spezielle Testanforderungen für MUT einfach und uneingeschränkt erfüllbar (z.B. ein DOM Double als Saboteur)
TD_CUT als globaler Kombinierer der DOM Doubles (Decorator Pattern):statt CUT nehmen Tests TD_CUT ins Visier, das das Zusammenwirken aller für die MUT Isolation benötigten DOM Doubles ermöglicht
![Page 18: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/18.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 18Public
4. Standardisiere Sauberkeit am ArbeitsplatzDecorator Double TD_CUT
TD_CUT
LTD_DOM
Delegation
Injektion
![Page 19: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/19.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 19Public
4. Standardisiere Sauberkeit am ArbeitsplatzDecorator Double TD_CUT: lokale LTD_DOMs
LTD_DOM
TC_CUT
LTD_DOM
![Page 20: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/20.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 20Public
4. Standardisiere Sauberkeit am ArbeitsplatzTest Double Design Pattern
Test Double Design Pattern: Eine Test Double Klasse soll sich auf eine Produktivmethode beschränken.
Begründung: SOLID-Prinzipien
Für das globale Decorator Double TD_CUT und seine lokalen Methoden Doubles LTD_DOMs sprechen:
-Single-Responsibility: Änderung eines DOM Doubles-Open-Closed: Hinzufügen eines neuen DOM Doubles-Liskovsche Substitution: DOM Doubles verhalten sich wie CUT
![Page 21: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/21.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 21Public
4. Standardisiere Sauberkeit am ArbeitsplatzTest Double Design Pattern: allgemein
![Page 22: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/22.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 22Public
4. Standardisiere Sauberkeit am ArbeitsplatzTest Double Design Pattern: wenn MUT hat nur ein DOM
Ohne Dekorator Double Klasse TD_CUT, da TD_DOM per Definition genau nur DOM redefiniert.
![Page 23: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/23.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 23Public
4. Standardisiere Sauberkeit am ArbeitsplatzIsolation von MUT gegen DOC-Methoden: Überblick
![Page 24: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/24.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved.
Danke
Kontakt:
Winfried Schwarzmann, SAP AGTest Code Design PatternEmail: [email protected]
![Page 25: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/25.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 25Public
4. Standardisiere Sauberkeit am ArbeitsplatzDecorator Double TD_CUT: Attribute
1
1
1
Problem: Ein TD_DOM1 Objekt setzt ein Attribut, auf das das TD_DOM2 Objekt zugreifen will.
Decorator DOM Redefinition:
IF mo_dom IS BOUND. mo_dom->m_attr_accessed_by_dom = m_attr_accessed_by_dom. mo_dom->dom( ). m_attr_written_by_dom = mo_dom->m_attr_written_by_dom.ELSE. super->dom( ).ENDIF.
![Page 26: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/26.jpg)
© 2014 SAP AG or an SAP affiliate company. All rights reserved. 26Public
4. Standardisiere Sauberkeit am ArbeitsplatzTest Double Design Pattern (Verfeinerung)
Test Double Design Pattern (Verfeinerung): Eine Decorator Double Klasse sollte sich auf ein Produktivinterface beschränken.
Begründung: Interface-Segregation-Prinzip.
![Page 27: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public](https://reader035.vdocuments.us/reader035/viewer/2022062623/55204d7e49795902118cff6d/html5/thumbnails/27.jpg)
27© 2014 SAP AG or an SAP affiliate company. All rights reserved.