2009-07-13 4 views
5

Ich habe an einer Flex-Komponente gearbeitet und möchte einige automatisierte Tests dafür schreiben. Das Problem ist, die UI-Test-Tools I an (FlexMonkey und Selenium Flex API) haben gesucht Sie simulieren nicht „genug“:Flex: Testen von UI-Komponenten auf Klick-Ebene?

Die meisten der Fehler, die so weit gekommen sind beziehen sich auf die Art und Weise Flex befasst sich mit Drag & Drop , die diese Bibliotheken nicht genau genug simulieren können. Zum Beispiel muss ich einen Fall testen, bei dem ein "drop" -Ereignis in der unteren Hälfte einer Komponente auftritt - weder FlexMonkey noch Selenium Flex API können dies tun (sie können zwar ein Mausereignis simulieren, aber nicht Koordinaten).

Gibt es also einen "guten" Weg, diese Art von Tests zu automatisieren?

Bearbeiten: Nach viel Forschung, es sieht aus wie das einzige Stück Software, die dies tun kann, ist iMacros, die nur Windows ist und die Schnittstelle ist ... Fehlend. Also werde ich schreiben meine eigene. Im Grunde wird es eine HTTP-Schnittstelle auf java.awt.Robot setzen, so dass Code (in jeder Sprache) Maus/Tastatur-Ereignisse simulieren kann. Wenn Sie interessiert sind, PM mich und ich werde Sie auf dem Laufenden halten.

Edit 2: Ich habe die erste Version des Framework, das ich geschrieben habe, Blunderbuss, bei BitBucket: http://bitbucket.org/wolever/blunderbuss/ veröffentlicht. Sie benötigen Jython, um es auszuführen (http://www.jython.org/), aber danach sollte das flex-client Beispiel funktionieren.

Videos von Blunderbuss leben bei Vimeo über:

Im Moment bleibt dieser ein Proof-of-Concept, wie ich nicht gehabt haben, die Zyklen, um es aufzuräumen und es benutzbarer zu machen ... Aber vielleicht genug Leute, die mich belästigen, würde mir diese Zeit geben :)

Antwort

4

Ich habe Eggplant verwendet, um Flash- und AIR-Apps zu testen, ohne dem Code irgendwelche Haken hinzufügen zu müssen. Es ist ein großartiges Werkzeug, aber es ist ziemlich teuer. Es simuliert einen realen Nutzer durch VNC-Einbindung in ein System und nutzt unter anderem die Bilderkennung, um mit der App zu interagieren.

+0

Das ist schön Cool, danke. –

1

Ich musste es nie in Flex verwenden, aber ich bin vor kurzem über einige Informationen zu Automatisierungspaketen im MS Surface SDK gestolpert ... nachdem ich in diese Klassen ein automatisiertes Benutzerverhalten untersucht habe, das zum Testen benutzt werden kann, zB eine falsche Maus bewegen Führen Sie diese Aktion aus. Wie Sie verwenden Flex mx.automation packages and classes. Meine Vermutung (und Hoffnung) ist, dass Sie mit diesen Klassen erreichen können, was Sie wollen.

+0

Leider kann das mx.automation-Paket nicht tun, was ich brauche. Es beruht auf Komponenten, die ihm sagen, was passiert ist (z. B. die Schaltfläche sagt "Ich wurde angeklickt"), aber ich muss auf eine niedrigere Stufe kommen. –

+0

oh well .. einen Versuch wert –

1

Sie könnten auch Auto-Hotkey versuchen - es ist in ähnlicher Weise ein Makro-Bearbeitungsprogramm, aber es hat sich als sehr effizient erwiesen und Sie können Skripte schreiben und es sehr einfach einrichten.

+0

Leider ist es Windows-nur ... :( –

2

Ich bin definitiv interessiert an Ihrer benutzerdefinierten Java-Klasse, und (obwohl ich nicht der beste Java bin (noch ...)), wäre ich bereit zu helfen, wenn Sie darüber nachdenken, diese Zusammenarbeit zu machen.

Wie Flash MouseEvents. Leider gibt es keine genaue Methode, um das Drag/Drop-Erlebnis in Flash zu simulieren. MouseEvents werden, wenn sie von der Maus erzeugt werden, sehr anders behandelt als reguläre Ereignisse und während Sie Aktionen simulieren können, indem Sie Ereignisse an die Handlingsfunktionen übergeben, oder indem Sie den Dispatcher veranlassen, ein neues DragEvent (DragEvent.DRAG_DROP ...) auszulösen Es ist nicht dasselbe, als würde der Benutzer mit ihm interagieren, und für einige Funktionen (wie den Zugriff auf die Zwischenablage) wird nichts in Flash Ihre Ziele erreichen.

Um ehrlich zu sein, gehen Sie wahrscheinlich in die richtige Richtung - mit etwas, das nicht in Flash geschrieben ist, um gefälschte Mausereignisse zu fahren, ist wahrscheinlich Ihre beste Wette.

+0

Danke für den Kommentar, Christopher. Ich habe die Frage mit einem Link zu Blunderbuss aktualisiert, der Test-Framework, die ich begonnen habe. –