cocoaheads rennes #4 : tests automatisés sur ios
DESCRIPTION
Slides de la présentation "Tests automatisés sur iOS" de la session des CocoaHeads Rennais du 13 octobre 2011. Présentation assurée par Quentin Arnault, Ingénieur chez Niji.TRANSCRIPT
![Page 1: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/1.jpg)
Tests automatisés sur iOS
Quentin ArnaultCocoaHeads Rennes13 octobre 2011
![Page 2: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/2.jpg)
Pourquoi ?
Comment ? xUnit
Tests unitaires et d’intégration
Tests de bout en bout
![Page 3: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/3.jpg)
Quels sont nos objectifs ?
![Page 4: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/4.jpg)
Ecrire du code adaptable Y prendre du
plaisir12 3
Livrer nos produits !
![Page 5: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/5.jpg)
Livrer nos produits !➡ Aide à la
compréhension
➡ Non régression
➡ Tests plus rapide
➡ Isoler et valider une anomalie1
![Page 6: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/6.jpg)
Ecrire du code adaptable
➡Composants indépendants
➡ Harnais de tests2
![Page 7: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/7.jpg)
Y prendre du plaisir
➡ Esprit serein
3
![Page 8: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/8.jpg)
xUnit
➡ Créé par Kent Beck et Erich Gamma
➡ Disponible sur un nombre important de plateformes
➡ Principes :
➡ Environnement simple
➡ Exécution des tests à la chaine
➡ Compte rendu du résultat de l’exécution des tests
![Page 9: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/9.jpg)
Vocabulaire
➡ Assertion : prédicat attendu lors de l’exécution du test
➡ Test : méthode effectuant un test
➡ Test Case : classe regroupant un ensemble de Tests
➡ Test Suite : enchaînement de Test Case
➡ Fixture : contexte dans lequel un Test se déroule
➡ SUT : le système que l’on teste
![Page 10: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/10.jpg)
La boucle principale
test_should_reset
tearDown
setUp
Pour chaque méthode test… d’une classe
Pour chaque classe de test
![Page 11: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/11.jpg)
Démo
![Page 12: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/12.jpg)
OCUnit
➡ Une implémentation de xUnit
➡ Répond aux besoins de tests unitaires
➡ Plus d’excuse, c’est INTÉGRÉ !
➡ Mais manque de maturité
![Page 13: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/13.jpg)
GHUnit
➡ Une implémentation de xUnit
➡ Plus riche (tests asynchrones)
➡ Exécution de tests individuellement
➡ Mais plus lourd à la création du projet
![Page 14: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/14.jpg)
Démo
![Page 15: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/15.jpg)
OCUnit Vs GHUnit
OCUnit GHUnit
+ Intégration
Possibilité de (re)lancer chaque test
Compatible OCUnit
Macros plus riches
- Lisibilité des logs
Utilisable depuis Xcode 4Installation
![Page 16: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/16.jpg)
Pour vous aider
OCMock
![Page 17: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/17.jpg)
SUT
Arrange
Assert
Base de données
Webservices
Librairie tierce
Act
![Page 18: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/18.jpg)
SUT
mock
mock
mock
Arrange
Assert
Act
![Page 19: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/19.jpg)
Deux phases
id mockLine = [OCMockObject mockForClass:[Line class]];
[[mockLine expect] mergeResponse];
[mockLine verify];
...
Enregistrement du contrat
Enregistrement des messages
![Page 20: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/20.jpg)
Démo
![Page 21: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/21.jpg)
Vous leur direz merci
➡ Mise en place simplifiée
➡ Réduit le couplage
➡ Exécution des tests plus rapide
➡ Met en valeur les collaborations entre objets
![Page 22: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/22.jpg)
➡ Peut masquer un problème d’intégration
➡ A coupler avec des tests d’intégration
![Page 23: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/23.jpg)
Ce que les utilisateurs voient en premier
Facile d’oublier des tests
C’est un peu (beaucoup) ennuyeux
Testent la totalité de l’application
Les tests d’UI
![Page 24: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/24.jpg)
UIAutomation proposé par Apple avec iOS 4.0
Sonde pour Instruments Librairie JavaScript
+
![Page 25: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/25.jpg)
1. Basé sur les informations d’accessibilités
2. Tests écrits dans un fichier JavaScript
3. Tests exécutés avec Instruments
![Page 26: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/26.jpg)
tap
doubleTap
twoFingerTaptouchAndHold
dragInside
flickInside
orientationChange
background
lockScreen
![Page 27: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/27.jpg)
Démo
![Page 28: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/28.jpg)
Il reste des limitations
➡ Pas de lancement par ligne de commande
➡ Interdépendance des tests
➡ Difficile de débugger un test
![Page 29: CocoaHeads Rennes #4 : Tests automatisés sur iOS](https://reader034.vdocuments.net/reader034/viewer/2022042700/557d366ad8b42ac2788b48ff/html5/thumbnails/29.jpg)
Rotation sur iOS
Mail : [email protected]
Tests automatisés sur iOS
Mail : [email protected] : www.cocoaheads.fr