3. Mathurin Body
(@mathurin_body)
Christophe Keromen
(@ckeromen)
en continuelle amélioration
4.
5. Le Test Unitaire consiste à prendre
la plus petite partie du code,
isolée de tout autre facteur
et à vérifier qu'elle se comporte
comme vous l'attendez.
Michael Labriola
6. Isolation
• Le résultat du test ne doit pas être affecté par
• d'autres objets
• l'état global
• Lors de l'échec d'un test unitaire, la source de
l'erreur doit être immédiatement identifiable.
7. Le Test d'Intégration consiste à assembler des
portions de code déjà testées unitairement et à
vérifier que le comportement et l'interaction entre
ces composants est correct.
Michael Labriola
8. Integration
En règle générale, à partir du moment où
l'on utilise l'un des termes suivants, nous
sommes en train de discuter d'une forme de
test d'intégration :
• Asynchronous
• Server
• Lifecycle
• DisplayList
9. Le Test Functionnel s'attache à enregistrer et
rejouer les interactions avec l'application.
Il est extrêmement important car il assure que
l'application respecte les spécifications.
Il se peut que de nombreuses unités de code
doivent fonctionner avant de pouvoir produire un
seul test d'intégration.
Michael Labriola
11. Tests Unitaires et Flex / ActionScript 3
FlexUnit est fourni avec Flash Builder 4.6, implémente xUnit
FB 4.6 prend en charge les tests unitaires sur projets mobiles
(WiFi requis)
13. Interface Utilisateur ?
• Lorsque la Logique n'est pas couplée
avec la Vue, la Logique peut être
mise sous Test Unitaire.
14. Interface Utilisateur ?
• Lorsque la Logique n'est pas couplée
avec la Vue, la Logique peut être
mise sous Test Unitaire.
• Ex.: CalculatorAppFlex
15. Interface Utilisateur ?
• Lorsque la Logique n'est pas couplée
avec la Vue, la Logique peut être
mise sous Test Unitaire.
• Ex.: CalculatorAppFlex
o les déclarations MMXL
declarations et les Event Handlers
ne sont pas mis sous test unitaires
16. Interface Utilisateur ?
• Lorsque la Logique n'est pas couplée
avec la Vue, la Logique peut être
mise sous Test Unitaire.
• Ex.: CalculatorAppFlex
o les déclarations MMXL
declarations et les Event Handlers
ne sont pas mis sous test unitaires
o CalculatorLogicHelper est
couverte par les tests unitaires
17. Interface Utilisateur ?
• Lorsque la Logique n'est pas couplée
avec la Vue, la Logique peut être
mise sous Test Unitaire.
• Ex.: CalculatorAppFlex
o les déclarations MMXL
declarations et les Event Handlers
ne sont pas mis sous test unitaires
o CalculatorLogicHelper est
couverte par les tests unitaires
18. Interface Utilisateur ?
Le test des composants UI est beaucoup plus complexe, ex.:
FlexUnit4Examples/flexUnitTests.FlexUnit4CheckUITester
24. Raccourcis Flash Builder:
• Alt+Shift+A, F
Exécute tous les tests FlexUnit du projet.
• Alt+Shift+E, F
Exécute les tests FlexUnit sélectionnés.
• Tag [Ignore] - Permet d'ignorer le test marqué. Évite de
commenter la méthode.
27. TDD
eXtreme Unit Testing
Écrivez les tests en premier !
28. TDD
eXtreme Unit Testing
Écrivez les tests en premier !
AVANT DE CODER
29.
30. Combien ont déjà fait du TDD ?
Combien ont essayé de faire du TDD et
abandonné ?
Combien ont toujours rêvé de se mettre au TDD,
mais ne l'ont pas fait ?
33. Quels tests ?
• Première étape
Comprendre les exigences métiers
Penser aux différents scenarios possibles
Ajouter des tests reposant sur ces scenarios
34. Quels tests ?
• Le Test passe
Une fois que vous avez écrit tout le code et
que tous les tests passent, vous savez que
vous remplissez toutes les exigences métiers.
Vous pouvez partager le résultat avec le client
ou les autres membres de l'équipe.
35. Quels tests ?
• Bug fix
Chaque résolution de bogue devrait commencer par
l'écriture d'un test unitaire qui le met en évidence.
43. Workflow
• Lister les exigences
• Créer la Classe
• Créer le TestCase à partir de la Classe : New Test
Case Class + Select class to test
44. Workflow
• Lister les exigences
• Créer la Classe
• Créer le TestCase à partir de la Classe : New Test
Case Class + Select class to test
• Run Test -> échec
45. Workflow
• Lister les exigences
• Créer la Classe
• Créer le TestCase à partir de la Classe : New Test
Case Class + Select class to test
• Run Test -> échec
• Écrire du code pour passer le test
46. Workflow
• Lister les exigences
• Créer la Classe
• Créer le TestCase à partir de la Classe : New Test
Case Class + Select class to test
• Run Test -> échec
• Écrire du code pour passer le test
• Refactoring si nécessaire
47. Workflow
• Lister les exigences
• Créer la Classe
• Créer le TestCase à partir de la Classe : New Test
Case Class + Select class to test
• Run Test -> échec
• Écrire du code pour passer le test
• Refactoring si nécessaire
• Création d'une TestSuite : New Test Suite Class +
select Test classes
50. Elad Elrom conseille :
• De ne pas utiliser TDD pour les gestuelles.
• D'éviter généralement d'utiliser TDD pour tester l'interface
utilisateur.
51. Elad Elrom conseille :
• De ne pas utiliser TDD pour les gestuelles.
• D'éviter généralement d'utiliser TDD pour tester l'interface
utilisateur.
• D'utiliser TDD pour construire les APIs, frameworks,
utilitaires et helpers.
52. Elad Elrom conseille :
• De ne pas utiliser TDD pour les gestuelles.
• D'éviter généralement d'utiliser TDD pour tester l'interface
utilisateur.
• D'utiliser TDD pour construire les APIs, frameworks,
utilitaires et helpers.
• D'utiliser TDD pour tester les services.
53. Elad Elrom conseille :
• De ne pas utiliser TDD pour les gestuelles.
• D'éviter généralement d'utiliser TDD pour tester l'interface
utilisateur.
• D'utiliser TDD pour construire les APIs, frameworks,
utilitaires et helpers.
• D'utiliser TDD pour tester les services.
• D'utiliser TDD pour le code qui sera utilisé plus d'une fois,
dans plus d'une application,…
54. Bibliography
• http://www.slideshare.net/anupom98/introduction-to-tdd-with-flexunit
• Unit Testing Tools in Flash Builder: http://help.adobe.com/en_US/flashbuilder/
using/WS064a3073e805330f-57274fcd12dfe5a574a-8000.html
• Doc FlexUnit: http://docs.flexunit.org/index.php
• Elad Elrom
o Test Driven Development using Flash Builder 4 and FlexUnit (2009) http://
www.adobe.com/devnet/flex/articles/flashbuilder4_tdd.html
o http://www.slideshare.net/eladnyc/test-driven-development-tdd-with-
flexunit-4-360flex-san-jose-preso
o http://elromdesign.com/blog/2010/03/10/test-driven-development-tdd-with-
flexunit-4-complete-tutorial/
55. Ressources
• http://www.slideshare.et/michael.labriola/why-test-with-flex-
unit
• http://tutorials.digitalprimates.net/flexunit.html
• Support for FlexUnit: https://flexunit.tenderapp.com/
• A very good read http://www.amazon.com/Working-
Effectively-Legacy-Michael- Feathers/dp/0131177052
• Elad Elrom Examples Download
http://www.adobe.com/content/dotcom/en/devnet/flex/articles/
flashbuilder4_tdd/_jcr_content/articlePrerequistes/multiplefiles/
node_1278642616618/file.res/flashbuilder4_tdd_source[1].zip
56. Bibliographie
Chapter 2 of AdvancedED Flex 4
Flash&Flex Developer's Magazine
Flash and mobile - APPS, IPHONE AND
IPOD Touch
201-01