Tests Dinterface SWT

20
14 avril 2009 Eric Le Merdy Tests d’IHM SWT automatisés SWTBot RCPRobot – RCP FIT http://www.flickr.com/photos/bbum/133956665/

description

This presentation has been executed on 14th april, 2009 in Valtech Technology Consulting, Paris, France. This is an overview of the SWTBot test framework. Download the ppt for the comments on each slide.

Transcript of Tests Dinterface SWT

Page 1: Tests Dinterface SWT

14 avril 2009

Eric Le Merdy

Tests d’IHM SWTautomatisés

SWTBotRCPRobot – RCP FIT

http://www.flickr.com/photos/bbum/133956665/

Page 2: Tests Dinterface SWT

Eric Le Merdy

Tests d'interface SWT

#2

Oh, non ! Les tests unitaires d’IHM sont une telle perte de temps…

C’est vrai,alors ne testez pas votre IHM.

…que faire si votre produit est une IHM ?

Page 3: Tests Dinterface SWT

Eric Le Merdy

Tests d'interface SWT

#3

Pourquoi les tests IHM sont-ils si importants?

Parce que•les tests sont importants•l’IHM contient de la valeur pour l’utilisateur•l’IHM ne peut pas régresser

Page 4: Tests Dinterface SWT

Eric Le Merdy

Tests d'interface SWT

#4

Les tests IHM sont si ennuyeux…

…Parce qu’aujourd’hui, ils restent tellement manuels.

Page 5: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #5

Tests d’IHM en l’an 2000:

http://www.methodsandtools.com/archive/archive.php?id=37

De longues listesà vérifier…

Page 6: Tests Dinterface SWT

Eric Le Merdy

Tests d'interface SWT

#6

Nous ne pouvons pas nous offrir des tests manuels.

Il existe des outils pour automatiser les tests unitaires d’IHM…

Page 7: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #7

Pour le web: Selenium

Page 8: Tests Dinterface SWT

Eric Le Merdy

Tests d'interface SWT

#8

Les stratégiesEnregistrer / Rejouer ne fonctionnent pas bien !Nous sommes agiles, l’IHM change souvent.

C’est vrai,Alors n’utilisez pas d’outils enregistrer / rejouer.

Page 9: Tests Dinterface SWT

Eric Le Merdy

Tests d'interface SWT

#9

Nous allons voir les approches de SWTBot et RCPFit.

Page 10: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #10

RCP : Les solutions existantes

Abbot

RCP Robot

RCPFIT

JUnit FIT

SWTBot

JAVA / SWT

API java appelant

SWT

API java appelant

SWT

API javaAPI java

Execution FIT dans une RCPExecution FIT dans une RCP

API de test AWT/SwingAPI de test AWT/Swing

abbot.swt

Support de SWT

Support de SWT

Page 11: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #11

Plus de détails sur SWTBot

ThoughtWorks IndiaAccepté début 2009 en tant que projet Eclipse.org (en incubation)Enregistreur de script non maintenu…

API construite sur SWT/JFace pour piloter une application RCPPrincipales fonctionnalités:

API simple au dessus de chaque composant graphiqueRecherche avancée des composants gaphiquesSupport des concepts eclipse (perspectives, vue)

Inconvénients:Pas d’enregistreurApproche très programmatique

Page 12: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #12

SWTBot et le « threading »

Les tests s’éxécutent dans un Thread non graphique

Car les tests ne peuvent pas être bloqués par l’envoi d’un événement à l’IHM

Parfois, il y a besoin de modifier le produit à tester pour que SWTBot puisse le piloter

Ex. rendre un dialogue non modal ou l’ouvrir dans un Thread non-graphique

Display

Native

SWT

ShellShellShellUIThread

SWTBot

Page 13: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #13

Plus de détails sur RCPRobot

Gherhart Informatics GmhbCapitalisation au dessus d’un framework de test Swing/SWT existant.

Pas de communauté, plus proposé par la société

Principales fonctionalités:Un portage du framework FIT dans une application RCP

Inconvénients:Approche très programmatique

Page 14: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #14

TP: environnement

1. La plate forme Eclipse (PDE) dé zippée:eclipse-rcp-ganymede-win32.zip

2. SWTBot:SWTBot plug-ins dézippée dans ‘/eclipse/dropins’• net.sf.swtbot.eclipse-1.3.0.1087-dev.zip

« Import existing projects from archive »• swtbot-rcp-mail-example-1.2.0.zip

3. RCPRobot(Simple démo faite par le présentateur)

Page 15: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #15

Tutoriel

Créer un lanceur ‘SWTBot Test’ et essayez de l’éxécuter

Créons des tests !Menus et toolbar(non-régression)Tree itemsLe comportement de la fonction« Open new message »Le contenu du message

Page 16: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #16

Un nouveau plugin de test

Créez un nouveau projet « plug-in ».

Faire dépendre de‘org.rcpmail’, l’application testée‘net.sf.swtbot.*.finder’, le framework de test‘org.junit’, une dépendance

Créez une nouvelle classe de test qui étend ‘SWTBotEclipseTestCase’.

Il existe alors une variable d’instance ‘bot’ qui est le point d’entrée pour piloter l’application en test.

Page 17: Tests Dinterface SWT

Eric Le Merdy

Tests d'interface SWT

#17

Soutient…

Page 18: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #18

Créer un projet Java

Créer ou importer un ‘FitDocument’

Editer le ‘FitDocument’

Créer une nouvelle fixture

Exécuter les tests FIT

Fister: un plug-in pour faire du FIT directement dans Eclipse

Page 19: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #19

Sources

Eclipse: http://torrent.ibiblio.org/doc/154/torrents

SWTBot: http://sourceforge.net/project/showfiles.php?group_id=188411&package_id=220519&release_id=622752

RCPFit: http://www.gerhardtinformatics.com/ComGerhardtInformaticsRcpFit

FitLibraryRunner (bundle-ized): http://www.gerhardtinformatics.com/FitLibraryRunner

n’existe plus

n’existe plus

Page 20: Tests Dinterface SWT

Tests d'interface SWT

Eric Le Merdy #20

Quoi de neuf dans SWTBot 2.0?

IMatcher remplacé par Hamcrest, une api de recherche pour construire des expressions de critères (google code)

WidgetMatcherFactory facilite la composition de critères:Matcher m = allOf(

instanceOf(Button.class),withLabel("Edit"),inGroup("Personal Details"));

Java 1.5, genericsPlus facile pour écrire des recherche de composants graphiques personnalisésUne intégration poussée avec Ant pour lancer les tests sans afficher l’IHM – ouverture à l’intégration continue