1 / 27

Test Code Design Pattern

Test Code Design Pattern. Winfried Schwarzmann, SAP AG February 19, 2014. Public. Agenda. 5-S Methode für Test Code Schritt 3: Säubere den Arbeitsplatz Lesbarkeit Duplikation Schritt 4: Standardisiere Sauberkeit am Arbeitsplatz Test Code Design Pattern Ausblick. 5-S Methode.

knox
Download Presentation

Test Code Design Pattern

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Test Code Design Pattern Winfried Schwarzmann, SAP AGFebruary 19, 2014 Public

  2. Agenda 5-S Methodefür Test Code Schritt 3: Säubere den Arbeitsplatz • Lesbarkeit • Duplikation Schritt 4: StandardisiereSauberkeit am Arbeitsplatz • Test Code Design Pattern Ausblick

  3. 5-S Methode Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers 1. Sortiere unnötige Dinge aus Entferne auskommentierten Test Code …

  4. 5-S Methode Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers 2. Stelle verbliebene Dinge ordentlich hin Formatiere Test Code einheitlich …

  5. 5-S Methode Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers 3. Säubere den Arbeitsplatz Verbessere die Lesbarkeit Hebe Duplikation auf …

  6. 5-S Methode Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers 4. Standardisiere Sauberkeit am Arbeitsplatz Entwerfe Test Code Design Pattern …

  7. 5-S Methode Test Code als primärer Arbeitsplatz eines testgetriebenen Entwicklers 5. Sichere den Standard und verbessere ihn Wende Test Code Design Pattern effizient an …

  8. TestmethodeStruktur GEGEBEN Gegeben: Erzeuge Objekt der zu testenden Klasse (CUT) Erzeuge Objekte der abhängigen Klassen (DOCs) Installiere DOCs in CUT (Injektion) WENN 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 Dann: Bereite die erwartete Ausgabe vor Vergleiche erwartete mit tatsächlicher Ausgabe

  9. 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?

  10. 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 MUT HUT

  11. 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

  12. 3. Säubere den ArbeitsplatzLesbarkeit, Duplikation: Ein- und Ausgabeobjekt für MUT

  13. 3. Säubere den ArbeitsplatzLesbarkeit, Duplikation: Vorbereitung der Erwartung HUT = WENN + DANN

  14. 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-Prinzip Großer innerer Zusammenhang zwischen MUT auf der einen Seite und HUT und HAT auf der anderen Seite.

  15. 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).

  16. 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).

  17. 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

  18. 4. Standardisiere Sauberkeit am ArbeitsplatzDecorator Double TD_CUT TD_CUT LTD_DOM Delegation Injektion

  19. 4. Standardisiere Sauberkeit am ArbeitsplatzDecorator Double TD_CUT: lokale LTD_DOMs LTD_DOM TC_CUT LTD_DOM

  20. 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

  21. 4. Standardisiere Sauberkeit am ArbeitsplatzTest Double Design Pattern: allgemein

  22. 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.

  23. 4. Standardisiere Sauberkeit am ArbeitsplatzIsolation von MUT gegen DOC-Methoden: Überblick

  24. Danke • Kontakt: • Winfried Schwarzmann, SAP AG • Test Code Design Pattern • Email: winfried.schwarzmann@sap.com

  25. 4. Standardisiere Sauberkeit am ArbeitsplatzDecorator Double TD_CUT: Attribute Problem: Ein TD_DOM1 Objekt setzt ein Attribut, auf das das TD_DOM2 Objekt zugreifen will. 1 1 1 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.

  26. 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.

More Related