Projektmanagement
-
Original erstellt von Shade Of Mine:
**wie schreibt man Unit-Tests, etc.(...)
Unit-Tests waeren da interessant, doch wie schreibt man Unit-Tests fuer n Programm mit GUI?
**Test Driven Development by Example von Kent Beck
als Draft: http://groups.yahoo.com/group/testdrivendevelopment/files/Im CppUnit-Paket sind mehrere Beispielprojekte und auch ein Tutorial drin: http://cppunit.sourceforge.net/ http://cppunit.sourceforge.net/cppunit_cookbook.html#cppunit_cookbook
Testen von Programmen mit GUI sollte kein Problem sein. CppUnit bietet sog. TestRunner für MFC, Qt und Konsole, ist aber prinzipiell unabhängig von der GUI.
-
@Harrison Bergeron:
das ist aber n PHP Projekt - aber trotzdem danke fuer die links, da laesst sich sicher viel lernen!@Marc++us:
danke!
wir werden uns daran halten.
-
Original erstellt von Shade Of Mine:
@Harrison Bergeron:
das ist aber n PHP Projekt - aber trotzdem danke fuer die links, da laesst sich sicher viel lernen!Pardon, hab ich überlesen. Macht aber nichts. Testing Frameworks gibt es mittlerweile für die meisten Sprachen.
http://sourceforge.net/projects/phpunit/
-
Mir ist nicht ganz klar, wieso Du so auf den Unit-Tests rumreitest.
Die funktionieren doch nur, wenn die Testvektoren bekannt sind, und das Projekt unterteilt ist.
Bei einem wie von Shade beschriebenen Projekt sind weder Testvektoren bekannt (wenn's nicht mal Kommentare gibt...) noch ist das Projekt so zergliedert, daß es für die Tests vorbereitet ist.
Diese Monsterprojekte mit riesigen globalen Variablensätzen sind gerade der worst case für Unit Tests, da man alles initialisieren muß um auch nur Teile zu testen.
-
Tut mir leid, dass es sich nach drei Postings schon nach "rumreiten" anhört. Ich wollte nur eine Möglichkeit aufzeigen. Und da ich ihm unter einer falschen Annahme den Link zu CppUnit gepostet habe, wollte ich nochmal auf das PHP-Framework hinweisen. Nur der Vollständigkeit zuliebe.
Ob Refactoring bzw. Unit-Testing das richtige Mittel für dieses Projekt ist kann ich nicht beurteilen. Du bist offensichtlich sehr sicher, dass es nicht sinnvoll ist. Wahrscheinlich fehlt mir einfach deine Erfahrung (oder Informationen) für eine Ferndiagnose.
Ich habe bei einem ähnlichen Problem gute Erfahrungen damit gemacht und wollte das einfach weitergeben. Zugegeben, ich bin sogar etwas begeistert davon
Deswegen reite ich so darauf rum.
Was meinst du genau mit Testvektoren?
-
Für die Unit-Tests hast Du doch auch Eingabemengen bzw. Wertebereiche, also eine Datenbasis für den Test [bei so großen Datenmengen kannst Du ja nicht alle Werte und Varianten vollständig kombinieren]. Das meinte ich mit den Testvektoren.
Normal kennst Du eine Menge an Datenvektoren für den Test einer Funktion, und wenn eine andere Implementation das gleiche Ergebnis liefert ist die Funktion wohl identisch. Naja... vereinfacht gesagt.
Bei solchen Monsterprogrammen ist es aber doch wegen der verworrenen Architektur und der Seiteneffekte globaler Variablen oftmals gar nicht sauber erkennbar, welche Werte zur Testmenge einer Funktion gehören.
Und man schafft es kaum, isolierte Bereich zu instanziieren und darauf Tests zu machen, weil das alles so verwachsen ist, daß man nicht an einzelne Dinge herankommt.
Ich habe (leider) solche Programme im Pflegebestand, das sind Prozeßvisualisierungsanwendungen für Maschinensteuerungen. Da laufen Funktionen teilweise wirklich auf 100 Variablen inkl. damit verbundener gewollter Seiteneffekte. Ich frage mich wie das zu isolieren wäre, daß man einen Unit-Test machen kann.