Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
+49 (0) 351/850 33-0

Testen von netzwerkabhängigen Software-Komponenten mittels Netcat

Manchmal ist es nötig, Entwicklertests für Komponenten durchzuführen, die TCP-basiert kommunizieren (z.B. SOAP, SMTP, POP3, HTTP). Ich möchte hier einen Weg zeigen, solche Komponenten ohne viel Aufwand zu testen. Als zu testende Anwendung verwenden wir zur Veranschaulichung einen ganz normalen Browser, welcher sich mit http://netcat.sourceforge.net/ verbinden will. Gibt man die URL im Browser ein, sieht das etwa so aus:

Mit dem Tool netcat kann man sich ansehen, wie der vom Browser abgesendete Request aussieht. Dafür startet man netcat so, dass es an einem bestimmten Port lauscht.

netcat -l 8080

Dann stellen wir unsere Anwendung auf localhost um, geben in unserem Fall also localhost:8080 im Browser ein. In der Konsole kann man jetzt den request des Browsers sehen.

Jetzt kann der Request verwendet werden (der Header Host sollte mit der Ziel-Adresse ersetzt werden), um die originale Antwort vom Server zu erhalten. Das ist möglich, indem netcat als Client verwendet wird. Da die Antwort etwas größer ausfällt und sie noch benötigt wird, leiten wir sie in eine Datei um.

Die Antwort kann jetzt inklusive Header nach Belieben bearbeitet werden, um das Verhalten der Software zu testen. Um den erzeugten und eventuell modifizierten Dump abzuspielen, muss netcat wieder im lauschenden Modus gestartet werden.

Sobald der Request des Browsers im Terminal zu sehen ist, kann die Antwort eingegeben bzw. eingefügt werden. Da in diesem Fall nur ein unvollständiges HTML-Fragment zurückgegeben wurde, sieht das Ergebnis im Browser entsprechend aus.

Netcat lässt sich für alle TCP-basierten Verbindungen verwenden, nicht nur für HTTP. Die Verwendungsmöglichkeiten sind sehr groß. Es ist z.B. möglich mehrere netcats (Listener und Client) über pipes zu verbinden und somit einen einfachen Proxy zu erzeugen. Dazwischen kann der Traffic über sed z.B. auch modifiziert oder für Kontrollzwecken in eine Datei geschrieben werden.

Kommentar hinterlassen


Pin It on Pinterest