use this title slide only with an image test code design pattern winfried schwarzmann, sap ag...

27
Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Publ ic

Upload: bathilda-zenk

Post on 06-Apr-2015

108 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Use this title slide only with an image Test Code Design Pattern Winfried Schwarzmann, SAP AG February 19, 2014 Public

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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

27© 2014 SAP AG or an SAP affiliate company. All rights reserved.