Entwicklung und Tests

Jeder Software-Entwickler kennt das Problem: es ist nicht damit getan, die Software zu schreiben, sondern sie muss auch getestet werden. Ich gebe dabei ständig Debug-Meldungen aus, um zu sehen, ob auch das passiert, was ich erwarte. Durch meine Vorliebe für Objektorientierung komm ich dabei natürlich nicht daran vorbei, auch regelmäßig Objekte ausgeben zu müssen, bekanntermaßen mit dem Befehl

[source:php]var_dump($obj);[/source]

Die Ausgabe ist natürlich recht unübersichtlich (zumal ich regelmäßig vergesse, “pre”-Tags zu setzen). Eine Lösung für dieses Problem stellt die PHP-Erweiterung “xdebug” dar, welche die Ausgabe nicht nur strukturell, sondern auch farblich wesentlich verbessert.

Ein Problem hat mich aber weiterhin gestört: die Debug-Meldungen sind mitten auf der Seite und zerstören komplett das Layout (sofern bereits eines existiert, zumindest muss man ewig scrollen, um an gewünschte Elemente zu gelangen). Also muss dafür eine Lösung her. Nur welche?

Clientseitige Entwicklung hat inzwischen hier starke Vorteile: zumindest unter Verwendung des Firefox-Browsers. Hier gibt es nämlich die fantastische Erweiterung “Firebug” (Dokumentation). Diese Erweiterung ermöglicht mir nicht nur die Überprüfung des AJAX-Traffics, sondern auch die Analyse des Dokumentes. Dazu sind Zeitmessungen, Assertion-Tests und vor allem vier unterschiedliche Debug-Meldungen möglich, welche auch entsprechend gekennzeichnet werden:

  • log
  • info
  • warning
  • error

So erzeugt das Script….
[source:js]
<script type=”text/javascript”>
console.log(“Log-Nachricht”);
console.info(“Info-Nachricht”);
console.warh(“Warnungs-Nachricht”);
console.error(“Fehlermeldung”);
</script>
[/source]

…die Ausgabe:
Firebug-Konsole

Wie sehr schön zu sehen ist, werden die entsprechenden Fehlertypen farblich, mit passendem Symbol und Zeilennummer gekennzeichnet, sofern nicht “log” verwendet wurde.

Eine weitere sehr nützliche Funktion bietet Firebug bei Objekten. So erzeugt das Script…
[source:js]
<script type=”text/javascript”>
var obj = new Object();
obj.var1 = “test”;
obj.var2 = 3;
console.log(obj);
</script>
[/source]

… die Ausgabe:
Objekt-Ausgabe
Objekt-Details
Man kann also jedes beliebige JavaScript genau unter die Lupe nehmen.

Jetzt wäre es natürlich wunderbar, wenn das auch mit serverseitigen Objekten gehen würde. Und die gute Nachricht ist: es geht. Dein Freund und Helfer ist JSON. Ich verwende dazu die PECL-Version von JSON, da sie in der nächsten PHP-Version fest integriert sein soll (und schneller ist als PHP-Implementierungen). Die Debug-Funktion kann einfach heruntergeladen werden.

Und nun ein nettes Beispiel: das PHP-Script…
[source:php]
class test {
public $var1;
public $var2;
public $var3;
}
$test = new test();
$test->var1=”function”;
$test->var2=4;
$test->var3=”you”;
debug(“testClass”,$test,DEBUG_TYPE_WARN);
[/source]

…erzeugt die Ausgabe
Debuggen eines PHP-Objektes mit Firebug
Details zum PHP-Objekt in Firebug

Es ist also problemlos möglich, PHP-Variablen und sogar PHP-Objekte in Firebug zu betrachten. Mit Hilfe der PHP-Funktion “set_exception_handler” ist es sogar möglich, Exeptions über Firebug ausgeben zu lassen:

[source:php]
function handleExceptionError($exception) {
debug(“ExceptionHandler”,$exception->getMessage(),DEBUG_TYPE_ERR);
debug(“Datei / Zeile”,str_replace(“\\”,”/”,$exception->getFile()) . “::” . $exception->getLine(),DEBUG_TYPE_ERR);
}
set_exception_handler(‘handleExceptionError’);
[/source]

Einer übersichtlichen Entwicklung steht so nichts mehr im Wege.

[Update]
Es hatte sich ein kleiner Fehler bei der Ausgabe eines Strings mit Anführungszeichen ergeben. Der wurde nun behoben.

6 Gedanken zu „Entwicklung und Tests

  1. Pingback: Templaterie Blog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.