Wie könnte ich automatische Tests für die GUI durchführen?

8

Wie kann ich automatisch überprüfen, was gesehen wird und was nicht? Oder zumindest, wie kann ich einige teilweise automatische Tests organisieren?

IDE: Eclipse (könnte bei Bedarf auch IntelliJ Idea verwenden)

Test-Tool: Junit (könnte wieder etwas anderes verwenden, wenn empfohlen, aber besser, wenn es kostenlos ist)

Anwendungsbetriebssystem: Android

Entwickler-Betriebssystem: Linux (könnte sich für MAC oder Windows ändern (widerstrebend))

Sprache: Java

Die ganze Arbeit geht in das externe Gerät. Kein Emulator.

Die Anwendung ist ein Benutzer-Wrapper für den Firmware-TV-Player, der als externe Aktivität bezeichnet wird. Also sind 70% des Codes für die GUI. (Die anderen 30% sprechen mit Servern und stellen Informationen zur GUI bereit.)

Bevor ich die Testfunktion selbst programmiert habe, habe ich keine Werkzeuge verwendet. Jetzt habe ich ein Werkzeug zur Hand. Aber ich kann mir nicht vorstellen, wie ich die Benutzeroberfläche mit oder ohne Tool testen könnte. (Streng gesagt, mit den Internetverbindungen habe ich auch Probleme, aber ich werde sie wahrscheinlich für die andere Frage belassen.) Die Antwort muss nicht zu plattformabhängig sein, die Prinzipien und Ideen werden auch helfen.

Natürlich ist es gut zu überprüfen, ist ein Element in einem anderen und überprüft oder nicht. Einige Regressionsprüfungen wären dafür nett. Ich sollte aber auch sicher sein, dass das erwähnte Element nicht von anderen Elementen geschnitten wird und zwinkert, wie ich es durch Animation bestellt habe.

Die Ratschläge hier: /software/63245/is-there-a-tool-to-test-java-ui helfen nicht - es gibt nur Tools, keine Prinzipien und keines der Werkzeuge könnten in meiner Situation helfen.

Gangnus
quelle
Haben Sie darüber nachgedacht, bei sqa.stackexchange.com nachzufragen ? Übrigens, was steht Ihnen beim Testen zur Verfügung - GUI-Objekte, Bildschirmpixel, Tastatur- / Zeigergeräteereignisse?
Mücke
Vielen Dank. Ich wusste hier nichts über diesen Server. Vielleicht wird später ein Moderator meine Frage dorthin verschieben. (Übrigens verstehe ich nicht, warum der Test einen eigenen Server benötigt). Was Ihren anderen Satz betrifft, denke ich, ist es wie üblich in Android - Objekte - ja, Pixel - können durch einige Tricks sein? - Ich weiß nicht, Ereignisse - ja. Kann Junit Pixel von GUI lesen?
Gangnus
Ein großartiges automatisiertes Open-Source- Testtool für Android ist Robotium .
Corey D

Antworten:

5

Meistens ist der beste Rat für automatische GUI-Tests, Ihre Anwendung in einem Model-View-Presenter-Stil zu entwickeln und Ihre Tests gegen den Presenter zu schreiben. Das Thema wird hier diskutiert:

http://danbunea.blogspot.com/2005/11/model-view-presenter-is-testing_27.html

(Es gibt weitere Links am Ende dieses Artikels).

Dies hilft Ihnen möglicherweise nicht dabei, "automatisch zu überprüfen, was angezeigt wird und was nicht", aber es kann Ihnen helfen, den größten Teil der UI-Logik zu testen.

Doc Brown
quelle
Danke für den Artikel. Das Problem ist, dass in meiner Anwendung im Gegenteil die Ansicht der komplizierteste Teil ist und der Präsentator und das Modell primitiv genug sind und es der Ansichtsteil ist, den ich testen muss. Ich möchte genau wie gesagt "automatisch überprüfen, was gesehen wird und was nicht" oder teilweise automatisch.
Gangnus
+1, Sie haben mich zu einer anderen Frage geführt ( programmers.stackexchange.com/questions/133134/… ) :-) Ich würde mich freuen, Ihre Meinung dazu zu lesen.
Gangnus
1

Es gibt Test-Frameworks, mit denen Sie direkt mit dem Bildschirm interagieren können. Bei meiner Arbeit verwenden wir IBM Rational Functional Tester, mit dem wir auf Schaltflächen usw. klicken können, sowie die üblichen programmatischen Tests. Das ist natürlich nicht kostenlos, aber wenn Sie es auf Wikipedia nachschlagen, finden Sie diese Liste mit Alternativen. Da Sie sich Java ansehen , gibt es CubicTest , ein Eclipse-Plugin. Alternativen sind Maveryx und Abbot .

Yamikuronue
quelle
+1 für deinen Versuch. Aber diese Tools funktionieren nicht für Android, wie ich sehe.
Gangnus
@ Gangnus Drat, ich hatte gehofft, dass mindestens einer würde. Ich bin leider nicht mit Android-spezifischer Entwicklung vertraut
Yamikuronue
Leider habe ich ein wirklich schweres Problem - meine App wird nicht auf dem Emulator, dh auf einem PC, sondern auf dem externen Andoid-Gerät getestet. Ich bin mir also fast sicher, dass es kein fertiges Tool zum Testen gibt. Ich sollte den Prozess selbst organisieren. Aber wie ... Was muss ich überprüfen, was sind die Probleme bei solchen Tests, wie sind die regressiven Tests organisiert ... Jeder gibt mir Links zu Werkzeugen, aber ich brauche Links zu Gedanken. Natürlich würde ich sehr gerne ein Werkzeug nehmen, aber es gibt keines ... Was für eine traurige Welt ... :-)
Gangnus
@Gangnus Mein Kollege informiert mich, dass selbst der Emulator das Debuggen der GUI erschwert, es sei denn, Sie haben etwas dafür entwickelt, da es sich um eine zusätzliche Ebene handelt. Für die Modellierung der Tests verwenden wir ein Tool, um Flussdiagramme zu erstellen, die den Pfad durch das Programm umreißen. Ich denke, unser Tool wurde im eigenen Haus erstellt, kann jedoch Listen aller möglichen Durchläufe des Flussdiagramms (die zu unseren Testskripten werden) erstellen. Dies klingt nach einer Funktion, die Sie leicht genug finden oder selbst ausführen sollten
Yamikuronue
0

Ich benutze testcomplete. Es ist ein umfassendes Tool, mit dem ich GUI-Tests automatisiert habe. http://smartbear.com/products/qa-tools/automated-testing/ check it out Ich bin mir sehr sicher, dass dies gut zu Ihnen passt und Java unterstützt

Jaspreet Chahal
quelle
Vielen Dank, aber es ist: a) Windows b) nicht für Android c) nicht kostenlos. Ich könnte "c" und sogar "a" überwinden, aber "b" ist zu schade.
Gangnus
-2

Ich benutze https://marketplace.atlassian.com/plugins/com.thed.zephyr.je/cloud/overview für eine Weile. Es verfügt über Plugins wie ZAPI, mit denen das Testen automatisiert werden kann.

Ein Blutegel
quelle
1
Antworten, die im Wesentlichen "nur Link" sind, sind nicht sehr nützlich. Wenn Sie nun Beispiele hinzufügen, wie Plug-Ins die Frage des OP beantworten, können Sie diese Antwort nützlich machen.
Jay Elston