Die besten Programmierer machen Fehler. Der Unterschied zwischen guten und schlechten Programmierern besteht darin, dass gute Programmierer durch Tests so viele Fehler wie möglich finden können. Je schneller Sie auf Fehler testen, desto schneller finden Sie sie und desto günstiger sind sie zu finden und zu beheben. Dies erklärt, warum das Testen von Software kurz vor ihrer Veröffentlichung so problematisch ist. Die meisten Fehler werden nie gefunden, und die Behebung der gefundenen Fehler ist so umfangreich, dass Sie der Behebung nur dieser Fehler Priorität einräumen müssen, weil Sie es sich einfach nicht leisten können, sie alle zu beheben.
Das Testen mit PHPUnit ist nichts völlig anderes als der von Ihnen verwendete Ansatz. Sie haben einfach unterschiedliche Methoden. Der Unterschied zwischen beiden besteht darin, dass die Überprüfung, ob sich das Programm korrekt verhält, durch einen Stapel von Codeausschnitten erfolgt, die automatisch getestet werden können. Diese Codeausschnitte werden Unit-Tests genannt. In diesem Teil führen wir zunächst automatische Tests basierend auf dem gedruckten Testcode durch. Angenommen, wir möchten das in PHP integrierte Array Array testen. Einer der Tests, die durchgeführt werden müssen, ist die Funktion sizeof(). Die Funktion sizeof() sollte für jedes neu erstellte Array 0 zurückgeben. Wenn wir ein neues Array-Mitglied hinzufügen, sollte sizeof() 1 zurückgeben. Beispiel 1 zeigt, was wir testen wollen.
Beispiel 1. Array und sizeof()
<?php
testen
$fixture = Array( );
// $fixture sollte leer sein.
$fixture[] = "element";
// $fixture sollte ein Array-Mitglied enthalten.
?>
Die einfachste Testmethode besteht darin, die Operationsergebnisse von sizeof() vor und nach dem Hinzufügen von Array-Mitgliedern auszudrucken. Wenn 0 und 1 zurückgegeben werden, bedeutet dies, dass Array und sizeof() normal funktionieren.
Beispiel 2. Verwenden Sie print-Anweisungen, um Array und sizeof()
<?php
zu testen
$fixture = Array( );
print sizeof($fixture) "n";
$fixture[] = "element";
print sizeof($fixture) "n";
?>
0
1
Jetzt stellen wir das Testprogramm von der manuellen Interpretation auf die automatische Ausführung um. In Beispiel 3 vergleichen wir den erwarteten Wert mit dem tatsächlichen Wert und geben ok aus, wenn sie gleich sind. Wenn wir feststellen, dass einige Ergebnisse nicht in Ordnung sind, wissen wir, dass ein Problem vorliegt.
Beispiel 3. Vergleichen Sie die erwarteten und tatsächlichen Werte von Array und sizeof()
<?php
$fixture = Array( );
print sizeof($fixture) == 0 ? "okn" : "not okn"
;
print sizeof($fixture) == 1 ? "okn" : "nicht okn";
?>
OK
ok
, wir führen jetzt ein neues Element ein. Wenn der erwartete Wert vom tatsächlichen Wert abweicht, lösen wir eine Ausnahme aus. Auf diese Weise ist unsere Ausgabe einfacher. Wenn der Test erfolgreich ist, wird nichts unternommen. Wenn eine nicht behandelte Ausnahme vorliegt, wissen wir, dass etwas nicht stimmt.
Beispiel 4. Verwendung von Assertionsfunktionen zum Testen von Array und sizeof()
<?php
$fixture = Array( );
behauptenTrue(sizeof($fixture) = = 0);
$fixture[] = "element";
affirmTrue(sizeof($fixture) = = 1);
function affirmTrue($condition) {
if (!$condition) {
throw new Exception("Assertion fehlgeschlagen.");
}
}
?>
Jetzt ist der Test vollständig automatisiert. Im Gegensatz zu unserer ersten Version automatisiert diese Version das Testen vollständig.
Das Ziel des Einsatzes automatisierter Tests besteht darin, möglichst wenige Fehler zu machen. Auch wenn Ihr Code noch nicht perfekt ist, werden Sie durch gute automatisierte Tests feststellen, dass Fehler deutlich reduziert werden. Automatisierte Tests geben Ihnen die Gewissheit, dass Ihr Code fair ist. Mit diesem Vertrauen können Sie mutige Fortschritte im Design machen, besser mit Ihrem Team zusammenarbeiten, die Beziehungen zwischen Ihnen und Ihren Kunden verbessern und jeden Tag ruhig schlafen, weil Sie beweisen können, dass das System aufgrund Ihrer Bemühungen besser ist.