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

Post on 06-Apr-2015

108 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Use this title slide only with an image

Test Code Design PatternWinfried Schwarzmann, SAP AGFebruary 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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?

© 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

© 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

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

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

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

3. Säubere den ArbeitsplatzLesbarkeit, Duplikation: Vorbereitung der Erwartung

HUT = WENN + DANN

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

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

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

© 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

© 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

© 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

© 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

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

4. Standardisiere Sauberkeit am ArbeitsplatzTest Double Design Pattern: allgemein

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

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

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

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

Danke

Kontakt:

Winfried Schwarzmann, SAP AGTest Code Design PatternEmail: winfried.schwarzmann@sap.com

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

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

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

top related