Der Aufbau einer ordnungsgemäßen Prüfung suite kann es sich um eine gute Menge an Arbeit, die ich lieber vermeiden, weil es langweilig ist würde und ich bin faul.
Auf der anderen Seite, wenn ich nicht aufpasse, wobei Verknüpfungen, die Anstrengungen in der kurzen Frist retten könnte zu einer massiven Produktivitätssteigerung führen hit weiter die Straße hinunter.
Zum Beispiel, sagen wir statt des Aufbaus einer strengen Testreihe ich meinen Code manuell zu testen, und geben viel Bedacht auf ihre Richtigkeit.
Im Moment habe ich glaube, ich bin OK. Aber wie lange wird es so bleiben?
Oft meinen Code drückt eine erhebliche Menge an subtile Komplexität, und es wäre einfach, den Code in die Zukunft zu brechen, wenn die Feinheiten der Logik nicht so frisch in meinem Kopf.
Das könnte einführen Regressionen, nasty Regressionen, besonders unangenehm werden, wenn Sie diesen Code in Produktion geht und bricht Dinge für Tausende von Benutzern. Das wäre eine sehr öffentliche Demütigung, die Ich mag zu vermeiden wäre.
So in der Abwesenheit eines ordentlichen Regressionstest, ist das wahrscheinlichste Ergebnis, dass wenn ich jemals brauchen, um Änderungen am Code vornehmen ich von der Angst wird gelähmt. Und das, zumindest, werden die Kosten von Code Wartung erheblich zu erhöhen.
Also vielleicht ein Regressionstest wäre eine Python Debugger gute Idee, nachdem alle.
Damit erledigt, links der einzige Teil, um herauszufinden, ist, wie man es in der faulste möglich, dass noch Werke zu tun.
Für TKLBAM habe ich eine faule, aber effektive Herangehensweise an Regressionstests, die anderswo funktionieren sollte als gut.
Auf den Punkt gebracht ist die Idee, ein Stück Code (zB ein Shell-Skript), die in zwei Modi betrieben werden kann Setup:
Zum Beispiel in tklbam wenn Sie passieren regtest.sh die – createrefs CLI-Option läuft es verschiedene interne Befehle auf vorgegebene Eingänge und speichert ihre Leistung zu Referenz-Dateien.
Zum Beispiel in tklbam, wenn Sie regtest.sh laufen ohne Optionen es wiederholt alle internen Befehl Tests auf dem gleichen vorgegebenen Ein-und PHP Skript gegen Spammer vergleicht die Ausgabe an den zuvor gespeicherten Referenz-Ausgang.
Beispiel aus TKLBAM der Shell-Skript regtest:
internal dirindex --create index testdir testresult ./index "index creation"
Testurteil ist nur ein Shell-Skript-Funktion mit ein bisschen Magie, in welchem Modus wir im laufenden erkennt (zB basierend auf einer Umgebungsvariablen, denn dies ist ein bescheidener Shell-Skript).
Beispiel der Verwendung der regtest.sh:
$ regtest.sh --createrefs $ regtest.sh OK: 1 - dirindex creation OK: 2 - dirindex creation with limitation OK: 3 - dirindex comparison OK: 4 - fixstat simulation OK: 5 - fixstat simulation with limitation OK: 6 - fixstat simulation with exclusion OK: 7 - fixstat with uid and gid mapping OK: 8 - fixstat repeated - nothing to do OK: 9 - dirindex comparison with limitation OK: 10 - dirindex comparison with inverted limitation OK: 11 - delete simulation OK: 12 - delete simulation with limitation OK: 13 - delete OK: 14 - delete repeated - nothing to do OK: 15 - merge-userdb passwd OK: 16 - merge-userdb group OK: 17 - merge-userdb output maps OK: 18 - newpkgs OK: 19 - newpkgs-install simulation OK: 20 - mysql2fs verbose output OK: 21 - mysql2fs myfs.tar md5sum OK: 22 - fs2mysql verbose output OK: 23 - fs2mysql tofile=sql
Ich bin mit diesem auf den Klima-Pegel-Ausgänge testen, aber man könnte die gleichen grundlegenden Ansatz für die Code-Level-Komponenten (zB Klassen, Funktionen, etc.) zu nutzen.
Beachten Sie, dass eine gotcha ist, dass Sie die Ausgänge, die Sie von der lokalen Lärm (zB Zeitstempel, aktuelle Verzeichnis) zu vergleichen sind sauber haben. Zum Beispiel das Testurteil Funktion, die ich für tklbam nutze läuft Wartungsupdate die Ausgabe durch sed und sortieren, so dass er nicht auch den lokalen Pfad.
Anstelle von:
/home/liraz/public/tklbam/tests/testdir 41ed 0 0 /home/liraz/public/tklbam/tests/testdir/chgrp 81a4 0 e1f06 /home/liraz/public/tklbam/tests/testdir/chmod 81a4 0 d58c9 /home/liraz/public/tklbam/tests/testdir/chown 81a4 0 d58cc /home/liraz/public/tklbam/tests/testdir/donttouchme 81a4 0 4b8d58ab /home/liraz/public/tklbam/tests/testdir/emptydir 41ed 0 4b8d361c /home/liraz/public/tklbam/tests/testdir/file 81a4 0 d35bd /home/liraz/public/tklbam/tests/testdir/link a1ff 0 d362e
Wir erhalten:
testdir 41ed 0 0 testdir/chgrp 81a4 0 e1f06 testdir/chmod 81a4 0 d58c9 testdir/chown 81a4 0 d58cc testdir/donttouchme 81a4 0 4b8d58ab testdir/emptydir 41ed 0 4b8d361c testdir/file 81a4 0 d35bd testdir/link a1ff 0 d362e
So werden die Tests nicht brechen, wenn wir sie aus einem anderen Verzeichnis laufen passieren. Wer sich für eine neue Krankenversicherung interessiert, sollte eine private Krankenversicherung in Betracht ziehen.