Meine Fragen beziehen sich hauptsächlich auf Testmethoden. Ich arbeite für eine Organisation, die TDD (Test Driven Development) betreibt. Wir verwenden AngularJS und damit seine volle Teststapel -. Jasmine für Unit-Tests und Winkelmesser für e2e Test
Wenn ein Merkmal unserer Prozesstests, indem man zuerst das Schreiben eine versagende e2e beginnt die Entwicklung und dann schreiben die Funktion unserer mit TDD. Die Tests werden nur für öffentliche Methoden geschrieben (sei es für Controller / Direktiven / Services). Das Produkt selbst enthält keine komplexe Logik (außer einigen Ausnahmen). Vor kurzem haben wir begonnen, die Tatsache diskutiert, dass es keinen Sinn, Unit-Tests für Controller in schriftlicher Form, da sie Funktionalität aussetzen, 100% davon ist der Ansicht ausgesetzt und es getestet ohnehin e2e Tests. Grundsätzlich - Unit Tests und E2e Tests überschneiden sich. Zuerst waren wir uns einig, aber dann hat diese Entscheidung eine Pandora-Box geöffnet. Schließlich könnte das Gleiche über Richtlinien gesagt werden. Also warum sie auch testen? Dann kam die Frage der Dienstleistungen auf. Die meisten von ihnen (98%) machen einfach einen Back-End-Anruf und geben die Antwort zurück. Also warum nicht einfach httpBackend verspotten und die Dienste testen, während die Controller zu testen, die durch e2e getestet werden.
Sie bekommen die Drift ....
Ich sehe Vorteile darin, sowohl Komponententests als auch E2e-Tests durchzuführen, obwohl sie sich praktisch überschneiden. Hauptsächlich - sofortiges Feedback und "ausführbare Dokumentation". Was übst du? Sie suchen noch weitere Vorteile und ist „Saft wert die squeeze“ sehen - ist es wert für die einfachsten Implementierungen überlappende Schreiben von Tests nur über diese beiden Vorteile zu erhalten
Dies ist ein großes Thema und nicht etwas, das wirklich eine autoritative Antwort haben kann, aber ich werde mein Bestes geben, um ein paar Punkte zu behandeln.
Zuerst sollten Sie über den Zweck der Tests nachdenken. Laut den Agile Testing Quadranten gibt es Unit-Tests hauptsächlich zur Unterstützung des Teams . Sie werden im Allgemeinen nahe am Produkt geschrieben (z. B. unter Verwendung von TDD, wahrscheinlich von den Entwicklern selbst) und dienen dazu, das Vertrauen des Entwicklers zu erhöhen, dass sie mit dieser letzten Änderung nichts gebrochen haben. Mit diesem Vertrauen können Entwickler effizient arbeiten und mit rücksichtslosem abadon umgestalten - der Traum von TDD. Unit-Tests beantworten nicht die Frage "Ist dies für den Zweck unseres Kunden geeignet?", Aber das ist nicht der Grund, warum sie da sind.
Funktionstests (e2e, wenn ich Ihre Beschreibung verstehe) unterstützt das Team immer noch bei der schnellen Umsetzung von Testergebnissen, beantwortet aber tatsächlich die Frage "Kann ein Benutzer das Ding machen?". Sie testen, was der Benutzer sieht, und beginnen, Ihr tatsächliches Produkt auf eine für die Benutzer sinnvolle Weise zu testen.
Die Quadranten 3 und 4 befassen sich mit der Frage, ob das Produkt das Ding gut macht (dh es ist für den Zweck geeignet und nicht nur funktional), aber das ist ein anderes Thema.
Basierend auf diesem Testverständnis hängt ein Teil der Antwort von Ihrer Teamstruktur ab. Haben Sie ein eigenes Entwickler- und Testteam? Wenn dies der Fall ist, kann es für Ihre Entwickler sinnvoll sein, Komponententests zu schreiben (sie sind ja zu ihrem Vorteil), und das Testteam kann die anderen Quadranten unabhängig voneinander handhaben (einschließlich e2e schreiben, wie sie es für richtig halten). Und wenn Ihr Test- und Entwicklerteam gleich ist? Wenn Sie eine ähnliche Bearbeitungszeit (Test geschrieben - & gt; nützliches Ergebnis) aus Ihren funktionalen / e2e-Tests bekommen können, wie aus Komponententests, kann es sinnvoll sein, sich auf diese zu konzentrieren und die Vorteile beider Methoden zu erhalten, ohne sich zu überlappen / p>
Die kurze Antwort, die ich geben würde, ist einfach zu fragen: "Welchen Nutzen haben wir aus diesem Test?". Wenn Sie Ihre Antworten für Tests finden, die sich überschneiden, kann es sinnvoll sein, die Redundanz zu entfernen.
Einige der oben genannten Punkte und ein paar mehr sind hier Ich werde jetzt aufhören zu wandern.
Tags und Links javascript angularjs unit-testing testing tdd