Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

Testen von netzwerkabhängigen Software-Komponenten mittels Netcat

Manchmal ist es nötig, Entwicklertests für Komponenten durch­zu­füh­ren, die TCP-basiert kom­mu­ni­zie­ren (z.B. SOAP, SMTP, POP3, HTTP). Ich möchte hier einen Weg zei­gen, sol­che Komponenten ohne viel Aufwand zu tes­ten. Als zu tes­tende Anwendung ver­wen­den wir zur Veranschaulichung einen ganz nor­ma­len Browser, wel­cher sich mit http://netcat.sourceforge.net/ ver­bin­den will. Gibt man die URL im Browser ein, sieht das etwa so aus:

Mit dem Tool net­cat kann man sich anse­hen, wie der vom Browser abge­sen­dete Request aus­sieht. Dafür star­tet man net­cat so, dass es an einem bestimm­ten Port lauscht.

netcat -l 8080

Dann stel­len wir unsere Anwendung auf local­host um, geben in unse­rem Fall also localhost:8080 im Browser ein. In der Konsole kann man jetzt den request des Browsers sehen.

Jetzt kann der Request ver­wen­det wer­den (der Header Host sollte mit der Ziel-Adresse ersetzt wer­den), um die ori­gi­nale Antwort vom Server zu erhal­ten. Das ist mög­lich, indem net­cat als Client ver­wen­det wird. Da die Antwort etwas grö­ßer aus­fällt und sie noch benö­tigt wird, lei­ten wir sie in eine Datei um.

Die Antwort kann jetzt inklu­sive Header nach Belieben bear­bei­tet wer­den, um das Verhalten der Software zu tes­ten. Um den erzeug­ten und even­tu­ell modi­fi­zier­ten Dump abzu­spie­len, muss net­cat wie­der im lau­schen­den Modus gestar­tet wer­den.

Sobald der Request des Browsers im Terminal zu sehen ist, kann die Antwort ein­ge­ge­ben bzw. ein­ge­fügt wer­den. Da in die­sem Fall nur ein unvoll­stän­di­ges HTML-Fragment zurück­ge­ge­ben wurde, sieht das Ergebnis im Browser ent­spre­chend aus.

Netcat lässt sich für alle TCP-basierten Verbindungen ver­wen­den, nicht nur für HTTP. Die Verwendungsmöglichkeiten sind sehr groß. Es ist z.B. mög­lich meh­rere net­cats (Listener und Client) über pipes zu ver­bin­den und somit einen ein­fa­chen Proxy zu erzeu­gen. Dazwischen kann der Traffic über sed z.B. auch modi­fi­ziert oder für Kontrollzwecken in eine Datei geschrie­ben wer­den.

Pin It on Pinterest