2 Stimmen

Ich bin ein php-Programmierer, der zu Python wechselt. Bitte erklären Sie mir die Wichtigkeit (oder Nicht-Wichtigkeit) von Unit-Tests. Ich habe nie Unit-Tests mit php durchgeführt!

Ich bin an einem Punkt in meinem Lernprozess über solide Softwareentwicklung angelangt, an dem mir klar geworden ist, dass der Ansatz "Pedal-to-the-Medal-Code mit Lichtgeschwindigkeit und Beten für gute Ergebnisse ohne echten Plan" nicht funktioniert.

Ich bin bestrebt, meine alten (und zugegebenermaßen nicht gerade großartigen) Methoden durch solide Praktiken zu ersetzen. Ich habe noch nie Unit-Tests verwendet, und jetzt zusätzlich zu dem Versuch, Pyramid zu lernen (was dank der gründlichen Dokumentation gut läuft), versuche ich auch zu sehen, wie Unit-Tests im Allgemeinen für mich von Nutzen sein können (auch in Zukunft Integrationstests, Regressionstests usw.). Ich habe diese Einführung zu nosetest gelesen http://ivory.idyll.org/articles/nose-intro.html und (nicht leichtfertig) sehe ich, dass Sie Unit-Tests verwenden können, um reguläre Ausdrücke zu testen, und sehe if a=1; b=1; now does a == b . Das ist alles, was ich zu diesem Zeitpunkt sehen kann. Ich brauche keinen Rahmen für diese Aufgabe. Ich kann einen regulären Ausdruck Tester, und der gesunde Menschenverstand zu "testen" verwenden. Wenn ich Unit-Tests verwenden werde, um zu sehen, ob zwei Variablen gleich sind, müsste ich dann nicht jedes Mal einen Test erstellen, wenn ich eine Variable erstelle und sie auf etwas gleichsetze? Die Beispiele aus dem Artikel scheinen ziemlich willkürlich zu sein.

Ich bin sehr offen für die Vorteile von Unit-Tests, aber ich möchte wissen, was einige praktische Anwendungen von Unit-Tests sind.

Unterm Strich: Ich habe noch nie Unit-Tests verwendet, also sagen Sie mir bitte, warum ich falsch liege und mit dem Testen beginnen sollte.

Prost!!!

7voto

slugster Punkte 48412

Unit-Tests geben Ihnen eine gewisse Gewissheit, dass Ihr Code Ihren Erwartungen entspricht. Unit-Tests sind kein heiliger Gral, sondern nur eines der Werkzeuge, die Sie verwenden können, um ein gutes Maß an Genauigkeit und Modularität mit Ihrem Code zu erreichen.

Der Einheitstest ist Ihre Erwartung. Mit anderen Worten: Ihr Test ruft den zu testenden Teil des Codes auf und misst die Ergebnisse (Rückgabewerte usw.) mit dem, was Sie erwartet haben (oder was zurückgegeben wird). Wenn die Ergebnisse nicht mit Ihren Erwartungen übereinstimmen, haben Sie entweder einen fehlerhaften Test (Ihre Erwartung war falsch), oder der zu testende Code funktioniert nicht so, wie Sie dachten.

Unit-Tests sind besonders nützlich, wenn es an der Zeit ist, Ihren Code zu überarbeiten oder zu warten. Sie können den Code ändern, die Unit-Tests ausführen und prüfen, ob Ihre Änderungen die Tests beeinträchtigt haben.

Um es kurz zu machen: Unit-Tests haben auch andere Vorteile. Normalerweise sollten Sie in der Lage sein, sie automatisiert laufen zu lassen, d.h. Sie können sie laufen lassen, wenn Sie einen nächtlichen Build machen, und dann können Sie die Ergebnisse am Morgen überprüfen. Dies ist besonders in größeren Teams nützlich, wenn mehrere Personen Code ändern oder hinzufügen können. Wenn Sie Ihren Code so konstruieren, dass er für Unit-Tests geeignet ist, führt dies auch zu einem entkoppelten Ansatz bei der Erstellung Ihrer Anwendung. Dies reduziert den Code-Geruch und hilft bei der zukünftigen Wartbarkeit und Erweiterbarkeit.

Editer :

Beim Testen von did_earn, muss ich in Testfällen hart kodieren. Würde ich z. B. user5 manuell als Parameter übergeben (user5 hat sich 400 Mal eingeloggt) und sicherstellen, dass er das Abzeichen nicht erhält, aber user6 (500 Logins) erhält das Abzeichen?

Ja, das ist genau das, was Sie tun werden. Das bedeutet, dass Sie, wenn Sie die interne Implementierung von did_earn dann können Sie mit Ihren Tests sofort feststellen, ob es noch Ihren Erwartungen entspricht (dass es nur wahr ab 500 Anmeldungen). Wenn Sie Code testen, der nicht stark typisiert ist (z. B. eine Skriptsprache), sollten Sie auch prüfen, was passiert, wenn Sie der Funktion eine Zeichenkette anstelle einer ganzen Zahl übergeben usw.

Auch wenn es im Moment vielleicht nicht auf Sie zutrifft, sollten Sie sich auch das Konzept der verhöhnend , IoC y Injektion von Abhängigkeiten die allesamt Techniken sind, die bei Einheitstests häufig verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X