Mit QTestLib eigene Anwendungen testen

Alles rund um die Programmierung mit Qt
Antworten
krsw
Beiträge: 6
Registriert: 15. November 2006 15:42
Wohnort: Nürnberg

Mit QTestLib eigene Anwendungen testen

Beitrag von krsw »

Hallo,

ich möchte QTestLib benutzen, um graphische Oberflächen zu testen, die mit Qt erstellt wurden. Es handelt sich dabei um eigenständige Anwendungen, die getestet werden sollen.

Was Ihr vielleicht noch wissen solltet: Ich entwickle mit Qt in .NET 2003.
Die Beispiele im Assistent sind schön und gut, dort wird allerdings immer ein Teil der Qt-Bibliothek getestet (die Beispiele laufen im übrigen bei mir auch durch), allerdings möchte ich QTestLib gern benutzen, um eine eigenständige, dialogbasierte Anwendung zu testen. Dabei kann ich leider nicht einfach ein Objekt der zu testenden Klasse erzeugen, denn es handelt sich ja dabei selbst um eine .exe
Wäre schön, wenn Ihr mir weiterhelfen könntet, habe leider zu diesem Thema nirgendwo Anregungen gefunden.

Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken, wenn nicht, dann fragt einfach nach :)

LG
Kerstin
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

QTestLib eignet sich nicht für GUI-Tests. Dafür brauchste die Software von Frologic...
krsw
Beiträge: 6
Registriert: 15. November 2006 15:42
Wohnort: Nürnberg

Beitrag von krsw »

Danke schonmal für die Antwort.
Ich habe mich wahrscheinlich etwas ungenau ausgedrückt. Ich weiß, dass QTestLib für Unittests gemacht ist, deshalb möchte ich nicht die Gesamtanwendung testen, sondern nur einen Teil davon.
Im Beispiel im QtAssistant ist das ja so: Dort wird ein Editfeld erzeugt und es wird was reingeschrieben. Dann wird über QCOMPARE() verglichen, ob der eingetragene Wert auch stimmt.
Ich wollte mit meiner Frage darauf hinaus, dass ich nicht erst in der Testanwendung ein Editfeld erzeuge, sondern eben eines nehme, was ich im Zuge meiner eigenen Anwendung erstellt habe und dies dann teste. Oder dass ich eben einen von mir erstellten Button hernehme und einen Klick simuliere, der bspw. ein Edit-Feld füllen soll, und dann eben schaue, ob das Feld richtig gefüllt wurde.
Das sind ja dann auch nur Teile der Gesamtanwendung, die getestet werden. Und nach den Erläuterungen im QtAssistant zu urteilen, kann man ja graphische Oberflächen auch mit diesem Unit-Testtool testen.

Ich hoffe jetzt ist es ein bisschen klarer, worauf ich hinauswollte.

Liebe Grüße,
Kerstin
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Ja, die Unit-Tests von einzelnen GUI-Elementen sind möglich, machen aber überhaupt keinen Sinn, also vergiss es einfach...
krsw
Beiträge: 6
Registriert: 15. November 2006 15:42
Wohnort: Nürnberg

Beitrag von krsw »

Ich wollte nicht wissen, ob es sinnvoll ist, sondern ob es möglich ist und wenn ja, wie.

Und ich bin der Meinung, dass sowas durchaus sinnvoll sein kann, z.B. wenn ich nen Button klicke und dadurch ein Edit-Feld gefüllt wird. Da kann ich dann überprüfen, ob ins Edit-Feld das richtige reingeschrieben wurde. Dazu muss ich nicht die gesamte Anwendung testen.

Also falls jemand hilfreichere Kommentare hat oder falls Du mir doch noch das große Geheimnis wie das geht näherbringen willst, lepsai, wäre ich dafür sehr dankbar.


