Dieser Artikel ist eine Zusammenfassung des Buches " Unit Testing Principles ".
Beginnen wir mit der Auflistung der Eigenschaften guter Komponententests.
Zuerst. Integriert in den Entwicklungszyklus. Nur die Tests, die Sie aktiv verwenden, sind nĂŒtzlich. sonst macht es keinen Sinn, sie zu schreiben.
Zweite. Es werden nur die wichtigsten Teile Ihres Codes getestet. Nicht jeder Arbeitscode verdient die gleiche Aufmerksamkeit.
Dritte. Bieten Sie maximalen Schutz vor Fehlern bei minimalen Wartungskosten. Dazu mĂŒssen Sie in der Lage sein, effektive Tests zu erkennen und zu schreiben.
Das Erkennen und Schreiben eines effektiven Tests sind jedoch zwei verschiedene FĂ€higkeiten. Und um die zweite FĂ€higkeit zu erwerben, mĂŒssen Sie zuerst die erste beherrschen. Der Rest dieses Artikels zeigt Ihnen, wie Sie einen effektiven Test erkennen. Die Pyramide des Testens und Testens nach dem "Black Box" / "White Box" -Prinzip wird ebenfalls berĂŒcksichtigt.
Vier Aspekte guter Unit-Tests
Ein guter Komponententest sollte die folgenden Eigenschaften aufweisen: Fehlerschutz, Refactoring-Widerstand, schnelles Feedback und einfache Wartung.
Diese vier Attribute sind grundlegend. Sie können verwendet werden, um jeden automatisierten Test zu analysieren, sei es Einheits-, Integrations- oder End-to-End-Tests.
Beginnen wir mit dem ersten Attribut eines guten Komponententests: dem Schutz von Fehlern. Ein Fehler (oder eine Regression) ist ein Softwarefehler. In der Regel treten solche Fehler nach Ănderungen am Code auf.
Je mehr Funktionen verfĂŒgbar sind, desto höher ist die Wahrscheinlichkeit, dass Sie der neuen Version einen Fehler hinzufĂŒgen. Aus diesem Grund ist es so wichtig, einen guten Fehlerschutz zu entwickeln. Ohne einen solchen Schutz wird es aufgrund der stĂ€ndig steigenden Anzahl von Fehlern unmöglich oder sehr schwierig sein, das Wachstum des Projekts langfristig sicherzustellen.
Beachten Sie Folgendes, um zu beurteilen, wie gut ein Test im Hinblick auf den Fehlerschutz abschneidet:
die Menge an Code, die vom Test ausgefĂŒhrt wird;
die KomplexitÀt dieses Codes;
die Bedeutung dieses Codes fĂŒr die GeschĂ€ftslogik.
, , . , (assertions).
, -. , -, â .
, . - -.
- â . , .
. : . â .
. : , , . , , . , .
? . - . , .
:
, . . .
. -, . , .
?
, , . , . : . â , , .
â , . , , . â , .
- ( ) . , . - : , .
, . ( ), , ( ).
, , , : ( ).
, , . : . . â II .
, : , . . .
: , . :
( , );
( , ).
. 3, . â (), . â (), .
:
-. , . . , , , .
. :
. . , .
. , , .
. «» : , .
, . , .
? , . , â , â . : .
, . , . , , .
â (end-to-end) . . , , .
, . , , , . - , .
: . , , . .
â . , .
, . , , . - , .
- , , . : , .
â â , (end-to-end) . - , . . , .
. ; . , . , , . .
, ; . .
? : , . . , . , .
- CAP. , : (consistency) , (availability), (partition tolerance).
:
1. CAP ;
2. . â , , - Amazon â . .
: -, , .
. . , . , . . , .
. : ; - â ; - .
, â . : . , .
. - , -, â . ; , , (, ). CRUD- - .
â API, (, ). . , . , â .
« » « »
« » . . , , , .
« » . . , .
, : , . « ». â , -, â « » , -. -, .
-
-
WofĂŒr ist Integrationstest?