Test Driven Development (TDD) - Der komplette Leitfaden für Anfänger | Ignacio Paz | Skillshare
Suchen

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Test Driven Development (TDD) - Der komplette Leitfaden für Anfänger

teacher avatar Ignacio Paz, Agile Coach and trainer, Professor

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Projektkonfiguration

      1:28

    • 2.

      Was ist ein Unit-Test?

      2:50

    • 3.

      Unit

      3:37

    • 4.

      Gute Unit-Tests: ZUERST

      6:20

    • 5.

      Technische Schulden

      4:42

    • 6.

      Design im Voraus und Emergent Design

      2:57

    • 7.

      Refactoring - Was soll refactor? werden?

      5:43

    • 8.

      Refactoring - Wie kann man refactor?

      6:46

    • 9.

      Einführung in die testgetriebene Entwicklung

      4:32

    • 10.

      TDD Entwicklungszyklus

      3:20

    • 11.

      Vor- und Nachteile von TDD

      3:56

    • 12.

      Verkaufssystem - Teil 1: Gesamtbetrag mit Rabatt

      3:22

    • 13.

      Verkaufssystem - Teil 2: Rabatt berechnen

      5:39

    • 14.

      Verkaufssystem - Teil 3: Produkt zum Verkauf

      2:06

    • 15.

      Hinweise und Empfehlungen für TDD

      3:12

    • 16.

      Einführung in Test Stubs und Mocks

      1:57

    • 17.

      Test

      2:25

    • 18.

      Stub

      4:55

    • 19.

      Test

      1:29

    • 20.

      Nächste Schritte

      1:09

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

196

Teilnehmer:innen

--

Projekte

Über diesen Kurs

Möchtest du die ersten richtigen Schritte mit Test Driven Entwicklung geben? Dieser Kurs wird die Konzepte von TDD auf die richtige Weise zusammen mit seiner wahren Philosophie lehren, bevor du zu einem Kurs mit Programmierung übergehst. Wir werden Schlüsselkonzepte im Detail für Unit-Tests, emergent Design, Refactoring, test Mocks und Stubs sehen.

Dieser Kurs ist für Anfänger in TDD gedacht, aber es wird empfohlen, dass du einige Vorkenntnisse in jeder Programmiersprache hast und Konzepte der objektorientierten Programmierung verstehst. Du fängst ganz von vorne an und arbeitest dich Schritt für Schritt durch.

Der Kurs hat die Beispiele in Java, aber die Konzepte können auf jede Sprache angewendet werden. Die Code-Beispiele werden alle erklärt und leicht von jedem Programmierer anderer Sprachen wie PHP, Python und . Netz oder andere.

Wenn du noch nie Unit-Test verwendet hast oder bereits junit ausprobiert hast und mit den Grundlagen von Unit-Tests und TDD zu kämpfen hast, ist dieser Kurs für dich und gemeinsam werden wir die richtige Denkweise für die Arbeit mit testgetriebener Entwicklung lernen.

Hallo, mein Name ist Ignacio Paz. Ich bin ein Agile Coach, ich war 15 Jahre Professor an der Universität für Systemdesign und agile Methoden. Ich habe testgetriebene Entwicklung stark angewendet, während ich viele Jahre als Java arbeitete.

Ich war ursprünglich im Jahr 2009 von testgetriebener Entwicklung fasziniert, zu dieser Zeit lernte ich all das key und ich entwarf einen TDD den ich im Laufe der Jahre verbessert und an Hunderte von Kursteilnehmern geliefert habe. Ich freue mich sehr, diesen Kurs für euch alle online stellen zu können!

Anforderungen

  • Grundlegende Programmierkenntnisse
  • Objektorientierte Programmierung
  • Für das Projekt: Es ist erforderlich, Java zu beherrschen, aber wenn du sehr geschickt in einer anderen Programmiersprache bist, kannst du sie möglicherweise anpassen und das Projekt in einer anderen Programmiersprache verfolgen.

Das wirst du lernen:

  • Testgetriebene Entwicklung
  • Refactoring
  • Code riecht
  • TDD
  • Anti-Muster
  • SOLID - Grundlagen
  • Designprinzipien
  • Test
  • Mocks
  • Stubs
  • Emergent Design
  • Einheitentest

Was wirst du erstellen?

Dieser Kurs hält Folgendes für dich bereit:

  • Erstelle Unit-Tests, implementiere und refactor für eine Sales
  • Du wirst ein Basisprojekt mit einigen vorhandenen Tests und Code herunterladen und weitere Tests hinzufügen, um neue Funktionen zu implementieren.

Dieser Kurs ist speziell für:

  • Entwickler aller Sprachen, die den richtigen ersten Schritt mit TDD geben möchten.
  • Entwickler aller Ebenen.
  • Entwickler, die ihre ersten Schritte mit TDD geben möchten.

Dieser Kurs ist nicht geeignet für:

  • Menschen mit mittlerem oder fortgeschrittenem TDD.

Warum diesen Kurs besuchen? Was wirst du gewinnen?

  • Verständnis des großen Ganzen von TDD
  • Verständnis der richtigen Art und Weise, TDD anzuwenden.
  • Grundlagen, um auf die nächste Stufe voranzukommen und mehr selbst zu üben.
  • Praktische Erfahrung nach der Arbeit an einem Beispielprojekt.

Über mich

Hallo, mein Name ist Ignacio. https://www.linkedin.com/in/ignaciopaz/

Mein Hauptziel ist es, dir mit neuem Wissen zu helfen, das du bei der Arbeit anwenden und eine erfolgreiche und professionelle Führung sein kannst.

Ich leitete, coachte, leitete und leitete seit 2005 Agile Projekte und Scrum Teams für Kunden aus der ganzen Welt.

Während meiner Karriere des intensiven Lernens habe ich viele fortgeschrittene scrum erhalten, darunter Certified Scrum Professional Scrum Master, Certified Professional Scrum Product Owner und Certified Agile Leadership.

Ich habe 15 Jahre als Professor für agile Methodologien und Systemdesign gearbeitet.

Ich liebe es, Agile und Scrum zu unterrichten und ich habe viele Stunden Training gestaltet, die ich online bringe. Ich unterrichte lieber mit Spielen und Aktivitäten, die die reale Welt simulieren können.

Ich habe Hunderte von Studenten in Agile ausgebildet, die zu Top-Profis in der Branche wurden.
Das Unterrichten, was ich in meiner 20-jährigen Erfahrung gelernt habe, ermöglicht den Kursteilnehmern, realistisches Lernen zu erhalten, das sie bei der Arbeit anwenden können.

Triff deine:n Kursleiter:in

Teacher Profile Image

Ignacio Paz

Agile Coach and trainer, Professor

Kursleiter:in

Hello, I'm Ignacio

I led, coached and managed Agile projects and scrum teams since 2005 for customers all over the world.

During my career of intensive learning I got many scrum certifications including Certified Scrum Professional Scrum Master, Professional Product Owner and Certified Agile Leadership which are very difficult to achieve.

I worked 15 years as a professor for Agile Methodologies and Systems design in one of the most important technological universities in Argentina.

I love to teach Agile and Scrum and I designed a lot of hours of training that I am bringing online. I prefer to teach with games and activities that can simulate the real world.

My classes can always be improved, so if you have any topic that you would like to know more, I... Vollständiges Profil ansehen

Skills dieses Kurses

