Hallo Forum, ich bitte um ein paar Hinweise was ich noch lesen könnte. Mein "Problem" ist, ich habe eine Anwendung geschrieben, die bisher noch nicht sehr umfangreich ist (ca. 3000 Zeilen Code). Nachdem ich jetzt den Code etwas aufgeräumt und mit Doxygen die Funktionen kommentiert habe, dachte ich der nächste logische Schritt wäre "Tests einzubauen" [0]. Aber wie? Entweder sind die Funktionen wirklich simpel, d.h. 3-Zeiler; oder sie sind, da sie mit Objekten hantieren oder diese auf den Bildschirm zeichnen, sehr komplex. Bei den ersten habe ich kein Problem die Tests zu schreiben. Aber ist es nötig bzw. guter Stil selbst für die einfachsten Sachen einen Test zu schreiben? Und wie macht man das am Besten? Was testet man, was nicht? Die offensichtlichen Sachen schlagen ja nicht fehl, bzw das merkt man sofort beim Compilieren oder erstem Programmdurchlauf, wenn etwas nicht stimmen kann. Aber dazu sind Tests doch eigentlich da ... Und wie gehe ich erst die Sache bei den komplexen Funktionen an? Ich bin ziemlich ratlos. Von Test-Driven-Development habe ich schonmal gehört, eine grobe Vorstellung, davon was ein Unit-Test sein könnte, habe ich auch, aber wie man das alles anwendet? Keine Ahnung, da fehlt mir einfach noch zu viel in den Grundlagen, glaube ich. Also, was sollte ich lesen wenn es um einen "Allgemeinen Einsteig" zum Thema "Testen" geht und was wäre besonders empfehlenswert in Bezug auf Qt? Das qtestlib-tutorial [1] kenne ich bereits. Gibt es da was umfangreicheres? Ich würde mich über eine oder gerne auch mehrere {Buch,Paper,Tutorial,Video,etc}-Empfehlungen sehr freuen, vorzugsweise in Deutsch, Englisch wär notfalls aber auch ok. Vielen Dank schonmal Mart [0]: Ok, das hätte man vielleicht lieber von Anfang an machen sollen. Aber ich schreibe das Program ja auch um das "Richtigmachen" zu lernen. [1]: http://qt-project.org/doc/qt-4.8/qtestlib-tutorial1.html
Mart schrieb: > Entweder sind die Funktionen wirklich simpel, d.h. 3-Zeiler; oder sie > sind, da sie mit Objekten hantieren oder diese auf den Bildschirm > zeichnen, sehr komplex. Da ist es hilfreich, GUI und Logik streng zu trennen (z.B. mit dem MVC oder MVVM Pattern). Dann ist die GUI nicht mehr als eine einfache XML-Beschreibung, und braucht nicht getestet zu werden. Dafür lässt sich die dahinter liegende Logik umso leichter automatisiert testen. Mart schrieb: > Von Test-Driven-Development habe ich schonmal gehört, eine grobe > Vorstellung, davon was ein Unit-Test sein könnte, habe ich auch, aber > wie man das alles anwendet? Keine Ahnung, da fehlt mir einfach noch zu > viel in den Grundlagen, glaube ich. Visual Studio bietet dafür mitlerweile sehr umfangreiche Unterstützung. Damit kannst du mit einem Klick für jede Klasse/Methode einen Unit Test erstellen lassen, den du dann nur noch mit Leben füllen musst. Du bekommst auf Wunsch auch sofort angezeigt, wie deine Testabdeckung aussieht, und insbesondere welche Code-Teile noch nicht durch einen Test abgedeckt sind. Konkrete Lektüre kann ich dir leider nicht empfehlen. Aber mit den obigen Schlagworten solltest du schon einiges finden...
:
Bearbeitet durch User
Vll reicht dir das ja schon: https://www.youtube.com/watch?v=iJH0ZiQuu1w&list=PL22ZNLSohCRGX1Efp5p17YVc3kOKT4o_3&index=22
Visualstudio ist nicht die Lösung, ich entwickel unter Linux, freie Software und so ;) Auch was XML angeht, ist das leider ist sobald es komplexer/dynamisch wird nicht mehr praktikabel. Aber trotzdem Danke.
Mart schrieb: > Auch was XML angeht, ist das leider ist sobald es komplexer/dynamisch > wird nicht mehr praktikabel. Gerade dann fährst du mit einer GUI, die nur noch durch eine einfache XML-Beschreibung realisiert ist, doch deutlich besser. Oder was meinst du, warum quasi alle modernen GUI-Frameworks das so machen (sei es Android, iOS, Windows Phone, WPF etc.) ;-) Mart schrieb: > Visualstudio ist nicht die Lösung, ich entwickel unter Linux, freie > Software und so ;) Gibt es denn unter Linux nichts vergleichbares? Entwurfsmuster wie MVC oder MVVM mit den entsprechenden Testkonzepten gibt es ja nicht erst seit gestern. Da wird es doch entsprechende Tool-Untersützung geben?
Mart schrieb: > Visualstudio ist nicht die Lösung, ich entwickel unter Linux, freie > Software und so ;) Auch für Linux steht CppUnit für die Sprachen C/C++ zur Verfügung. Um in das Thema Unit Tests einzusteigen, hier wirst du nämlich für modular testbaren Code einige Voraussetzungen erfüllen müssen, würde ich persönlich das Buch Test-Driven Development for Embedded C von James Grenning empfehlen. Zwar wird dort weder von CppUnit oder Qt gesprochen, aber man bekommt einen guten Einblick darin, wie man generell gut testbaren Code in C oder C++ schreibt.
Holger J. schrieb: > Zwar wird dort weder von [...] oder Qt gesprochen, Rate mal, warum! Und rate mal weiter, warum es diverse (teure) Produkte auf dem Markt gibt, die den Markt "GUI-basierte Tests" bedienen? Grüße Markus
GUI-Tests mit Qt gehen eigentlich ziemlich gut, außer du willst wirklich wildes Zeug testen. Auf Buttons klicken oder Text in Felder eingeben und schauen was passiert ist ziemlich problemlos möglich. Siehe zum Beispiel http://qt-project.org/doc/qt-4.8/qtest.html#keyClick etc. Generell hängt meiner Meinung nach ein sinnvolles Testing sehr von der konkreten Anwendung ab. GUI-Tests finde ich oft zu wartungsintensiv, insbesondere wenn sich die UI noch in der Entwicklung befindet. Test-Driven Development für den GUI-Code halte ich so gut wie immer für Schwachsinn. Oh, und ja: Man kann auch beim Schreiben vom Code ein Augenmerk drauf legen, dass der Code leicht testbar ist. Gut möglich, dass das die Architektur der Anwendung ohnehin besser macht :) Erklär doch mal was deine Anwendung tut, dann ist es einfacher, konkret über Tests zu reden.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.