Sinnvolle Architekturen für Tests

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Sinnvolle Architekturen für Tests

Beitrag von m.fuchs »

Ich führe mal eine Diskussion (http://www.lazarusforum.de/viewtopic.php?p=71629#p71629) hier weiter:
mtbf40 hat geschrieben:ich hänge mal ein Beispiel an für eine Ping - wie müssten der/die Tests geschrieben werden?
Test.7z
(3.83 KiB) 78-mal heruntergeladen
Tja, ich habe es mir mal angesehen. Unittests dafür kannst du eigentlich vergessen. Dafür sind die Methoden zu stark gekoppelt. Du müsstest da eher mit Objektorientierung arbeiten.

Es bleiben also Integrationstests. Du müsstest die an dieser Stelle ein Mockup (http://de.wikipedia.org/wiki/Mock-up#So ... ntwicklung) schaffen, mit dem du deine Funktionen testen kannst. Zum Beispiel ein paar Rechner im Netzwerk, die sicher immer antworten auf die Anfragen. Das können auch virtuelle Netzwerkkarten o.Ä. sein.

Ich vermute mal, das die Beispielmethoden das untere Level darstellen. Also kommen noch weitere Funktionen, die wiederum auf diese zugreifen. Mit der richtigen Architektur, kannst du dann die darüber liegenden Methoden testen, ohne wirklich Netzwerkverkehr zu erzeugen. Aber wie oben bereits angedeutet: ohne Objektorientierung kommt man da nicht sehr weit.

Die Tests musst du auch nicht per Programm schreiben, was dir Logdateien füllt, dafür gibt es auch FPCunit (http://wiki.freepascal.org/fpcunit).
Übrigens, ein paar Hinweise zu FPCUnit und Unittests im Allgemeinen findest du hier: http://go.michael-fuchs.net/121
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Sinnvolle Architekturen für Tests

Beitrag von mtbf40 »

das bedeutet, ich müsste eine Klasse für Ping erzeugen die eine Funktion auf <NetworkFunctions> beinhaltet - korrekt??

... FPCUnit bzw. FPTest habe ich mir schon einmal angeschaut - wobei FPTest eine Erweiterung von FPCUnit ist -> FPTest
...an dem Beispiel sieht man meien Wurzeln :arrow: sequentielle Abarbeitung - Perl/TCL/bash :oops:

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Sinnvolle Architekturen für Tests

Beitrag von m.fuchs »

mtbf40 hat geschrieben:das bedeutet, ich müsste eine Klasse für Ping erzeugen die eine Funktion auf <NetworkFunctions> beinhaltet - korrekt??
Ja... nein... vielleicht. Die Frage ist schwer zu beantworten, ohne tiefer in die Anforderungen deines Projekts einzusteigen. Möglicherweise brauchst du eine Klasse, die für das Holen der Serverlisten zuständig ist. Und diese wiederum benötigt eine für die Netzwerkkommunikation.
Aber wie gesagt, das ist alles nicht so einfach aus dem Stehgreif zu ermitteln.
mtbf40 hat geschrieben:wobei FPTest eine Erweiterung von FPCUnit ist -> FPTest
Nö, es ist nur kompatibel. Undauch nur, wenn du FPCUnit auf eine bestimmte Weise verwendest.
mtbf40 hat geschrieben:...an dem Beispiel sieht man meien Wurzeln :arrow: sequentielle Abarbeitung - Perl/TCL/bash :oops:
Dann vermute ich mal, dass vor dem Projekt noch ein wenig Lernen und Ausprobieren angesagt ist. Der Wechsel auf Objektorientierung kann zum Anfang für viele Kopfschmerzen sorgen. Andererseits kann es sich sehr lohnen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten