cocoaheads rennes #4 : tests automatisés sur ios

29
Tests automatisés sur iOS Quentin Arnault CocoaHeads Rennes 13 octobre 2011

Upload: cocoaheadsrns

Post on 14-Jun-2015

1.578 views

Category:

Technology


3 download

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

Tests automatisés sur iOS

Quentin ArnaultCocoaHeads Rennes13 octobre 2011

Page 2: CocoaHeads Rennes #4 : Tests automatisés sur iOS

Pourquoi ?

Comment ? xUnit

Tests unitaires et d’intégration

Tests de bout en bout

Page 3: CocoaHeads Rennes #4 : Tests automatisés sur iOS

Quels sont nos objectifs ?

Page 4: CocoaHeads Rennes #4 : Tests automatisés sur iOS

Ecrire du code adaptable Y prendre du

plaisir12 3

Livrer nos produits !

Page 5: CocoaHeads Rennes #4 : Tests automatisés sur iOS

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

Ecrire du code adaptable

➡Composants indépendants

➡ Harnais de tests2

Page 7: CocoaHeads Rennes #4 : Tests automatisés sur iOS

Y prendre du plaisir

➡ Esprit serein

3

Page 8: CocoaHeads Rennes #4 : Tests automatisés sur iOS

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

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

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

Démo

Page 12: CocoaHeads Rennes #4 : Tests automatisés sur iOS

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

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

Démo

Page 15: CocoaHeads Rennes #4 : Tests automatisés sur iOS

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

Pour vous aider

OCMock

Page 17: CocoaHeads Rennes #4 : Tests automatisés sur iOS

SUT

Arrange

Assert

Base de données

Webservices

Librairie tierce

Act

Page 18: CocoaHeads Rennes #4 : Tests automatisés sur iOS

SUT

mock

mock

mock

Arrange

Assert

Act

Page 19: CocoaHeads Rennes #4 : Tests automatisés sur iOS

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

Démo

Page 21: CocoaHeads Rennes #4 : Tests automatisés sur iOS

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

➡ 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

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

UIAutomation proposé par Apple avec iOS 4.0

Sonde pour Instruments Librairie JavaScript

+

Page 25: CocoaHeads Rennes #4 : Tests automatisés sur iOS

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

tap

doubleTap

twoFingerTaptouchAndHold

dragInside

flickInside

orientationChange

background

lockScreen

Page 27: CocoaHeads Rennes #4 : Tests automatisés sur iOS

Démo

Page 28: CocoaHeads Rennes #4 : Tests automatisés sur iOS

Il reste des limitations

➡ Pas de lancement par ligne de commande

➡ Interdépendance des tests

➡ Difficile de débugger un test