LG
Kerstin
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Ok, noch einmal: es ist NICHT MÖGLICH mit QTestLib eine GUI-Anwendung zu testen, da eine solche nicht aus irgendwelchen, frei zugreifbaren Einzelcontrols besteht sondern aus geschlossenen Modulen, so dass man nicht einmal den Zugriff auf einzelne GUI-Elemente bekommen kann...
krsw
Beiträge: 6
Registriert: 15. November 2006 15:42
Wohnort: Nürnberg

Beitrag von krsw »

Gut, und wie bekomme ich den Zugriff aus einer Testklasse heraus auf ein Modul meiner Anwendung? Bzw. wie positioniere ich die Testklasse innerhalb des Projekts, um das zu schaffen?
(die Fragen sind jetzt nicht GUI-spezifisch gemeint, sondern allgemein)

LG
Kerstin
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Hm, das Madchen scheint hartnäckig zu sein (was durchaus eine gute Eigenschaft ist.... bis zu einem gewissen Grad :-))

Also, sag mal, was willste überhaupt testen? Wie groß ist diese Anwendung? Wie ist sie zusammengesetzt? Welche Module gibt es denn? Wie sind sie miteinander verbunden?
krsw
Beiträge: 6
Registriert: 15. November 2006 15:42
Wohnort: Nürnberg

Beitrag von krsw »

Danke erstmal für Deine Geduld. Wenn mich was interessiert, muss ich einfach die Lösung wissen, sonst träum ich nachts davon :D

Also, ich probiers mal.
In die Anwendung werden die Wareneingänge des letzten Tages eingelesen, das Verfallsdatum der Waren wird geprüft und es wird geschaut, wie lang die Reichweite des jeweiligen Produkts noch ist. Sollte die Reichweite über das Verfallsdatum minus 6 Monate hinausgehen, wird der Artikel in eine eigene Tabelle geladen und kann dann mit der zu testenden Anwendung bearbeitet werden. Außerdem können die zugehörigen Lieferanten bearbeitet werden (z.B. ob man mit ihnen in Verbindung tritt zwecks Retoure usw.)
Die Anwendung ist nicht besonders groß, besteht aus 4 Dialogen und gliedert sich in etwa 17 Use Cases.
Das soweit. Etwas schwieriger ist allerdings der Aufbau in Module, da es sich um eine eigene Architektur handelt, die etwas schwer so kurz zu beschreiben ist. Der Grundgedanke (wie bei vielen anderen Architekturen) ist der, dass es die Ebenen DB-Zugriff, Business-Logik und GUI gibt. Alles weitere wird dann etwas komplizierter. Ich kann nur sagen: Es gibt zunächst zwei größere Module, eins dass erstmal die Überprüfung vornimmt, ob der Artikel überhaupt in der Anwendung zu kontrollieren ist (siehe Einleitung oben) und das zweite, das dann für die Ansicht und Bearbeitung der Artikel zuständig ist. Die Anwendung wird aber sicherlich noch in mehr kleine Module unterteilt werden, ich persönlich würde fast den Weg von GUI zu DB bzw. umgekehrt zumindest in einigen Fällen für eigene Module halten.
Verbunden sind die Module über Konstrukte, die tabellenähnlich sind und die Daten während dem Programmablauf vorhalten.
Das ist jetzt zwar eine etwas grobe Beschreibung, aber mehr kann ich zur Zeit auch nicht liefern, da die Entwicklung grad erst losgeht und ich selbst auch noch nicht so viel davon sehen kann.
Deswegen war auch meine Frage rein theoretisch gemeint.


LG
Kerstin
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Nun ja, für diesen Fall kann ich meine Meinung nur bestätigen, mit QTestLib kommst du da nicht weiter, ich empfehle dir die Software von Frologic anzuschauen, weil sie sich auf solche Sachen spezialisieren.
krsw
Beiträge: 6
Registriert: 15. November 2006 15:42
Wohnort: Nürnberg

Beitrag von krsw »

Ok, da kann man nichts machen.
Danke auf jeden Fall für Deine Hilfe. Ich hoffe ich hab Dich nicht zu sehr genervt :wink:

Ich werd mir dann mal Frologic zu Gemüte führen.


LG
Kerstin
Antworten