2009-07-13 25 views
5

Ho lavorato su un componente Flex e mi piacerebbe scrivere alcuni test automatici per questo. Il problema è che gli strumenti di test di interfaccia utente che ho guardato (FlexMonkey e Selenium Flex API) non simulare "basta":Flex: test dei componenti dell'interfaccia utente al livello dei clic?

La maggior parte degli insetti, che sono venuti lontano si riferiscono in modo al modo in cui offerte Flex con drag & drop , che queste librerie non possono simulare con sufficiente accuratezza. Per esempio, ho bisogno di testare un caso in cui c'è un evento "drop" che si verifica nella metà inferiore di un componente - né FlexMonkey né Selenium Flex API possono farlo (possono simulare un evento del mouse, ma non includeranno coordinate).

Quindi, esiste un modo "buono" per automatizzare questo tipo di test?

Edit: Dopo molte ricerche, sembra che l'unico pezzo di software che può fare questo è iMacros, che è solo per Windows e l'interfaccia è ... Manca. Così ho intenzione di essere scrivendo il mio. Fondamentalmente, metterà un'interfaccia HTTP su java.awt.Robot così il codice (in qualsiasi lingua) può simulare eventi mouse/tastiera. Se sei interessato, PM me e ti terrò aggiornato.

Edit 2: ho pubblicato la prima versione del quadro che ho scritto, Trombone, sopra a BitBucket: http://bitbucket.org/wolever/blunderbuss/. Avrai bisogno di Jython per eseguirlo (http://www.jython.org/), ma dopo quello dovrebbe funzionare l'esempio flex-client.

Video di Blunderbuss vive sopra a Vimeo:

Al momento questo rimane un proof-of-concept, in quanto non ho avuto il cicli per ripulirlo e renderlo più utilizzabile ... Ma forse abbastanza persone che mi infastidiscono mi darebbero quel tempo :)

risposta

4

Ho utilizzato Eggplant per testare le app Flash e AIR senza dover aggiungere alcun hook al codice. È un ottimo strumento ma è piuttosto costoso. Simula un utente reale tramite VNC in un sistema e utilizza il riconoscimento delle immagini, tra le altre cose, per interagire con l'app.

+0

Figo, grazie. –

1

Non ho mai dovuto usarlo in Flex ma di recente ho trovato informazioni sui pacchetti di automazione nell'SDK di MS Surface ... dopo aver esaminato il comportamento degli utenti automatizzati delle classi che possono essere utilizzati per testare cioè spostare un mouse falso in questo punto, esegui questa azione. Come stai usando Flex mx.automation packages and classes. La mia ipotesi (e speranza) è che si sarebbe in grado di ottenere ciò che si desidera utilizzando queste classi.

+0

Sfortunatamente il pacchetto mx.automation non può fare ciò di cui ho bisogno. Si basa su componenti che dicono cosa è successo (ad esempio, il pulsante dirà "Sono stato cliccato"), ma ho bisogno di arrivare a un livello inferiore rispetto a quello. –

+0

oh beh .. vale la pena provare –

1

Si potrebbe anche provare l'auto-hotkey - è analogamente un programma di macro-editing ma si è dimostrato molto efficiente ed è possibile scrivere script e configurarlo molto facilmente.

+0

Purtroppo è solo per Windows ... :( –

2

Sono decisamente interessato alla tua classe Java personalizzata e (anche se non sono il migliore di Java (ancora ...)), sarei disposto ad aiutare se stai pensando di renderlo collaborativo.

Come per Flash MouseEvents. Sfortunatamente, non esiste un modo preciso per simulare l'esperienza di trascinamento/rilascio in Flash. MouseEvents, quando generati dal mouse, vengono gestiti in modo molto diverso rispetto agli eventi regolari e mentre è possibile simulare azioni passando gli eventi nelle funzioni di gestione o facendo in modo che il dispatcher attivi un nuovo DragEvent (DragEvent.DRAG_DROP ..., non sarà come avere l'utente che interagisce con esso e per alcune funzionalità (come ottenere l'accesso agli appunti), niente all'interno di Flash realizzerà i tuoi obiettivi.

Per essere onesti, probabilmente stai andando nella giusta direzione: usare qualcosa che non è scritto in Flash per guidare gli eventi del mouse falso è probabilmente la soluzione migliore.

+0

Grazie per il commento, Christopher, ho aggiornato la domanda con un collegamento a Blunderbuss, il framework di test che ho iniziato. –