• Testen von Webservices

    von am 3. Dezember 2008

    Heute wollen wir mal wieder eine neue Kategorie anlegen. Obwohl wir schon einige Beiträge zum Thema Qualitätssicherung hatten, hier jetzt endlich die passende Kategorie dazu.

    Heute wollen wir einfach mal Unit Tests für Webservices anschneiden. Wir hatten bis jetzt den Ansatz, dass wir in unseren Tests den Webservice aufrufen und in unserem Fall die SOAP Antwort verifizieren. Dabei liefen Webservice und Unit Test auf dem selben Rechner. Dadurch, dass wir die ganze Zeit der komplette SOAP Server und Client aufgerufen wurde, wurden die Tests recht Zeitaufwändig. Für die ca. 20 Tests hat unser Bauprozess circa 60 Sekunden benötigt, was auf die Dauer relativ nervig sein kann. Dafür hatten wir aber eine gute Testabdeckung, was unsere SOAP Services anging. Da diese aber in einem anderen PHP Prozess liefen, wurde die Code Coverage aber nicht erkannt.

    Irgendwie wussten wir, dass wir etwas falsch, oder besser, nicht komplett richtig gemacht hatten. Aber wo war unserer Fehler. Eigentlich ganz einfach, der Ansatz die Tests über SOAP Aufzurufen war einfach nicht richtig. Der komplette SOAP Server sollte über seine eigenen Tests verfügen. An der Stelle, an der wir die speziellen Services testen wollen, müssen wir davon ausgehen, dass der Server einwandfrei funktioniert. Wir müssen also nur die Klassen testen, die im Hintergrund aktiv sind. Ich hoffe mal, dass ihr alle eure Businesslogik von der eigentlichen Webservice Logik getrennt habt. Wir hatten es und so war der Umbau der Tests auch gar kein Problem. Diese Neustruktorierung oder neudeutsch Refaktorisierung, hatte zwei große Vorteile: die Tests liefen jetzt innerhalb von unter 10 Sekunden durch und die Testabdeckung wird von PHPUnit aus richtig ausgewertet.

    Fazit: Solltet ihr auf Integrationstests mit PHPUnit setzen, dann versucht die zu testenden Bestandteile in möglichst kleine Stücke aufzubrechen, da so eine höhere Pfadabdeckung einfacher zu erreichen ist. Auch muss jedes Teil für sich getestet werden und nicht unbedingt im Kontext mit anderen.

    Nils Langner

    Auch wenn Ihr es mir nicht glauben werdet, aber ich habe nichts gegen PHP. Ich rege mich einfach nur gerne auf. Ok so schlimm ist es auch nicht. Eigentlich wollte ich schon immer einen Blog haben und da ...

    Zum Profil von Nils Langner

    1 Kommentar »

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.