In der End-to-End-Testpyramide (E2E) belegen Tests eine der oberen Sprossen. Wenn Sie einen E2E-Test schreiben, können Sie sich auf die Ergebnisse Ihrer Anwendungslogik verlassen, Integrationen mit anderen Systemen testen und einen "Vertrag" für Ihre Anwendung erstellen.
Leider haben viele der Kollegen, mit denen ich zusammengearbeitet habe, keine E2E-Tests geschrieben. Zum Teil, weil sie sich intensiv mit Unit-Tests befassten und der Meinung waren, dass dies aus einer Reihe von Gründen besser sei, einschließlich des TDD-Trends. Zum Teil, weil sie glaubten, dass E2E-Tests schwer zu schreiben sind, dauert die Ausführung lange und es gibt Probleme mit der Instrumentierung.
Lassen Sie uns diese Meinungen klären und die Vorteile betrachten, die E2E-Tests bieten.
Terminologie
Lassen Sie uns die Art der Autotests unter E2E-Tests stellen. Diese Autotests sollten alle Servicefunktionen aus Sicht des Kunden abdecken. Dazu simulieren sie die tatsächliche Client-Interaktion, sei es eine HTTP-Anforderung oder klicken auf eine Schaltfläche in der Benutzeroberfläche.
Der Unit-Test-Ansatz ist besser
Das Schreiben von Unit-Tests dauert meiner Erfahrung nach viel länger als das Schreiben von E2E-Tests. Ja, zuerst müssen Sie herausfinden, wie Sie E2E-Tests besser schreiben können, aber das Gleiche gilt für Unit-Tests.
Infolgedessen deckt ein E2E-Test jedoch mehr Code ab als ein Unit-Test, obwohl im Vergleich zu einer ähnlichen Unit-Test-Suite möglicherweise weniger Zeilen erforderlich sind.
Sie müssen keine Zeit damit verschwenden, zu verstehen, wie Abhängigkeiten richtig verspottet werden, da externe Systeme in E2E-Tests zu diesen werden und die Interaktion mit dem zu testenden Dienst nach dem "Black Box" -Prinzip aufgebaut ist.
Sie müssen nicht alle Randbedingungen für eine einzelne Klassenmethode überprüfen. Dies erhöht die Flexibilität bei der Arbeit mit dem Code, da nicht die gesamte Testsuite bei der geringsten Änderung der internen Logik der Anwendung überarbeitet werden muss.
, , 100 ( ), .
backend- , API HTTP ( GraphQL) MQ. HTTP, mainstream .
Frontend- , , Web- () . , , , .
E2E , . . .. . , .
E2E
, , .
"" code-coverage. , , , , . exception, , ?
, E2E .
E2E API . , backend, E2E , , frontend .
, , E2E , unit-, .
! , E2E ?