Test Code Design Pattern

Slides:



Advertisements
Ähnliche Präsentationen
SAP Best Practices Prepackaged Industry & Cross-Industry Know-How
Advertisements

Absatzmengenbudgetierung und Übergabe an SOP (mit CO-PA), Erlösplanung
Inventur/Inventurzählung und Bestandskorrektur
Unternehmensstruktur Übersicht SAP Best Practices.
Interne Beschaffung – buchungskreisübergreifende Umlagerung
Beschaffung ohne QM SAP Best Practices.
Kundenauftragsabwicklung mit Anzahlung
Bestandsverwaltung: Nacharbeit, Ausschuss, Sperre
Handelsware (HAWA) anlegen
Änderungsnummer anlegen
Kostenart und Kostenartengruppe anlegen
Kundenstamm anlegen SAP Best Practices.
Java: Objektorientierte Programmierung
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Anlagenzugang durch Direktaktivierung
Verkaufen im 21. Jahrhundert Wir stellen vor: SAP Cloud for Customers
Informationsportal für internen und externen Berichtszugriff mit BW 7
Enterprise Mobility, Live!
Nacharbeitsabwicklung (unfertige Produkte in der Fertigung)
Thomas Geisler - SAP Education 11. Juni 2013
Inselspital - SAP goes iPad Der Patient als Kunde
Neues bei V1.603 SAP Best Practices for Chemicals (Deutschland) SAP Best Practices.
Übersicht SAP AG.
Umlagerung ohne Lieferung
Materialstammerweiterungen pflegen
Chargenklassifizierung anlegen
Streckengeschäft ohne Lieferavis
Software Development Principles Stefan Lieser Web:
Standardarbeitsplan anlegen
SAP Best Practices Prepackaged Industry & Cross-Industry Know-How Verfügbarkeit für SAP-Kunden und SAP-Partner.
Ad-hoc-Beratung zum Festpreis SAP Best Practices.
F&E – Innenaufträge – Ist
Use this title slide only with an image SAP PartnerEdge program for ApplicationDevelopment Additional a-la-carte services & resources May 13, 2014 Public.
F&E – Innenauftragsplanung SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario.
C65 – Aktivitätsmanagement
Serialnummernverwaltung SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario Einsatzmöglichkeiten.
C66 – Account- und Kontaktmanagement
C83 – Interaction Center (IC) Serviceanforderungsmanagement
MM – Lohnbearbeitung SAP Best Practices.
Nacharbeitsabwicklung (auf Lager gefertigtes Material)
Rapid-Deployment Solution C81 Interaction Center Marketing Ablaufdiagramme.
Interaction Center (IC) Serviceanforderungsmanagement SAP Best Practices.
Projekt mit Festpreis und aufwandsbezogener Fakturierung
Bestandsbewertung für Jahresabschluss
Interne Instandhaltung
Umlagezyklen pflegen SAP Best Practices.
Reisemanagement SAP Best Practices.
Periodenabschluss Projekte SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario.
Anlagenzugang für Anlagen im Bau
C67 – Pipeline Performance Management Ablaufdiagramm EHP2 für SAP CRM 7.0 EHP2 für SAP CRM 7.0, Version für SAP HANA.
Abwicklung von Gutschriften
? What is Open PS? SAP Open PS based on EPS 4.0
Unternehmensstruktur Übersicht
Segmentberichterstattung SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario Einsatzmöglichkeiten.
C39 – Schlankes Kampagnenmanagement
Integriertes Angebots- und Auftragsmanagement SAP Best Practices.
TB1000 SAP Business One – Logistik Release 9.0. ©2013 SAP AG. Alle Rechte vorbehalten.2RKT Copyright 2013 SAP AG Alle Rechte vorbehalten Weitergabe und.
INTERN TB1200 SAP Business One – Implementierung und Support Release 9.0.
Zeiterfassung SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario Einsatzmöglichkeiten.
Periodenabschluss – Serviceaufträge SAP Best Practices.
Gemeinkosten-Controlling – Ist SAP Best Practices.
Internes Projekt SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario Einsatzmöglichkeiten.
Use this title slide only with an image Erfahrungen eines Arbeitgebers Nico Herzberg – Ausbildungsleiter SAP Dresden März 2016 Public.
Kundenangebot SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario Einsatzmöglichkeiten.
Kostenlose Lieferung SAP Best Practices. ©2013 SAP AG. Alle Rechte vorbehalten.2 Einsatzmöglichkeiten, Vorteile und wichtige Abläufe im Szenario Einsatzmöglichkeiten.
Custom error page for timeout Gergely Andó / Application Innovation July 10, 2013 Customer.
Szenarioübersicht Terminierung mittels Rechnungen und Nachberechnung.
 Präsentation transkript:

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

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

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

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

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

5. Sichere den Standard und verbessere ihn 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 …

GEGEBEN WENN DANN Testmethode Struktur 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

3. Säubere den Arbeitsplatz Lesbarkeit: 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?

3. Säubere den Arbeitsplatz Lesbarkeit: 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 HUT MUT

3. Säubere den Arbeitsplatz Lesbarkeit, 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

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

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

4. Standardisiere Sauberkeit am Arbeitsplatz 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.

4. Standardisiere Sauberkeit am Arbeitsplatz Isolation von MUT gegen CUT-Methoden: Überblick TD_MUT leitet von CL_CUT ab und redefiniert die CUT Methoden, von denen MUT abhängt (DOMs).

4. Standardisiere Sauberkeit am Arbeitsplatz Isolation von MUT: 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).

4. Standardisiere Sauberkeit am Arbeitsplatz Isolation 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

4. Standardisiere Sauberkeit am Arbeitsplatz Decorator Double TD_CUT LTD_DOM Delegation Injektion

4. Standardisiere Sauberkeit am Arbeitsplatz Decorator Double TD_CUT: lokale LTD_DOMs TC_CUT LTD_DOM

4. Standardisiere Sauberkeit am Arbeitsplatz 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

4. Standardisiere Sauberkeit am Arbeitsplatz Test Double Design Pattern: allgemein

4. Standardisiere Sauberkeit am Arbeitsplatz Test Double Design Pattern: wenn MUT hat nur ein DOM Ohne Dekorator Double Klasse TD_CUT, da TD_DOM per Definition genau nur DOM redefiniert.

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

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

4. Standardisiere Sauberkeit am Arbeitsplatz Decorator 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.

4. Standardisiere Sauberkeit am Arbeitsplatz Test Double Design Pattern (Verfeinerung) Eine Decorator Double Klasse sollte sich auf ein Produktivinterface beschränken. Begründung: Interface-Segregation-Prinzip.