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