Upload
cocoaheadsrns
View
1.578
Download
3
Embed Size (px)
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.
Citation preview
Tests automatisés sur iOS
Quentin ArnaultCocoaHeads Rennes13 octobre 2011
Pourquoi ?
Comment ? xUnit
Tests unitaires et d’intégration
Tests de bout en bout
Quels sont nos objectifs ?
Ecrire du code adaptable Y prendre du
plaisir12 3
Livrer nos produits !
Livrer nos produits !➡ Aide à la
compréhension
➡ Non régression
➡ Tests plus rapide
➡ Isoler et valider une anomalie1
Ecrire du code adaptable
➡Composants indépendants
➡ Harnais de tests2
Y prendre du plaisir
➡ Esprit serein
3
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
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
La boucle principale
test_should_reset
tearDown
setUp
Pour chaque méthode test… d’une classe
Pour chaque classe de test
Démo
OCUnit
➡ Une implémentation de xUnit
➡ Répond aux besoins de tests unitaires
➡ Plus d’excuse, c’est INTÉGRÉ !
➡ Mais manque de maturité
GHUnit
➡ Une implémentation de xUnit
➡ Plus riche (tests asynchrones)
➡ Exécution de tests individuellement
➡ Mais plus lourd à la création du projet
Démo
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
Pour vous aider
OCMock
SUT
Arrange
Assert
Base de données
Webservices
Librairie tierce
Act
SUT
mock
mock
mock
Arrange
Assert
Act
Deux phases
id mockLine = [OCMockObject mockForClass:[Line class]];
[[mockLine expect] mergeResponse];
[mockLine verify];
...
Enregistrement du contrat
Enregistrement des messages
Démo
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
➡ Peut masquer un problème d’intégration
➡ A coupler avec des tests d’intégration
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
UIAutomation proposé par Apple avec iOS 4.0
Sonde pour Instruments Librairie JavaScript
+
1. Basé sur les informations d’accessibilités
2. Tests écrits dans un fichier JavaScript
3. Tests exécutés avec Instruments
tap
doubleTap
twoFingerTaptouchAndHold
dragInside
flickInside
orientationChange
background
lockScreen
Démo
Il reste des limitations
➡ Pas de lancement par ligne de commande
➡ Interdépendance des tests
➡ Difficile de débugger un test
Rotation sur iOS
Mail : [email protected]
Tests automatisés sur iOS
Mail : [email protected] : www.cocoaheads.fr