Entwicklung Webentwicklung
Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Projektkonfiguration: , um das Basisprojekt für die Arbeit entlang der Kriegshalle einzurichten. Sie müssen das folgende Projekt von Get Cub klonen So zuerst herunterladen und installieren Jabba J K Download und installieren Eclipse I D e Einmal in einem Clip, gehen Sie zum Datei-Import get Ordner Projekt von Geet. Nächster Klon Sie sind ich als nächstes nochmals ein u R I aus dem Projekt oder Videobeschreibung eingegeben. Sie brauchen keinen Benutzer, der hier passierbar ist, also klicken Sie einfach auf Weiter. Sie können die Herbsteinstellungen belassen und klicken Sie einfach auf Weiter, bis Sie auf das Ende unten klicken. Sobald die Wichtigkeit erledigt ist, öffnen Sie das Projekt. Es ist gut, zu P O M XML zu gehen. Klicken Sie mit der rechten Maustaste auf Run uns maven clean Und dann wieder, rechts klicken Sie auf Run uns maven Installieren. Sobald Sie bereit sind, gehen Sie zu dient Testauftrag A Ordner, Rechtsklick US J Unit-Test ausführen. Also, jetzt muss der gesamte Test grün sein mit Bezug auf die Hauptklassen, die Sie mitder Arbeit an unserem Verkauf Testglas auf der Bestellung Testglasbeginnen der Arbeit an unserem Verkauf Testglas auf der Bestellung Testglas 2. Was ist ein Einheitstest?: Unit-Tests. Beginnen wir mit der Definition, was ein Komponententest ist? Ein Komponententest. Es ist ein Stück Code, der von einem Entwickler mit einem Framework oder einer Bibliothek geschrieben wurde, die wir X-Einheit nennen werden . Nein, das Wort X-Einheit. Sie wird durch den Namen aus dem Framework in Ihrer Programmiersprache ersetzt. Zum Beispiel, In Java, können Sie dies als J-Einheit in PHP kennen, es wird BHP Einheit, CPP Einheit für überschüssige Bus und Einheit für die Netze nach Einheit für Python auf so einer für verschiedene Programmiersprachen sein. Ein Komponententest ist ein automatisierter Code, der einen Teil des Produktionscodes aus dem Rial-System aufruft , das wir Arbeitseinheit nennen werden. Wenn wir diesen Tesco ausführen, wird es den Produktionscode ausführen, um eine einzige Annahme über sein Verhalten zu validieren. Je nach Funktionalität, wenn Sie den Komponententest ausführen, gibt es zwei mögliche Ergebnisse, dass der Schreibtisch fehlschlägt oder wir können rot sagen. In diesem Fall tut die Arbeitseinheit nicht das, was der Tesco vermutet wird. Bestellen. Der Test ist erfolgreich oder grün. In diesem Fall ist die Einheit der Arbeit erfüllt und die Erwartungen des Komponententests so Was ist das? Einheiten der Arbeit? Die zu testende Arbeitseinheit ist eine einzige logische Funktion aus dem Anwendungsfall im System , die von Ihrer öffentlichen Schnittstelle eingebunden werden kann. Eine Einheit des Krieges kann nur eine einzige Methode, eine ganze Klasse oder mehrere Klassen sein, die zusammenarbeiten, um einen einzigen Zweck zu erreichen, den wir überprüfen wollen . Üblicherweise werden Sie viele Komponententests haben, um die meisten Fälle von jeder Arbeitseinheit abzudecken. Also, was ist der Vorteil davon, das auf den ersten Blick zu tun? Man könnte denken, dass der Vorteil darin besteht, Justine oder Q A. zu machen aber das ist eigentlich nicht der Fall. Der reale Wert für Entwickler haben in der Produktion, genannt verdeckt durch Komponententests, ist, dass Sie den Mantel verbessern können. Sie werden den aufgerufenen verbessern, indem Sie Re-Factoring und Änderungen mit Vertrauen durchführen, denn wenn Sie einige Funktionen brechen, während Sie Ihre Änderungen vornehmen, wird der Test Ihnen sagen, dass etwas nicht mehr funktioniert, so dass Sie es beheben können. Daher möchten Sie vielleicht den Produktionscode mit mehreren Komponententests abdecken, die Sie alle zusammen sehr, sehroft diesen Test ausführen werden zusammen sehr, sehr und sicher sein, dass das Gericht uns beabsichtigt arbeitet, nachdem Sie den Codegeändert haben Code 3. Unit: Unit-Testbeispiel. Werfen wir einen Blick auf ein Beispiel aus einem Komponententest. Hier können Sie eine Klasse aus dem Produktionscode off Point Off-Sale-System sehen. Grundsätzlich ist dies eine Klasse namens Fail, die eine Eigenschaft für den Gesamtbetrag des Verkaufs hat. Ein Konstruktor, um einen Verkauf mit seinem Gesamtbetrag zu erstellen. Ein Getter auf einer Methode namens get change, die die Änderung zurückgibt, die der Kunde erhalten muss , wenn Schmerzen in bar mit einem bestimmten Betrag. Also, wie gut Sie testen, dass diese Methode richtig funktioniert. Zum Beispiel können Sie sich vorstellen, dass bei einem Verkauf von 77 der Kundenstamm mit 100 die Methode 23 zurückgeben muss . Lasst uns reiten, dass uns ein Test. Also zuerst, lassen Sie uns eine Testklasse namens Verkaufstest erstellen. Normalerweise gibt es eine 1 zu 1 Beziehung für jede Produktionsklasse zu einer Testklasse, die diese Klasse den gleichen Namen hat, aber mit dem Testwort eine Spezifikation. In manchen Fällen kann es eine eins zu viele Beziehung aus einer Produktion geben, plus zu viele Todesgläser in einem Komponententest. Es gibt drei Abschnitte. Ordnen Sie an, wo Sie die Objekte definieren, erstellen oder abrufen, die Sie für den Test verwenden möchten. In diesem Fall wollen wir ein neues Segel mit Beträgen von 77 erstellen. Der zweite Abschnitt heißt Akt, wo Sie die Aktionen ausführen, die Sie testen möchten. In diesem Fall wollen wir anrufen. Sie erhalten Methode mit dem Parameter off 100 geändert, um anzuzeigen, dass der Kunde mit 100 auf dem letzten Abschnitt zahlen will 1/3, wenn wir fest sind, dass etwas passiert US ein Ergebnis aus den Aktionen, die in diesem Fall ausgeführt wurden, wir wollen bestätigen, dass die Änderung berechnet Waas 23. Diese drei Abschnitte sind bekannt als die drei Ass Arrangement Act behaupten. Jetzt, da wir unseren Komponententest haben, können wir ihn ausführen. Sagen wir, und leider ist es rot. Es ist verblasst. Was ist passiert? Kannst du es spüren? Werfen wir noch einmal einen Blick auf die Produktions-Co. So sehen wir, dass die Formel aus dieser Anweisung in der get change Methode falsch ist. Es sollte umgekehrt sein. Es wird eine Menge sein. Bergarbeiter bekommen insgesamt. Wussten Sie, dass, bevor Sie den Test durchführen, vielleicht haben Sie das getan? Vielleicht nicht, und das ist okay, weil wir Menschen sind, besonders wenn wir Dinge bauen oder visuelle Inspektionen machen. Wir neigen dazu, zu selbstbewusst zu sein. Dies ist also ein Beispiel dafür, wie wir etwas wirklich Einfaches überwachen und davon ausgehen können, dass es richtig ist , bis wir es testen. Also repariere diese Methode. Wir werden diese Behinderung US-Betrag neu schreiben. Bergarbeiter bekommen insgesamt. Jetzt sind wir bereit, den Test wieder auf seinem Ring durchzuführen. Jetzt funktioniert es. 4. Gute Unit ZUERST: wie man gute Komponententests zu schreiben, und wir verwiesen auf die Ecke ihn zuerst zu verstehen, wo wir mit Komponententest sind, lassen Sie uns auf einem hohen Niveau die wichtigsten Ebenen aus Test in auf höchstem Niveau überprüfen, haben Sie die Funktionstests. Das bedeutet, eine Slice-Off-Funktionalität im System zu testen, die mit anderen Abhängigkeiten interagieren kann , um zu bestätigen, dass die Kälte gemäß den Spezifikationen die richtigen Dinge tut . Hier machst du das System, Arschloch. Integrationstests bedeutet, dass wir überprüfen, ob verschiedene Module einwandfrei funktionieren. Man hat uns zusammen A. Gruppe zusammengebracht. Der Zweck dieses Testniveaus besteht darin, falsch in der Richtung zwischen integrierten Einheiten, die miteinander zusammenarbeiten müssen, aufzudecken . Und schließlich, Unit-Tests, wo wir einzelne Module oft Anwendung, aber isoliert testen wollen. Das bedeutet, ohne Interaktion mit tatsächlichen Abhängigkeiten zu bestätigen, dass die Kälte die Dinge richtig macht. Komponentententests liegt in der Verantwortung des Entwicklers, sicherzustellen, dass sie als Werke bezeichnet werden? Nun, was ist ein guter Komponententest, um zu beschreiben und sich daran zu erinnern, wie eine gute Einheit testet. Sie sehen aus, als hätten wir zuerst das Akkordeon benutzt, wo wir für jedes Leder ein Wort haben, um sich an bestimmte Eigenschaften zu erinnern. Fost eine Einheit Schreibtisch muss wirklich schnell laufen. Wir sprechen über Millisekunden unabhängig. Jeder Komponententest muss unabhängig voneinander sein und nicht von den Ergebnissen anderer Tests abhängen . Seriöser Test sollte in jeder Umgebung ohne Abwechslung in den Ergebnissen wiederholt werden. Selbstvalidierend. ist keine manuelle Inspektion erforderlich, um zu prüfen, ob der Test bestanden oder fehlgeschlagen ist. Gründlich bei diesem Moskau über jedes Anwendungsfallszenario, aber nicht unbedingt für 100% Deckung. Werfen wir einen Blick auf jede dieser Eigenschaften schnell. Ein Komponententest muss wirklich schnell laufen. Wir reden über Millisekunden. Denken Sie daran, dass Sie Tausende von Tests in Ihrem Projekt haben Wenn es also niedrig ist, fühlen Sie sich vielleicht ungern, sie mit auszuführen. Entwickler sollten nicht zögern, den Test durchzuführen, weil sie langsam auf dem Land sind. Sie sollen sich wohl fühlen, alle von ihnen sehr häufig zu laufen, wie alle paar Minuten unabhängig. Manche Leute können diese als isoliert bezeichnen. Jeder Komponententest muss unabhängig voneinander sein. Wenn Sie einen Test ausführen, darf er sich nicht auf das Ergebnis anderer Tests auswirken. Test sollte nicht auf den Zustand aus vorherigen Test abhängen, ob es sich um ein Objekt oder Mönch Metalle. Auf diese Weise können Sie jeden Schreibtisch bei Bedarf einzeln ausführen, was wahrscheinlich passieren wird, wenn ein Test fehlschlägt, wie Sie Divac im Schlepptau wollen. Eine Methode. Konzentrieren Sie sich auf Szene, was schief läuft und nicht andere Tests ausführen müssen. Wenn Sie einen Test haben, der einige Daten überprüft oder mehr definiert, dann an diesem Tag wird sie in der Einrichtung aus dem Test erstellt werden, werden danach entfernt, so dass sich das nicht auf den folgenden Test auswirkt. Seriöse Todesfälle werden in jeder Umgebung ohne Abwechslung wiederholt werden. Ergebnisse bei dieser Methode sollten nicht von Daten in der Umgebung abhängen, in der geschrieben wird . Die Ergebnisse müssen deterministisch sein. Bei jeder Instanz, in der sie ausgeführt werden, müssen dieselben Ergebnisse vorhanden sein. Es sollte keine Abhängigkeiten von Datumszeit oder Daten geben, die außerhalb der Test- oder Zufallsfunktionen geändert werden können . Jeder Schreibtisch zeigt es auf oder arrangiert seine eigenen Daten. Wenn ein Setoff-Test einige gemeinsame Daten benötigt, können Sie diesen oberen Abschnitt in der Testklasse für Daten innerhalb der Testmethoden aus einer Schreibtisch-Klasse oder vielleicht einige, die die Hilfsklassen für die Wiederverwendbarkeit in vielen Tests verwenden. Klassen selbstvalidieren Ein Komponententest muss automatisiert sein. Es sollte keine manuelle Inspektion erforderlich sein, um zu prüfen, ob die Prüfung bestanden oder fehlgeschlagen ist. Ein Komponententest muss transparent sein. Unausgedrückte Absicht des Autors. Mit anderen Worten, es muss ein verlassen Dokumente sein. Wenn Sie den Namen von der Methode in einem Test lesen, müssen Sie verstehen, was das System in der Lage ist, aber uns einen Unterschied mit einem statischen Text. Dies ist ein Dokument, das darauf ausgeführt werden kann, wird validiert, ob diese Funktionalität für die korrekte Arbeit implementiert ist . Manche Leute sonst schattieren auch das S mit kleinen. Wie wir gesehen haben, muss der Komponententest klein sein. Das bedeutet, dass sie nur eine Einheit außerhalb der Arbeit ohne Abhängigkeiten validiert. Foto in Bezug auf die Berichterstattung bestätigen. Maskieren Sie jedes Anwendungsfallszenario, aber nicht unbedingt für 100% Deckung oben sollten Sie darauf abzielen, auf Eckkante und Bindung Neuwerte Tod für große Datensätze zu testen, um Laufzeit und Platzkomplexitätsprüfung für Sicherheit mit Benutzern zu testen haben in verschiedenen Rollen uns. Das erwartete Verhalten kann je nach Benutzer unterschiedlich sein. Royals tut für große Werte, nur Überlauf und unter Flow Fehler. Dafür die Typen wie ganzzahlige Begriffe für Ausnahmen rechtliche Argumente und schlechte Eingaben 5. Technische Schuld: technische Tiefe wird durch Wahl einer einfachen und günstigen Lösung verursacht. Anstatt einen besseren Ansatz zu verwenden, der länger dauert, ist dies oft das Ergebnis der Verwendung von Verknüpfungen, schnellen Korrekturen und Patches anstelle einer umfassenden Lösung. Daily Caldera wurde ursprünglich verwendet, um auf Fehler im Code zu verweisen, das Zeichen einer Software, aber das Konzept kann auf jede Art von Produkt angewendet werden. In einigen Fällen können Lösungen mit technischer Tiefe lange Zeit einwandfrei funktionieren, aber in vielen Fällen kann das Produkt instabil, unsicher oder sogar gefährlich werden . Was ist das erste Problem mit technischen Tiefe in Bezug auf die Produktivität? Ein Problem mit der technischen Tiefe besteht darin, dass Nacharbeit impliziert wird. Erstens haben wir die Zeit, diese ISI zu implementieren , aber eine unerwünschte Lösung mit technischer Tiefe kann es notwendig sein, sie zu implementieren, oder? Wir müssen also die Zeit hinzufügen, um die einfache Lösung rechtzeitig rückgängig zu machen die einfache Lösung , um sie richtig zu implementieren. Dieser Prozess wird auch als Spanien bezeichnet, die technische Tiefe. Wie Sie sehen können, ist die Gesamtzeit und der Arbeitsaufwand viel mehr als das. Wenn wir einen Jungen haben, die technische Tiefe und implementiert es von Anfang an richtig. Das Tragen von technischem VAB könnte absichtlich aus Bob oder guten Gründen sein. Genau wie Guan finanzielle Tiefe nutzen kann , um in einem Casino zu spielen oder Ihr Unternehmen wachsen zu lassen und die Tiefe später mit einem Gewinn zu bezahlen. Zum Beispiel mangelnde Professionalität, die Teammitglieder sind unprofessionell oder kümmern sich nicht um das Produkt. Akkumulierte technische Tiefe. Das Produkt hat so viel technische Tiefe, dass es unmöglich scheint, neue Funktionen korrekt zu implementieren. Zeitdruck, das Team steht unter Zeitdruck, so dass die Geschwindigkeit oder Freigabe vorrangige Bindungen gegenüber den gut gestalteten Codes, das Fehlen von Komponenten ist . Das Team benötigt ein Ersatzteil für das Produkt, das nicht verfügbar ist und eine alternative Lösung benötigt. Proof-of-Concept Experiment oder MVP. Das Team führt einen Proof-of-Concept oder MVP durch und liefert lieber etwas mit technischer Tiefe, um die Nachfrage des Produkts auf dem Markt zu testen, anstatt etwas zu bauen technisch perfekt , dass niemand will. Die technische Tiefe kann auch ungewollt sein. Zum Beispiel mangelndes Wissen. Die Teammitglieder sind zwei Junior und wissen nicht, dass die Best Practices die richtigen Entwurfsmuster für die Probleme sind . Neue Technologien, das Team verwendet eine neue Technologie oder ein neues Framework und er ist sich der Best Practices nicht bewusst. Wenn ein Team kontinuierlich die technische Tiefe fördert , ohne es zu bezahlen, kann dies zu mehreren Problemen führen. Spaghetti-Code, sie signieren intern von dem Produkt, könnten sehr chaotisch werden und sahen aus wie Spaghetticode. Und bei hoher Kopplung kann das Produkt üblich, stabil, gefährlich oder unsicher sein. Der Code wird immer schwieriger zu verstehen und Änderungen oder Hinzufügen neuer Funktionen erfordern mehr Aufwand und können leicht beschädigen oder andere vorhandene Funktionen, sei es mit einer guten Lösung oder mit mehr technischer Tiefe. Grundsätzlich wird der Umgang mit kalten Wegen zum Schmerz. Zu zahlende Hardware. Je mehr technische Tiefe wird angesammelt. Die Hardware, die zu bezahlen ist, ist genau wie unbezahlte monetäre Tiefe und Zinszinsen. gefälschte Wahrnehmung von hoher Geschwindigkeit im Team, das die technische Tiefe ständig fördert, könnte aufgrund ihrer schnellen Lösungen für einige Zeit sehr produktiv und mit einer hohen Geschwindigkeit aussehen sehr produktiv und mit einer hohen Geschwindigkeit aussehen . Langfristig wird die Geschwindigkeit jedoch aufgrund der Komplexität und mangelnden Stabilität der Codebasis sinken . Dies kann auch dazu führen, dass die Interessengruppen oder den Produkteigentümer eine Sucht schnelle Lieferungen sehen. Und Gould machen harte Ente saß in ihrer Zukunft, die hohen Kosten der Wartung auf der Befestigungsbox. Und außerdem, um zu akzeptieren, dass der Code Müll ist und ein Refaktor sein muss . Die technische Tiefe der Metapher wurde ursprünglich durch Wortkonservengramm geschaffen , um zu gestalten, wie man über den Umgang mit diesem Handwerk nachdenkt. Um seinem Chef als Analogie zur finanziellen Tiefe zu erklären, sind die zusätzlichen Anstrengungen , die erforderlich sind, um neue Funktionen hinzuzufügen , die für die Tiefe gezahlt werden. 6. Design und Emergent Design: aus dem Zeichen gegenüber dem entstehenden Design in der Support-Entwicklung. Großes Design auf der Vorderseite. Es ist ein Ansatz, bei dem die Software dieses Zeichen abgeschlossen werden soll. Ich bin vor der Implementierung perfektioniert. Dies ist oft mit dem Wasser für die Modell-Off-Software-Entwicklung verbunden. Eigentlich hört sich das großartig an, oder? Nun, nur wenn Sie alles im Detail wissen, was Sie im Voraus bauen müssen, was heutzutage selten der Fall ist. Veränderung ist unvermeidlich. Egal wie sehr wir versuchen, die Zukunft vorherzusagen, es wird immer eine Menge Variablen außerhalb unserer Kontrolle geben. Wie Sie vielleicht wissen, Milton,ist die neue Software der Weg zu etwas Neues, das auf dem Weg entdeckt werden muss. Wie Sie vielleicht wissen, Milton, Milton, Einer der Prinzipien des agilen Manifests ist eine willkommene Änderung der Anforderungen, denn während Sie den Weg gehen, um die neue Software zu erstellen, gibt Ihnen regelmäßige Rückmeldungen neue Ideen und Anforderungen, die unmöglich gewesen sein werden, denken am Anfang des Projekts. Daher brauchen wir die Technik, die uns helfen, die Veränderung zu umarmen und anzupassen sind entsprechend gestaltet . Stattdessen, weg von einem großen nach oben aus dem Schild. Was wir wollen, ist ein Design, das grob organisch am Zeichen, das sich an Veränderungen in der Ehe kontinuierlich anpassen kann . Emergent Design konzentriert sich auf die Lieferung in kleinen Stücken, außerhalb der Kälte mit geschäftlichem Wert mit aufstrebendem Design. Ein Entwicklungsteam begann mit der Bereitstellung der Funktionalität auf Let's the Design Emerge. Sobald mir jemand in meiner früheren Firma gesagt hat, haben wir versucht, einen Händler zu machen. Das Zeichen und wir fügten Kälte und mehr durch das Design genannt nicht gut aus natürlich nicht entstehen . Es geht nicht darum, nur Kälte hinzuzufügen und eines Tages, dass dieses Zeichen plötzlich in der Ehe wird. Dies ist eine fortgesetzte Methodik, die Sie jeden Tag anwenden müssen. Das Design mutiert ständig in einem Händler-Design auftauchen. Das Entwicklungsteam wird ein kleines Stück Funktionalität nehmen und die Verwendung in Let's Practices und richtigen Discovery Ridge implementiert und dann zur nächsten Funktionalität verschoben. Sie werden sehen, was Dysfunktionalitäten gemeinsam haben, sind ein Faktor. L. Ein Fenster entworfen, um eine Ehe am Ende Open Naja wirklich Zyklus. Das Produkt hat Onley kleines Design nur für die Funktionen, die in dieser Situation veröffentlicht werden. Das Ergebnis ist ein einfacheres Design, das leichter zu verstehen und zu pflegen ist, mit weniger Platz für Defekte. Gerade angetriebene Entwicklung ist eine Technik, die uns mit Notfallschildern helfen kann 7. Refactoring – Was soll man Refactor?: re Factoring, was Faktor technische Tiefe wieder. Es ist ein Konzept in der Softwareentwicklung, das die Kosten der Nacharbeit widerspiegelt, die durch die Auswahl verursacht werden . Und es ist eine Lösung, anstatt einen besseren Ansatz zu verwenden, der länger dauern könnte. Das Konzept wurde ursprünglich von Ward Cunningham erfunden. US A. Metapher. Diese Metapher hilft Managern zum Beispiel zu erklären, zum Beispiel zu erklären, warum es wichtig ist, angemessene Zeit in das Schreiben guter Software und Re-Factoring zu investieren . Zum Beispiel, wenn Sie nicht zahlen Ihre Kreditkarte oder Geld, dass Sie Zinsen sammeln können und Sie müssen viel mehr mit so zahlen, wo ist das gleiche? Wenn die technische Tiefe nicht zurückgezahlt wird, kann sie Zinsen ansammeln. Es ist schwieriger, Änderungen zu implementieren und teurer, die Anwendung zu pflegen. Re Factoring ist eine Technik, um den vorhandenen Code zu verbessern, ohne die Funktionalität zu ändern . Mit anderen Worten, Sie verbessern den Code, geben jedoch keinen neuen Wert für den Endbenutzer an. Der Hauptwert liegt bei den Entwicklern. Dies ist eine Investition, so dass die Kälte langfristig wartbar ist. Dies sind zwei Meisterwerke, die Sie über Ihr Factoring lesen können. Die 1. 1 ist das Buch von Martin Fuller, wo er die Techniken für Wieder Factoring auf der 2. 1 vorgestellt, wie man mit Lösungen refraktorieren , die Designmuster enthalten. Woher wissen Sie also, was Sie ein Faktor sein sollten? Wenn Sie den Kühlschrank öffnen, gibt es Geruch, was es bedeutet. Es bedeutet, dass etwas verrottet. Also, was würdest du tun? Ich schätze, du wirst es rausnehmen, wenn du es drinnen lässt. Andere Lebensmittel gehen, um mit dem Code zu laufen ist das gleiche. Manchmal schaut man sich die Kälte an und man ist sich nicht sicher, warum. Aber Sie wissen, dass etwas nicht stimmt, dass etwas schlecht gerochen hat. Und wenn Sie es nicht ändern oder verbessern, wird es über die gesamte Codebasis verbreiten Come back bezieht sich auf diese US-Code-Gerüche. Die Fellgerüche helfen Ihnen zu identifizieren, was schlecht in der Kälte riecht und in der Regel Faktor. Einige der wichtigsten Code-Gerüche sind dupliziert kalt einer der häufigsten kalten Gerüche. Es ist, wenn es identischen oder sehr ähnlichen Code gibt, der an mehr als einem Ort Long -Methode vorhanden ist , eine Methodenfunktion oder -prozedur, die zu groß geworden ist. Große Klasse A-Klasse, die Tolers Feature M B A-Klasse ist, die Methode aus einer anderen Klasse übermäßig in angemessener Intimität verwendet . Eine Klasse, die Abhängigkeiten von Implementierungsdetails von einer anderen Klasse hat, weigerte sich, eine Klasse anzufordern , die eine Methode aus der Basisklasse so überschreibt, dass der Vertrag von der Basisklasse nicht vom Laufwerk zuletzt fehlerhaft ist. Dies ist in der Regel ein Verstoß gegen das Lisk of Substitution Prinzip. Lacey Klasse A Klasse, die zu wenig erfundene Komplexität macht. Große Nutzung aus über wie kompliziert die Zeichenmuster, wo einfacheres Design genügt. Wie Sie vielleicht wissen, sind Muster Aufzeichnungslösungen für ein Problem, das bewiesen ist, das zu guten Ergebnissen führt. Anti Muster sind das Gegenteil. Sie sind gemeinsame Lösungen für ein Problem, das für einige freie Leute tun und negative Folgen haben . Wenn Sie ein Anti Muster sehen, Sie sollten wieder Faktor sie. Lassen Sie uns einige von ihnen anämisch erwähnen. Das Hauptmodell ist die Verwendung des Domänenmodells ohne Geschäftslogik, die auf Vererbungsfunktionen einer Versorgungsklasse basiert . Anstatt Komposition auf Delegation Gold zu verwenden, die Superklassen erfordern, um Superklasse überbewertet und Methodenkreis Ellipse Problem aufzurufen. Dies ist im Grunde eine schlechte Verwendung von Subtyp im Kreis unserer Abhängigkeit. Unnötige gegenseitige Abhängigkeiten zwischen Objekten oder Modulen. Konstante Schnittstelle. Usan-Schnittstellen, um Konstanten zu definieren, God Objekt, konzentriert zu viele Funktionen in einem einzigen Teil aus dem Design in ein Klassenobjekt. Cecil Wiederverwendung von Objekten Wer Staat bestätigt den Vertrag für die erneute Verwendung nicht. Objekt-RG Fehler beim ordnungsgemäßen Kapselung von Objekten, die uneingeschränkten Zugriff auf ihre Interna ermöglichen . Baltar blickte Objekte, deren einziger Zweck darin besteht, Informationen an ein anderes Objekt zu übergeben. Sequentielle Kopplung einer Klasse, die erfordert, dass ihre Methoden in einem Partikel aufgerufen werden. Unsere Bestellung Ihr Problem Eine Struktur, zum Beispiel, zum Beispiel, aus Vererbung, die aufgrund übermäßiger Fragmentierung schwer zu verstehen ist. 8. Refactoring – Wie man Refactor?: riff Factoring Wie Faktor wieder. Wenn Sie sie reflektieren, müssen Sie den kalten Zeh wechseln. Wenden Sie gute Designprinzipien an. Lassen Sie uns einige von ihnen erwähnen. Wiederholen Sie sich nicht. Unser erstes objektorientiertes Design-Prinzip ist D. R Y. US genannt vorschlagen Nicht wiederholen Sie sich nur bedeutet Tom Reid Duplikat-Code. stattdessen Hindernisse, Verwenden Siestattdessen Hindernisse,um gemeinsame Dinge an einem Ort zu platzieren. Die nächsten sind Ratschläge der Gewaltbande. Die Jungs, die das Buch geschrieben haben, entwarfen Muster. Die 1. 1 ist gekapselt. Welche Sorten? Nur eine Sache ist konstant in der Software fehlgeschlagen, und das hat sich geändert. Kapseln Sie also die aufgerufenen, die Sie erwarten, in der Zukunft zu ändern. Mehrere Entwurfsmuster verwenden eine Verkapselung. Zum Beispiel ist Factory Design Muster ein Beispiel. Off Encapsulation, die die Objekterstellung mit dem Namen UN kapselt. Bieten Sie Flexibilität, um neue Produkte später einzuführen, ohne Auswirkungen auf die vorhandene Codeprogrammierung auf eine Schnittstelle, nicht auf die Implementierung. Dies wird die flexible aufgerufen führen, die mit jeder neuen Implementierung von der Schnittstelle in der Zukunft arbeiten kann. Verwenden Sie also Schnittstelle, geben Sie auf Ihre Wertsachen, Eigenschaften Rückgabezeiten und Argumente bevorzugen Komposition gegenüber Vererbung. Einige von Ihnen können damit argumentieren, wie viele Leute denken, dass es Kälte mit Vererbung verwendet. Aber ich fand, dass die Zusammensetzung viel flexibler ist als die Vererbungszusammensetzung. Alos, das Verhalten von einer Klasse zur Laufzeit durch das in einem neuen Objekt aus einer anderen Implementierung in einer Eigenschaft zu ändern , die uns ein Interface-Typ-Delegationsprinzip deklariert wurde. Tun Sie nicht alle Sachen, die Sie selbst an entsprechende plus klassisches Beispiel für Delegation Prinzipal delegiert haben, sind die equals- und Hashcode-Methoden in Java. Um zwei Objekte für die Gleichheit zu vergleichen, haben wir die andere Klasse selbst gebeten, den Vergleich anstelle der Client-Klasse durchzuführen. Tun Sie diesen Scheck Nutzen aus. Dieses Konstruktionsprinzip ist keine Verdoppelung von Kälte. Ich bin ziemlich einfach, das Verhalten zu ändern. Es gibt einige entworfene Prinzipien, die von Roberson Martin als solide bezeichnet werden. Es gibt einen sehr wichtigen Grundsatz der einheitlichen Verantwortung. Ein Klassenzimmer hat immer eine einzige Funktionalität gehandhabt und hat nur einen Zweck. Das wird zunehmen. Kohäsion ist bereits die Kopplung offener Kleidung entworfen Hauptklassen. Methoden für die Funktion sollten für die Erweiterung offen sein. Unclos für Modifikation lis Cub Substitutionsprinzip. Angesichts eines Super-Typ-Subtyps moskvy substitute, verärgere ich die Super-Typ-Methoden sind Funktionen, die den Superklassentyp verwendet haben, müssen ableto mit einem Objekt aus einer Unterklasse ohne Probleme Interface-Segregationsprinzip arbeiten . Dies geschah meistens, wenn eine Schnittstelle viele Methoden auf einem Client enthält, nur eine Abhängigkeitsinversion benötigt . Eine Klasse sollte von einem Bruchteil oder Schnittstellen von nie zu Implementierungen abhängen. Es gibt viele Wieder Factoring-Techniken, die für die meisten Entwickler relativ einfach zu verstehen sind , in der Regel die meisten von den integrierten Entwicklungsumgebungen wie Eclipse oder Intelligent. Sie integrieren diese Wieder Factoring-Techniken und automatisieren beteiligte Änderungen. Aber Sie müssen immer noch die Entscheidung treffen. Dies ist nur eine Liste von den wichtigsten. Extraht-Methode. Wenn Sie eine kalte Fragmente haben, die gruppiert werden können oder an vielen Stellen dupliziert wird , verschieben Sie diese. Gehen Sie zu einer separaten neuen Methode und ersetzen Sie die alte Kälte durch einen Aufruf der zerstörerischen Methode in Fahrspurmethode. Wenn der Methodenkörper vollständig verwendet wird, wurden die Aufrufe der Methode ersetzt. Mit dem Methodeninhalt unter Führung extrahiert die Methode selbst Variable. Wenn Sie einen Ausdruck haben, der zu schwer zu verstehen ist, platzieren Sie die Ergebnisse aus dem Ausdruck in separaten Variablen, die selbsterklärend sind. In der Schlange. Tamp Wenn Sie eine temporäre Sorte haben, die die Ergebnisse von einem einzelnen Ausdruck zugewiesen hat und nichts mehr die Verweise auf die Variable ersetzt hat, indem Ausdruck selbst eine Methode abverschiebt , die in einer anderen Klasse in ihrer eigenen Klasse sinnvoller ist. Extrahieren. Lachen, wenn eine Klasse die Arbeit ausführt, um eine neue Klasse auf Platz die Felder und Methoden zu erstellen , die für die relevante Funktionalität verantwortlich sind. In der Linie Klasse A Klasse tut fast nichts, und es ist nicht verantwortlich für jede Sünde auf keine zusätzlichen Verantwortlichkeiten. Unser Plan dafür. Verschieben Sie alle Features aus der Klasse in eine andere Klasse. Andere bekannte Wieder Factoring-Techniken sind Rene-Methode bei alten entfernten Parameter von einer Methode unten trocknet es. Methode. Ziehen Sie eine Feldmethode oder einen Konstruktor von der Unterklasse zu einer Superklasse. Drücken Sie ein Feld oder eine Methode von einer Superklasse in eine Unterklasse, extrahieren Sie eine Superklasse oder einen Subklassenextrakt. Die Schnittstelle aus der Klasse, die von vielen Clients Formularvorlagenmethode auf vielen anderen aufgerufen wird. Wenn Sie also ein Faktor sind und den Code ändern, wo ist das Sicherheitsnetz? Es sieht zu gefährlich, um die Kälte zu ändern, um es zu verbessern, da es das Risiko oder brechen Funktionalitäten, oder sind die neue Box. Also, wie kann ich Schauspieler mit Zuversicht Riff An dieser Stelle, Sie könnten erkennen, was die Antwort ist? Die Antwort ist Komponententest. Sie müssen Ihren Anruf mit Unit-Test abdecken, so gibt es keine Gefahr in Wieder Factoring und Sie können die Kälte auf führte das Design einen Drang frei verbessern. 9. Einführung in die testgetriebene Entwicklung: Test-Driven Entwicklung Einführung Tester auf Entwickler sind zwei sehr wichtige Rollen in der Software-Engineering. Sie werden keine komplexen Verantwortlichkeiten haben, aber sie tragen auch unterschiedliche Denkweisen. Sie denken oft anders. Ein Entwickler muss Probleme mit Lösungen verkaufen, die funktionieren, in der Regel fragen Dinge wie, Was muss ich bauen? Wie soll ich es bauen? Wie kann ich es schaffen? Rob ist Ein Tester muss in den Schuhen des Kunden sein. Ein Tester fragt Dinge wie, Was kann schief gehen? Wie kann ich die Bewerbung gelesen haben? Wie kann ich Zeugen finden? Aber Entwickler müssen immer noch testen. Manche Leute mögen sagen: Nun, Nun, ich baue eine Software, und wenn sie während des Tests Fehler finden, kann ich sie beheben. Nun, das ist kein Durchfall. Natürlich verlassen wir uns Darm, um Taschen nach der Entwicklung zu fangen, aber diese Küste eine Menge Nacharbeit und Abfall. Als Entwickler müssen wir unser Bestes geben, um Rub ist sauber auf dem Rücken freie Software in einem traditionellen Ansatz zur Verfügung zu stellen. Der Entwickler wird die Kälte schaffen, und dann funktioniert das richtig. Aber wir haben gesehen, wenn Sie etwas bauen ist sehr schwierig, den Test in der Perspektive zu beeindrucken . Was also, wenn wir uns die Tests vor der Entwicklung ausdenken. In diesem Fall werden wir zuerst die Testfälle ausdenken und dann implementieren genannt, dass der Test in der Entwicklung durchläuft , die wir verweisen können. Toa uns DDT. Es ist eine Software-Design- und Implementierungstechnik, die in der extremen Programmiermethodik enthalten ist. Einige aus Kraft wird sagen, dass der Name etwas unglücklich ist. Etwas wie dieses Zeichen, von Beispielen geleitet wird, wird Bohne vielleicht passender haben. Also beginnen wir damit, zu definieren, was DDT nicht ist. Würde ist kein Test in der Methode oder eine Q A-Technik. DDT ist kein Q-A-Ersatz. Sie versuchen nicht, Q A oder Tester zu ersetzen. Mit dem hier. Sie sind immer noch sehr wichtig im Silberentwicklungszyklus. DDT ist an der Zeichentechnik für aufstrebende Entwürfe. Ditty East Test Vor der Entwicklung Sie suchen den Test zuerst unter einem Implementieren zu erstellen . Das Fell Ditty sind Beispiele dafür, was das System tun sollte, und Sie können diese US A lebende Spezifikation sehen. Wenn Sie ein Dokument haben, können Sie die Dinge, die das System tun kann, zumindest machen, aber Sie können es nicht mit Würde beweisen. Sie haben eine Dokumentation, was das System tun kann, aber Sie können sie auch auf validiertem Testament ausführen. Entwicklung bezieht sich auf den ersten Test Programmierkonzept Off Extreme Programm, in dem begann im Jahr 1999. Wer sind die berühmten Leute, die DDT unterstützen? Kommen Sie zurück? Wer wird mit der Entwicklung oder Wiederentdeckung der im Jahr 2003 angegebenen Technik gutgeschrieben. D Aktivität. Ermutigen Sie einfaches Design UN Inspiriert Vertrauen. Can Back ist einer der Schöpfer der agilen Methodik für Software-Entwicklung bekannt US Extreme Programm in Er erstellt auch zusammen mit Ari Gamma, die Unit Testing Framework für Java J-Einheit. Er veröffentlichte viele Bücher, fragte Small Talk, Best Practice Muster. Erklärung aus der zusätzlichen Programmierung, testgesteuerte Entwicklung durch Beispiel. Planung der extremen Programmierung. Martine Fuller ist Autorin und internationale Rednerin für Softwareentwicklung, spezialisiert auf objektorientierte Analyse und Designmuster sowie agile Softwareentwicklungsmethoden , einschließlich extremer Programmierung. Er hat eine Menge von Publikationen, einschließlich einer Wieder Fabrik und Verbesserung des Sign-off bestehenden Code. Eddie Gamma fungierte als Marktführer bei der Entwicklung außerhalb der Eclipse-Plattform. Er war Teil der Viererbande, die die Zeichenmuster popularisierte. Er war auch die Creator J-Einheit, zusammen mit Can zurück 10. TDD: nur den Entwicklungszyklus vorangetrieben. Werfen wir einen Blick auf den Titty-Entwicklungszyklus. Sie werden mit den geringsten Off-Anforderungen beginnen. Normalerweise werden sie User Stories sein. Sie werden eine von dieser Anforderung auf Das erste, was Sie tun werden, ist, einen TDD-Test für eine von den Funktionalitäten aus der Geschichte zu schreiben . Sie werden noch keine Implementierung von der Endgültigkeit des Telefons schreiben, anderen Worten, das ist ein Test für eine bestimmte Funktionalität. Aber das System stellt es nicht zur Verfügung. Jetzt. Sie werden den Schreibtisch ausführen, machen es scheitern. Sie möchten sicherstellen, dass diese Funktionalität nicht sehr hoch ist und Sie sich in Babyschritten bewegen . Dann fahren Sie die einfachste mögliche aufgerufen, um den Test zu bestehen. Wir wollen nur das implementieren, was benötigt wird, um den Fall aus dem Test zu bestehen. Sie werden nicht denken, generische Tests oder andere Fälle zu bestehen, die nicht von diesem Test abgedeckt sind. Einmal implementiert, führen Sie den Test auf die Herstellung von Bus. Auf. Der letzte Schritt ist Wieder Faktor, wenn Sie an Ihrer Lösung sehen und Sie sehen, was Sie verbessern können oder was Sie wieder verwenden können, ohne in der Funktionalität als nächstes geändert, Sie werden einen neuen Test für eine andere Funktionalität aus der gleichen User Story denken. Oder wenn Sie mit dieser User Story unten sind, können Sie eine andere Anforderung annehmen, um Fälle auszudenken, um einen neuen Test zu schreiben, den Sie waren. Wiederholen Sie den Zyklus immer und führen Sie den Entwurf. Stehen Sie während des Tages ständig auf, bis Sie nach Hause gehen. Wie lange denkst du einer von diesem TDD-Zyklus? Sie braucht einen Monat, eine Woche, einen Tag, eine Stunde. Nun, je kürzer, desto besser, nur ein paar Minuten. Das bedeutet also, dass Sie mit sehr kleinen Schritten arbeiten. Der Titty-Entwicklungszyklus ist uns bekannt rot, grün Refraktor in rot. Sie schreiben den Test, der für eine Funktionalität fehlschlägt, die nicht vorhanden ist. Damit stellen Sie sicher, dass sie aufrufen, der nach dem Test geschrieben wird, testbar ist. Sie werden auch Bali Datum diese Spezifikation in grün Sie rief die einfachste aufgerufen, um den Test zu bestehen. Sie werden nur die Anforderung erfüllen und die einfachste Lösung schreiben, die Sie sich ausdenken können . Sie werden sich kein ausgefallenes Designmuster oder irgendein tolles Design ausdenken. An diesem Punkt in Wieder Faktor, Sie werden sich auf die Verbesserung konzentrieren, dass. Das Seufzen Hier werden Sie den Code aufräumen. Entfernen Sie sich wiederholende Kälte, die einer der schlimmsten Fellgerüche ist. Denken Sie darüber nach, den Code aus früheren Funktionalitäten zu verwenden. Sie werden sicherstellen, dass sie ihre Absicht zum Ausdruck bringen genannt. Du wirst jede Sünde entfernen, die schlecht riecht, wie der Code riecht. Sie waren eine Sache, die bewährte Praktiken das Zeichen, Prinzipien und entworfene Muster zugewiesen und anwenden Und natürlich werden Sie alle unnötigen Code löschen. 11. Pros und Cons von TDD: Kreuz und Nachteile aus TDD. Was sind die Vorteile von Use-Entität? Es bietet eine signifikante Reduzierung der Box. Diese Ausfallzeit kann in eine Menge Q A Zeit sparen und Rückstände in der Produktion vermeiden übersetzt werden. Du bekommst ein besseres Design. Das ist ein sehr wiederverwendbares Design mit nicht-Rhythmus sie mit hoher Kohäsion genannt. Niedrige Kopplung auf die Einhaltung der Richtlinien aus sauberem Code, das Team hat ein besseres Gefühl von Vertrauen und Kommunikation durch die Wahrheit. - Aus dem Test. Der Test ist selbst eine Bereicherung. Sie verlassen Spezifikationen. Sie dokumentieren, was das System tun kann. Sie können ausgeführt werden, um es zu validieren. Am Anfang, es geht erfordern Mühe. Langfristig hat das Team jedoch eine höhere Produktivität. Pflegen Sie die Fähigkeit ist einfacher unter. Es gibt ein hohes Maß an Vertrauen, um Änderungen vorzunehmen. Was sind die Nachteile aus der Verwendung? Entität? Es ist schwierig, für Integrationstests zu verwenden. Es ist schwierig für Szenarien wie Benutzeroberfläche, dass die Basis Netzwerk externe Systeme, fünf Systeme, vor allem Legacy Mantel die Unterstützung von der Verwaltung. Für ein Team, das er adoptiert, ist TDD unverzichtbar. Die Tests sind Teil der kalten Basis, und sie müssen auch gewartet werden. Sie möchten alle guten Gestaltungsprinzipien auch auf den Testlack auftragen. Sie müssen den Test als auch zu refraktieren, so dass erfordert eine Zeitinvestition unter könnte ein falsches Gefühl der Sicherheit sein. Meine Gruppe gesehen TDD ist kein Ersatz für Q A auf sonst, so dass Sie wirklich guten Test auf gute Testabdeckung haben können. Aber Sie können die Anforderungen nicht verstehen oder in einigen fehlen, außer auf Kriterien. In diesem Diagramm können Sie die Ebene von Stress oder Chaos in einem Team oder Projekt entlang der Zeit bis zu einem Termin mit oben aus dem Zeichen sehen. Am Anfang ist der Stress sehr gering. Dinge scheinen gut zu laufen, aber eine bald fragen Sie sind in der Nähe der Frist. Not, unraced Zunahme. Dinge funktionieren vielleicht nicht. Eine vermutete viele Änderungen sind in der letzten Minute erforderlich, aber Änderungen nehmen Zeit auf Pause andere Funktionalitäten. Am Ende des Projekts ist die Belastung sehr hoch. Welche Stadt am Anfang, die Belastungen hoch. Alles sieht langsam schwierig aus, aber bald geht das Projekt weiter. Änderungen werden einfacher und schneller Integration von Modulen. Es ist keine große Sache, und das Team fühlt sich zuversichtlich. Wenn Sie in der Nähe der Veröffentlichung sind, sind die Dinge in einer guten Form. Grundsätzlich mit TDD mildern Sie mit TDDeinen Großteil des Risikos. Am Anfang. In diesem Diagramm wird die Devolution von den Konstruktionsprinzipien entlang der Zeit verglichen. In einem Projekt mit bis aus dem Zeichen oder Test später beginnen Sie mit einem großen Design, das alle möglichen Fälle in der Zukunft abzudecken scheint. Aber wir lange die Zeit vergeht, die Wahrheit ist anders. Neue unerwartete Anforderungen erscheinen auf seiner schwer, ihr Design anzupassen. Daher sind alle Design-Prinzipien, die Sie mögen und wünschen, wie hohe Kohäsion Low Coop Ling, bekannt repetitive, genannt Wiederverwendbarkeit und andere erheblich reduziert. Mit TDD beginnen Sie mit kleinen Designs nur für ein paar Features, und Sie haben das Zeichen übernommen, um neue Funktionen hinzuzufügen, aber immer auf der Suche nach guten Praktiken und Designprinzipien zu erfüllen . 12. Verkaufssystem – Teil 1: Gesamtbetrag mit Rabatt: ditty Beispiel. Stellen wir uns vor, wir arbeiten an einem Verkaufssystem, das sich in der Entwicklung befindet. Es gibt viele verwenden ihre Geschichten, und einige von ihnen wurden bereits entwickelt usin TDD. Wir sind verpflichtet, eine Geschichte Verwendung in der testgetriebenen Entwicklung zu implementieren. In dieser Anforderung möchte der Verkäufer einen 10% Rabatt auf den Preis des Produkts geben, wenn man fünf Artikel oder mehr kauft , es sei denn, das Produkt ist im Verkauf, Lassen Sie uns in sie kommen. Wir beginnen mit dem Red Step aus dem testgesteuerten Entwicklungszyklus, um einen Test zu schreiben, der fehlschlägt . Dies ist ein Projekt, das in der Entwicklung ist. Es gibt bereits eine Bestell-Testklasse mit Komponententest für die Auftragsklasse aus der Produktion , wir werden hinzufügen und Sie sind wichtig, um zu testen, dass ein Rabatt angewendet wird. Wir schreiben die drei Abschnitte von einem Unit-Test in arrangieren mit einer Geldstrafe, dass wir eine neue Bestellung auf dem Produkt Hammer mit dem Preis von 20 verwenden werden . In der Tat nennen wir die bestehenden Methoden an ich versuchen die ungerade fünf Artikel aus dem Produkt, um die Bestellung auf Schließlich in der Behauptung, wir sagen, dass der Rabatt auf die bestehende Methode angewendet wurde erhalten insgesamt 90 zurückgegeben. Jetzt sind wir bereit, diesen Test auf seinem Gesicht auszuführen, weil unser Test 90 erwartet, aber die Methode insgesamt 100 zurückgegeben wird. Werfen wir einen Blick auf die Bestellklasse, die bereits im System vorhanden ist. Es gibt einige Methode erhalten insgesamt, dass es über seine Auftragspositionen Objekt auf Summen Die Zwischensumme von jedem a d n. Es gibt so einige Werfen wir einen Blick auf die Auftragspositionsklasse. Die Eingefleckten stehen auf. Total gibt nur den Preis des Produkts multipliziert mit der Menge in der Auftragsposition zurück. Wie wir die neue Funktionalität implementieren können. Sie können sich hier viele großartige Lösungen vorstellen, aber lassen Sie uns genau das erste einfache, was wir uns vorstellen können. Jetzt sind wir im grünen Schritt aus dem TDD-Zyklus. Wir ändern die Untertitelmethode, also wenn die Menge größer ist oder gleich fünf, wir geben den Preis multipliziert mit der Menge und syrah 50.9. Andernfalls haben wir gerade den Preis multipliziert mit der Menge zurückgegeben. Jetzt können wir den Test auf es passieren laufen. Es ist implementiert. Nun gehen wir auf die Wieder Faktor Schritt sind kalt. Sieht nicht richtig aus. Wir sehen, dass es dupliziert mit geringfügigen Abweichungen vom Diskontsatz aufgerufen wird. Lassen Sie uns die Extrakt lokale Variable re Factoring-Technik auf diesen Diskontsatz angewendet. Jetzt haben wir einen Sortenabzinsungssatz initialisiert mit einem, aber wenn die Menge fünf oder mehr ist, haben wir es auf neun Sirup geändert. Die vorherige Kälte wird durch einen Verweis auf die neue Variable ersetzt. Mal sehen, ob das etwas kaputt gemacht hat oder nicht. Wir um den Test darauf bestehen. 13. Verkaufssystem – Teil 2: Rabatt berechnen: Jetzt sind wir wieder in den Roten Schritt. Die Akzeptanzkriterien aus dieser Geschichte erfordert zu berechnen, was der Rabatt war, den wir geliefert. So erstellen wir eine neue Desk-Methode für diese Funktionalität namens Testbestellartikel Rabatt. Wir erstellen eine neue Bestellung auf dem Produkt ab Preis 20. Wir sind fünf Versuche aus dem Produkt, um die Bestellung auf Wir sagen, dass der Rabatt berechnet wurde 10. Also, was machen wir jetzt? Wir sollten den Tod ausführen, aber wir können nicht, weil sie diese Zählmethode nicht in der Ordnungsklasse existiert. Wir haben es gerade erfunden in Dieser Test ist gut, TDD mit Programmierung durch Absicht zu kombinieren, mit der Programmierung durch Absicht, wir denken, welche Methode oder Verantwortung und Objekte sollten gewinnen Moke es auf wir später erstellt haben . Lassen Sie uns die neue Methode erstellen. Erhalten Sie Rabatt in der Bestellklasse, weil wir in Red Step sind. Wir sind nicht an der Umsetzung interessiert. So können wir einfach Null zurückgegeben Jetzt können wir den Test ausführen und werden vermutet Es verblasst Der Test erwartet Erhalten Rabatt zurück 10 aber Rückgabe Null Lassen Sie uns es Bus machen. Wir haben einen Test, der 10 erwartet, aber unsere Methode ist die Rückkehr in Getreide. Was ist das einfachste, was wir tun können, um den Test zu bestehen? Und wenn ich das Einfachste sage, meine ich buchstäblich das Einfachste. Wir können uns nur 10 zurückgeben. Das ist es, was der Test vermutet. Jetzt führen wir den Test auf seinem Grün aus. Ich weiß, dass Sie denken, dass albern aussehen, aber die Idee ist, Babyschritte zu machen. Da wir 10 zurückgegeben haben, müssen wir die Funktionalität mit einem anderen Testfall abdecken. Wenn wir implementiert haben, erhalten Rabatt abgeschlossen, werden wir die Gelegenheit verpassen, andere Fälle in einem echten Projekt mit Komponententest zu testen, wollen wir viele Fälle abdecken, einschließlich Randfälle. Aber wir wollen mit einem fehlgeschlagenen Tests für jeden Fall beginnen. Also bewegten wir uns mit Babyschritten. Vielleicht ergibt das mehr Sinn. Mit dem nächsten Test aus der Sicht des Testers werden wir nicht vertrauen, dass diese Zählung funktioniert gut, nur weil es einen Test besteht, werden wir sehen, wie wir es brechen können oder was mit anderen Szenarien passiert ist. Zum Beispiel können wir hier einen Test für weitere sechs Artikel aus dem Produkt erstellen. Wir respektieren, dass Get Rabatt zurückgegeben 12. Wir führen den Test auf den ersten Testdurchgängen durch, aber der neue stand einem Verdächtigen in 12. Aber erhalte Rabatt zurück 10. Ja, hol dir diese Zählung. können uns nicht täuschen. Also, wenn du in Grün bist, musst du das Dummste schreiben, um den Test zu bestehen. Eigentlich toe voll Der Test in rot mit auf Verkehrscode darin ist verdächtig und erstellt . Testen Sie auf neue Fälle. Wir erzwingen eine ordnungsgemäße Umsetzung. Wie können wir umsetzen? Sie erhalten diese Zählmethode korrekt. Wir können die Auftragspositionen aus dem Auftrag mit Programmierung iterieren. Meine Absicht. Wir gehen davon aus, dass es eine Methode namens get line discount. Diese Methode existiert nicht. Also müssen wir es schaffen und wir schaffen etwas Einfaches. Wenn die Menge fünf oder mehr ist, könnte der zurückgegebene Preis mit Menge bereitgestellt und mit Cira 50.1 multipliziert werden. Andernfalls geben wir Null zurück. Wir haben den Test im Bus durchgeführt. Lasst uns Reflektor! Wenn wir uns den Code ansehen, sieht er komisch aus. Es gibt sich wiederholenden Code. Zwei Methoden haben eine ähnliche Erkältung. So können wir eine geschlagene lokale Methode anwenden, um eine neue Methode namens get line total zu erstellen. Wir erstellen die get-linien-Gesamtmethode, um den Preis multipliziert mit der Menge zurückzugeben und die anderen Methoden zu aktualisieren , um die neue Methode aufzurufen. Aber nicht so schnell. Lassen Sie uns den Test ausführen, um sicherzustellen, dass diese Änderung auf ihrem Grün funktioniert. Wenn wir wieder auf die Klasse schauen, sehen wir, dass insgesamt aufsteht und lügen. Discount unsere Stimme, Berechnung ihrer Diskontsatz, aber auf unterschiedliche Weise und erhalten subtotal. Es gibt einen Multiplikator für die Summe mit 0,9 in der Get-Linie. Rabatt ist Syrien 0.1, das ist das gleiche, aber mit einer anderen Perspektive. Dies ist auch kalt dupliziert. Wir können eine getroffene Methode anwenden, um eine neue Methode zu erstellen. Holen Sie sich diese Zählrate wir extrahiert, erhalten Rabattsatz uns eine neue Methode und aktualisiert die Referenzen in bekommt insgesamt und in get line Rabatt US-Aufrufe auf die neue Methode. Wir sind bereit. Verwenden Sie im Code, um sicherzustellen, dass dies auf Grün funktioniert. Wurden den den Test laufen, werden sie lügen. Rabatt funktioniert, aber es ist nicht leicht zu lesen. Eine andere Möglichkeit, den Rabatt außerhalb der Linie zu berechnen. Cool V, um die Zwischensumme auf die Zeilensumme abzuziehen. Wir machen solche Änderung unseren Lauf den Test, um sicherzustellen, dass es funktioniert. Sie können sich mehr Dinge ausdenken, um zu verbessern, aber soweit Sie sehen können, sieht die Auftragspositionsklasse viel einfacher aus. 14. Verkaufssystems – Teil 3: Produkt zum Verkauf: wir sind wieder in den roten Schritt, weil wir gehen, um Produkte zu behandeln, die im Verkauf sind. Diese Anforderung besagt auch, dass, wenn das Produkt im Verkauf ist, kein Rabatt angewendet werden muss. Lassen Sie uns eine neue Testmethode in der Reihenfolge Testklasse erstellen. Wieder erstellen wir eine neue Bestellung für ein neues Produkt. jedoch die Programmierung für die Absicht verwenden, gehen wir von einem neuen Parameter aus, der angibt, dass dieses Produkt zum Verkauf steht. Andi. Jetzt behandelt diese Anwendung nicht das Konzept, dass das Problem im Verkauf sein kann. Wir kaufen fünf Einheiten von diesem Produkt auf in der Assert Abschnitt mit sagen, dass sie insgesamt Renditen 100 erhalten , weil es keinen Rabatt. Wir können es noch nicht ausführen, da das Produkt noch keinen solchen Konstruktor mit dem on say Parameter . Wir haben einen neuen Konstruktor in der Produktklasse erstellt, der darauf hinweist, dass im Verkauf steht. Lassen Sie uns den Test auf es fehlgeschlagen, weil der Rabatt angewendet wurde und erhalten insgesamt 90 zurückgegeben . Es gibt die Auftragspositionsklasse mit der Methode erhalten Rabattsatz, die von anderen Methoden wiederverwendet wird . Was wir tun können, um den neuen Testbus zu machen. Ja, wir können das ändern, wenn Bedingung, um zu überprüfen, dass das Produkt nicht im Verkauf mit Programmierung. Meine Absicht, Wir gehen davon aus, dass das Produkt eine Methode haben sollte, ist im Verkauf. Wir erschaffen. Die Methode ist im Verkauf. In der Produktklasse führen wir den Test Hyundai Path aus. Wenn wir uns die Bruderklasse ansehen, was wir Faktor wieder können. Obwohl Konstruktoren einfach sind, wird die Zuweisung von Parametern zu den Eigenschaften dupliziert. Wir können von einem Konstruktor zum anderen zur Wiederverwendung aufrufen, wenn man einen Bruder mit nur dem Namen auf dem Preis erstellt . des Fehlers gehen wir davon aus, dass das Produkt nicht mit einem falschen Parameter zum Verkauf steht, um sicherzustellen, dass wir auf dem Test auf seinem Grün sind. 15. Hinweise und Empfehlungen für TDD: Hinweise und Empfehlungen. Für TDD der wichtigste Ratschlag in der testgetriebenen Entwicklung. Glauben Sie nicht, dass Sie Recht haben. Sie riefen früh Zeichen vor, direkt im Test. stattdessen an Beispiele dafür, Denken Siestattdessen an Beispiele dafür,was das System tun sollte und wie werden Sie testen? Ich weiß, dass es für Entwickler schwierig ist, wenn es ein Problem gibt. Es ist aufregend das Natürliche, Klassen, Strukturen und Muster auszudenken . Aber halten Sie es Schritt zurück und denken Sie zuerst an den Test. Wenn Sie zuerst an das Design denken, werden Sie eine Art von klein im Voraus machen. Das Schild. Ich bin sicher, dass Sie eine Struktur finden können, die schön aussieht, aber es kann ein Über-Design sein und schwieriger zu modifizieren. Beginnen Sie mit dem Test und vertrauen Sie darauf, dass der Prozess Sie mit einem großartigen Design überraschen wird, das Sie nicht mit Würde hätte vorausdenken können. Sie werden die konzipierte, einfache Onley für die Probleme, die Sie jetzt adressieren. Denken Sie daran, dass eines der Prinzipien aus dem Agin-Manifest Einfachheit ist unerlässlich. Die Kunst, die Menge der Arbeit zu maximieren, die nicht getan Einheit. Wir wollen kleine Schritte geben, die Ihnen helfen, eine gute Abdeckung aus Test und nur richtig zu schaffen . Sie riefen Sie brauchen an. So bewegen wir uns zum Beispiel in Babyschritten . Wenn der Test erwarten, dass keine nur neu in Ihrer Produktionsmethode zurückgegeben wird? Ja, ein blöder Hintern klingt es. Erstellen Sie dann einen weiteren Test. Das s Bhagwan Tu minus eins oder der maximale ganzzahlige Wert. Wir wollen nur für die Probleme entwerfen. Ich bin gespannt, dass wir uns gerade ansprechen. Wenn Sie für mehr Fälle programmieren, jung der Test Sie die Einfachheit und richtige Kälte überschreiten, die weniger testbar ist. Kannst du dir eine Definition ausdenken? Guter Mantel. Wie werden Sie vergleichen Guter Code Bären ist schlechter Code Laut Michael Feathers ohne Test aufgerufen ist schlechter Code. Es spielt keine Rolle, wie gut die Rückkehr ist. Es spielt keine Rolle, wie hübsch oder objektorientiert oder gut gekapselt es mit Test ist. Wir können das Verhalten von unserem Code schnell nachweislich ändern Ohne sie wissen wir wirklich nicht, ob unser Code besser oder schlechter wird. In der Branche ist Legacy Gold oft verwendet uns ist langfristig für schwierig, Kälte zu ändern, die wir nicht verstehen. Aber Michael-Federn haben Recht mit einer anderen Definition. Legacy-Code wird einfach ohne Test aufgerufen. Sie könnten denken, dass dies schwerwiegend ist, können Sie sagen. Was ist mit Klink schuldig? Wenn eine kalte Basis sehr sauber und gut strukturiert ist, ist das nicht genug? Nun, lassen Sie uns die Dinge nicht gut mischen, Appling-Code. Aber es ist nicht genug. Ein Team nimmt hohe Ress, wenn sie große Änderungen ohne Test vornehmen. Es ist, als würde man Luftgymnastik ohne das Netz machen. Es erfordert außerordentliche Fähigkeiten. 16. Einführung in die Doubles: Stubs und Mocks: Tod verdoppelt Markierungen auf Stopps. Würde ist ein bisschen schwieriger mit komplexer Umgebung. Angenommen, der Service-Manager ist Ihr kompetenter und Sie müssen es testen. Ah, Service-Manager ruft viel von externen Diensten ab Wenn Sie die Rial-Dienste in Ihrem Test nutzen , kann Ihr Test auf dem Service-Korridor langsam sein. Uninspizierte Werte, die Ihre Tests noch seriös machen. Zum Beispiel kann Ihre Komponente mit einem Währungsumtausch verbinden, ein p I, das verschiedene Werte für die Euro-Dollar-Währung jede Minute zurückgeben kann oder vielleicht nach unten oder eine Ausnahme auslösen kann. Was wir wollen, ist ein seriöser Test, der die Kontrolle aus dem Szenario nimmt. Sie möchten sehen, wie sich die aufgerufene Produktion verhält, wenn die Währung 1.1 oder 1.2 ist oder ob ein Pfeil im externen Dienst vorhanden ist. Was wir tun können, ist, Test-Doppelmarken oder Staffs zu verwenden, um den Rial zu ersetzen. Servicemarken und Staffs sind Objekte, die wir erstellen können, indem wir die gleiche Schnittstelle wie externe Dienste implementieren . Aber sie sind unter unserer Kontrolle, und wir können die Szenarien simulieren, dass wir Menschen in den Weltraum fliegen wollen Prozent interessante Herausforderungen für Ingenieure und Astronauten. Eines der schwierigsten ist, wie man sicherstellt, dass ein Astronaut bereit ist, in den Weltraum zu gehen. Ein vollständiger Integrationstest für das Space Shuttle erfordert, im Weltraum zu sein und das , und das ist offensichtlich keine sichere Möglichkeit, Astronaut zu testen. Deshalb hat die NASA volle Simulatoren, die die Umgebung vom Space Shuttle nachahmen, wodurch externe Abhängigkeiten im Weltraum entfernt werden. Eine externe Abhängigkeit ist ein Objekt in Ihrem System, das Sie kalt im Test sind, interagieren mit über Sie haben keine Kontrolle. Häufige Beispiele sind fünf Systembedrohungen, Speicherzeit und so weiter. 17. Doppelte Strategien testen: diese Doppelstrategien, um die externen Abhängigkeiten zu ersetzen. Wir benutzten Test-Doubles wie ein Schauspieler, der einen Double benutzt, um ihn in Action-Szenen zu ersetzen . Ein Teil der Einheit ist Doppelstrategien. Sind Stopps Markierungen auf Container-Teststopps sind Objekte, die Laufzeitumgebung in das zu testende Objekt mit Abhängigkeitsinjektion eingefügt werden. Dies ist in der Ordnungum die Farbe vom Rial zu isolieren. Implementierungszeichen ähneln dem Unterschied, den sie von den Clientobjekten aufgerufen wurden und dass Sie überprüfen möchten, ob Ihr Code bestimmte Aufrufe bestimmter Methoden außerhalb der Markierung ausführen . Hier haben wir eine Klasse, die wir testen wollen. Das interagiert mit einem externen Dienst, der eine Schnittstelle auf seiner riel-Implementierung , die wir in der Produktion verwenden, weil wir Komposition gegenüber Vererbung bevorzugen und wir Abhängigkeitsinversion unserer Klasse Hasta-Zusammensetzung mit der Schnittstelle verwenden , es hängt von der Schnittstelle und nicht von der Implementierung ab. Das ist einfach, ein neues Monk-Objekt zu erstellen oder uns eine Implementierung von der Schnittstelle zu stopfen, die UN in Laufzeit an das Objekt aus der Klasse auf ihrem Test injiziert hat. Unsere Komponententests werden jedem Komponententest ähnlich sein, mit dem Unterschied, dass es einen Mock oder Sachen erstellt, der es in das Objekt von der zu testenden Klasse injiziert wird , wie man Stopps, Pflicht und Ausführung aus dem Test verwendet . Das zu testende Objekt ruft Methoden auf, um zu glauben, dass es sich um die reale Abhängigkeit handelt. Der Stopp gibt nur Werte zurück, die für diesen Test konfiguriert wurden. Wenn Sie das Zeug verwenden, wird die Wüste in der zu testenden Klasse durchgeführt. Der Test behandelt die zu testende Klasse wie eine Blackbox. Bei der Verwendung von Markierungen während des Tests kommuniziert das zu testende Objekt mit dem Mock-Objekt und die gesamte Kommunikation wird in der Markierung aufgezeichnet. In der Assert verwendet der Test das Markierungsobjekt, um zu überprüfen, ob der Schreibtisch bestanden ist. Der Test behandelt die zu testende Klasse ein bisschen mehr wie ein weißes Buch und überprüft, wie die Richtung mit dem Service oder Mark Washburn aus dem Objekt auf ihrem Schreibtisch gebildet wird. 18. Stub: Stummel. Beispiel. Wir werden zum ersten Beispiel aus dem Komponententest aus dem Verkaufssystem zurückkehren. Wir haben ein Zellensystem mit einer User Story, um die Änderung an einen Kunden zurückzugeben. Ein Schmerz in bar Wenn wir die gleiche Klasse sehen, ist es sehr einfach. Es gibt eine Methode geändert werden, die den Betrag mit dem erhält, was der Kunde ist. Spanien US A. Parameter auf gibt den Betrag abzüglich der Gesamtsumme aus dem Verkauf zurück. Jetzt haben wir eine Union-Nutzerstudie. Als Kunde möchte ich die Summe aus dem Verkauf in anderer Währung sehen, in bar in anderer Währung bezahlen auf meine Änderung in einer Währung bekommen. Aber vorerst müssen wir nur Euro auf US-Dollar abdecken. An diesem Punkt behandelt das System keine andere Währung als US-Dollar. Beginnen wir mit der Erstellung eines Schreibtisches für einen einfachen Fall. Der Gesamtumsatz ist in US-Dollar US-Dollar . Das Kundentempo in US-Dollar US-Dollar auf die Änderung ist in US-Dollar US-Dollar . Wir erstellen einen neuen Verkauf oder 59 U. S. Dollar. Wir nennen die Methode geändert, was darauf hinweist, dass der Kunde mit $100 auf die Änderung in US-Dollarwill US-Dollar , und wir behaupten, dass die Änderung 41. Aber wir können den Test noch nicht durchführen, weil die gleiche Klasse keine Währung hat. Also haben wir einen neuen Konstruktor erstellt, den wir im Test mit einer Parameterwährung erfunden haben. Und wir sind die neue Methode geändert werden, was den Betrag der Zahlungswährung unter geänderter Währung angibt. In diesem Fall können wir einfach Null zurückgeben. Wir führen den Test darauf fehlschlägt, welche Änderungen wir tun können, um den Test zu bestanden. Um dies zu implementieren, weil der Test US-Dollar vermuten, können wir einfach die alte Methode zurückgeben geändert werden. Das funktionierte für US-Dollar. Wir sind auf dem Test in seinem Bus. Lassen Sie uns nun einen neuen Test für den Fall erstellen, dass die Summe in US-Dollarist US-Dollar , die Kundenpaste mit Euro. Ich habe den Wechsel in Euro erhalten. Wir schaffen ein Segel von 160 in US-Dollar US-Dollar . Wir nennen die get change Methode aus dem gleichen, was darauf hinweist, dass der Kunde mit 200 Euro unerwünschte Änderung in Euro einfügt. Und schließlich behaupten wir, dass die berechnete Änderung 80 ist. Wir führen es auf seinem Gesicht, weil die gleiche Klasse immer noch in US-Dollarauf Renditen 40 berechnet US-Dollar . Hier sehen wir die Schnittstelle aus dem Währungsumtauschservice. Das ist eine externe Abhängigkeit. Es hat eine Methode. Rufen Sie eine Währung ab, die den Wechselkurs von einer Währung in eine andere zurückgibt. Es gibt eine echte Implementierung, aber wir wollen unsere eigenen Sachen erstellen. Wir gehen zurück zu unserem Test und wir werden Mücke verwenden, die ein Rahmen ist, um Staffs Marken auf anderen Arten zu erstellen . Aus diesem Doppel, erstellen wir einen Stub mit einer Mock-Methode Der Bus in der Schnittstelle Glas Asa Parameter auf wir gehen Figur zu stoppen sagen, dass, wenn die Methode erhalten Währung mit den Parametern US-Dollar und Euro aufgerufen wird , es muss 0.75 zurückgeben. Dann injizieren wir den Stopp in den Verkauf mit der Methode gesetzt Währungsdienst auf. Wir führen den Test, aber sein Gesicht, weil wir keine Änderung an der kalten aus Get geänderte Methode noch, wie wir den Schreibtisch Chef machen können, werden wir so etwas implementieren, wenn die Währung der Zahlung anders ist als die Währung der Verkauf. Wir rufen den Währungsdienst an, um die Summe mit der gleichen Währung der Zahlung zu vergleichen, auf die wir die Differenz vom Zahlungsbetrag zum Gesamtvergleichenden zurückgegeben haben, und wir führen den Test auf seiner grünen. Kannst du sagen, was mit dieser Methode falsch ist? Nun, Sie können sagen, dass, wenn der Verkauf in US-Dollarist US-Dollar , der Kunde Tempo in Euro. Aber sobald die uns Dollars jagen, wird diese Methode nicht funktionieren. Aber wir wollen den Fall jetzt nicht abdecken, weil wir Babyschritte machen. Wir müssen einen Test mit einem solchen Fall erstellen. Machen Sie es scheitern. Machen Sie es mit dem Bus. Dies ist ein schneller Vergleich zwischen Stopps und Schlössern. Eine Zusammenfassung Stopps sind viel einfacher. Und es sei denn, Sie haben etwas ganz Besonderes, sollten Sie Stopps über Markierungen bevorzugen. 19. Test: Testcode-Muster. Gerard Massaro zeigt uns, was die Despot-Kurven und Best Practices für Komponententests sind. Dies ist eine Zusammenfassung davon. Das ist das Mindeste von diesen Mustern. Diese Onley eine Sache. Normalerweise bedeutet das, dass ein Protest behauptet wird. Verwenden Sie eine Testklasse der oberen Klasse, die für einen Test pro Feature getestet wird. Nie verwendet mehr als einen Protest mehr, aber viele Stopps pro Test sind in Ordnung. Eso lieber Stopps über Markierungen. Es gibt auch zumindest aus Test Männchen, die Ihnen helfen, zu identifizieren, wenn die Tests kalt außer Kontrolle geraten. Wenn Sie Tesco Duplizierung haben, können Sie Perama versuchen, testen oder testen Dienstprogramm verwenden . Wie die stabile Kälte beim Schreiben des Tests aussieht. Zuerst sind wir in Mut, testbare Kälte zu schreiben. Wenn Sie Ihre Lösungen bewerten, können Sie eine mehrschichtige Architektur Muster aus der Unternehmensarchitektur unter dem Hauptdesign anwenden. Brechen Sie die Abhängigkeiten, so dass Sie mit Stuffs oder Mocks mithilfe der Unabhängigkeitsinjektion testen können. Wenden Sie die soliden Prinzipien an. Verwenden Sie das Programm in Absicht. Achten Sie darauf, Cohasset-Mäntel zu schreiben und globale Staaten zu vermeiden. Im Diagramm können Sie sehen, wie testable in der Regel wie 20. Nächste Schritte: nächsten Schritte. Dies sind einige nächste Schritte, damit Sie DDT üben können. Installieren Sie eine Entwicklungsumgebung für Ihre Programmiersprache unter dem entsprechenden X Unit Framework in Java, es wird Java Development Kid on Eclipse sein, das bereits ihre Einheit enthält. Dies sind einfache Schritte, die auf ihren Websites beschrieben werden. Aber das Beste, was zu üben TDD ist, Caritas zu tun Hat es an uns nehmen, ist die Art und Weise, Titty auf Mastered die Technik zu üben. Internet ist voll außerhalb der Website auf Blog's über TDD Qaida einige berühmte Holen Sie uns unsere Faust Burst Ball in und String Rechner starten . Ich hoffe, dass Sie diesen Fluch genossen haben, dass Es war hilfreich, wenn Sie etwas erwartet , das fehlte. Bitte lassen Sie es mich wissen. So sehe ich, wie zu verbessern oder zu kompensieren, damit ich das beste Feedback für neue erhalten Danke