Rédigé en Mars 2013
Introduction : ce que l’on va couvrir (et ne pas couvrir)
Définition : Qu’est-ce que l’automatisation des tests ?
Objectifs : Pourquoi automatiser ?
Couverture :
Qu’est-ce qu’on automatise ?
Pre et Post Process
Comment déterminer ce qu’on automatise ?
Responsabilité : Qui fait quoi?
ROI : Combien ça coute ?
Infrastructure de test
Processus d’automatisation
Conclusion
3. @crochefolle
Agenda
1. Introduction : ce que l’on va couvrir (et ne pas couvrir)
2. Définition : Qu’est-ce que l’automatisation des tests ?
3. Objectifs : Pourquoi automatiser ?
4. Couverture :
– Qu’est-ce qu’on automatise ?
– Pre et Post Process
– Comment déterminer ce qu’on automatise ?
5. Responsabilité : Qui fait quoi?
6. ROI : Combien ça coute ?
7. Infrastructure de test
8. Processus d’automatisation
9. Conclusion
4. @crochefolle
Introduction
• Comprendre les objectifs et
concepts de l’automatisation
des tests
• Définir les rôles et
responsabilités de chacun
• Présenter le ROI de
l’automatisation
• Présenter les principes
techniques d’automatisation
• Pas de présentations d’outils
• Pas de formation au
développement de script de
test
ce que l’on va couvrir (et ne pas couvrir)
5. @crochefolle
Définition : Qu’est-ce qu’un
test automatisé?
• Conçu par des testeurs pour validé une
exigenceUn test !
• automatiquement par un moteur de test
• mais qui pourrait être exécuté
manuellement
Un test
exécuté :
On industrialise ce qu’on maitrise !!
6. @crochefolle
Définition : Qu’est-ce que
l’automatisation des tests ?
• Un projet avec des objectifs, des responsabilités
• Mais aussi une charge de maintenance permanente
• Et des sous-projets :
• Choisir l’outil de test
• Produire/générer des données de tests
• …
L’automatisation des tests est :
• Double compétence dev/test
Un métier !
7. @crochefolle
Objectifs : Pourquoi automatiser ?
• Réduire le nombre de bugs trouvés par le
métier / en prod ?
• Sécuriser les MEPs ?
• Ajouter de nouvelles compétences pour les
testeurs ?
• Lancer des tests de régression chaque soir ?
• Exécuter des tests répétitifs ou avec beaucoup
de calcul (et donc risqué si fait manuellement)?
8. @crochefolle
Objectifs :
• Avoir des résultats rapides sans coûts
supplémentaires
• Automatiser tous les tests ?
• Construire une plateforme de tests
automatisés durable et maintenable ?
• Ajouter de nouveaux tests facilement ?
• S’assurer de la répétabilité des tests de
régression ?
9. @crochefolle
Objectifs :
• Sécuriser les dates de MEPs?
• Trouver plus de bugs ?
• Trouver des bugs plus rapidement ?
• Libérer les testeurs de l’exécution de tests
répétitifs (et ennuyant ) ou avec beaucoup de
calcul (et donc risqué si fait manuellement)?
• Améliorer nos tests ?
10. @crochefolle
Objectifs :
• Réduire la durée de test de x% ?
• Réduire le temps et les coûts de conception
des tests ?
• Réduire la taille de l’équipe de test ?
• Exécuter plus de tests ?
• Exécuter les tests de régression plus souvent ?
• Maximiser l’utilisation de la CPU de nos PCs
(exécution de nuit) ?
11. @crochefolle
Objectifs de l’automatisation des tests
• Exécuter des tests répétitifs ou avec beaucoup de calcul (et donc risqué si fait
manuellement)
• Libérer les testeurs de l’exécution de tests répétitifs (et ennuyant ) ou avec
beaucoup de calcul (et donc risqué si fait manuellement)
• Exécuter plus de tests
• Exécuter les tests de régression plus souvent
• S’assurer de la répétabilité des tests de régression
• Construire une plateforme de tests automatisés durable et maintenable
• Ajouter de nouveaux tests facilement
12. @crochefolle
Couverture : Qu’est-ce qu’on automatise ?
Test automatisé
• Sélectionner /identifier les scénarios de test
• Préparer l’environnement de test
– Créer l’environnement
– Créer les données de test
– Pour chacun des cas de test
• Préparer les prérequis
• Exécuter le scénario
• Comparer les résultats
• Enregistrer les résultats
• Analyser les « fails »
• Créer les bugs
• Revenir à l’état initial
• Nettoyer l’environnement de test
– Supprimer les données non nécessaires/rebaser l’environnement
– Sauvegarder les données importantes
• Faire un reporting d’avancement
13. @crochefolle
Couverture : Qu’est-ce qu’on automatise ?
Automatisation des tests
• Sélectionner /identifier les scénarios de test
• Préparer l’environnement de test
– Créer l’environnement
– Créer les données de test
– Pour chacun des cas de test
• Préparer les prérequis
• Exécuter le scénario
• Comparer les résultats
• Enregistrer les résultats
• Revenir à l’état initial
• Nettoyer l’environnement de test
– Supprimer les données non nécessaires/rebaser l’environnement
– Sauvegarder les données importantes
• Faire un reporting d’avancement
• Faciliter l’analyse
• Analyser les « fails »
• Créer les bugs
14. @crochefolle
Pre et Post Process
Qu’est ce que le pre et post process ?
Pre-process : automatisation des taches nécessaires à la mise en
place et l’exécutions d’un cas de tests
Post-process : automatisation des taches nécessaires pour
terminer la vérification et « faire le ménage »
Ces points sont essentiels car ils englobent de nombreuses taches
souvent les mêmes d’un test à un autre et qui peuvent être
automatisé : y compris si l’exécution du test est manuel !!!!
15. @crochefolle
Préparer des fichiers d’entrées
Générer des données
Nettoyer ce qui ne devrait pas être présent au démarrage d’un test
Copier/extraire des fichiers et les déposer là où l’outil de test les attend
…
Pre-process :
Copier les résultats vers l’outils de comparaison
Sauvegarder un état de données
Faciliter l’analyse des résultats
Supprimer les données/résultats inutiles
…
Post-process :
Exemples
Pre et Post Process
16. @crochefolle
Pre et Post Process
Ces points sont essentiels car ils englobent de nombreuses
taches souvent les mêmes d’un test à un autre et qui peuvent
être automatisé : y compris si l’exécution du test est
manuel !!!!
Ne pas automatisé uniquement les tests !!!
18. @crochefolle
Responsabilité : Qui fait quoi?
Sélectionne les tests à
automatiser
Automatise les tests
Exécute les tests automatisés
Analyse les résultats de tests
Aide à l’analyse de résultat
Maintient et améliore le référentiel de
test automatisé
Créé les bugs trouvés par l’automate
Fournit les moyen pour lancer les tests
Fournit l’équipe de test en outils
Conçoit les scénarii et cas de test
Test le logiciel
19. @crochefolle
Responsabilité : Qui fait quoi?
• Test le logiciel
– Conçoit les scénarii et cas
de test
– Sélectionne les tests à
automatiser
• Exécute les tests
automatisés
• Analyse les résultats de
tests
– Créé les bugs trouvés par
l’automate
• Automatise les tests
demandés par les
testeurs
• Aide à l’automatisation
des tests
– Fournit les moyen aux
testeurs pour lancer les
tests
– Aide à l’analyse de résultat
– Fournit l’équipe de test en
outils d’aide
• Maintient et améliore le
référentiel de test
automatisé
Testeur Automaticien
20. @crochefolle
Responsabilité : Qui fait quoi?
Est-ce que tous les testeurs doivent devenir automaticiens ?
Non
Car :
On risque d’obtenir un mauvais développeur de test
... et de perdre un bon testeur
Tout ne s’automatise pas, on aura toujours besoin de test manuels
complémentaires
Mais :
Tous les testeurs doivent avoir une compétence d’automatisation pour :
Comprendre et exécuter les automates de test
Utiliser les tests automatisés à bon escient
Avoir un point de rencontre avec le monde du dev
Mike Cohn Testing Pyramid
21. @crochefolle
ROI : Combien ça coute ?
• Investissement :
– Les coûts peuvent être exprimé en terme en terme d’effort de
test (en h, qui peuvent être converti en €)
• Retours :
– Réduire le temps d’exécution des tests par les testeurs
– Mais comment exprimer « la rapidité d’exécution »,
« exécution plus fréquente », « meilleure couverture »,
« meilleur TTM » ?
On peut se concentrer sur le temps passé par les testeurs et
considérer le reste comme des « bonus »
On compare donc habituellement au tests manuels
ROI : Retour sur investissement = (bénéfice – cout)/cout
22. @crochefolle
Hypothèses de travail : exemple du mobile
22
Application Type Automatisation Priorité
XXX iPhone X 1
iPad X 2
Android X 3
Windows Phone
Webapp X 4
Applications concernées
Scénario
Durée / scénarios
(en jours) Nb Scénarios
Simple 0,5 28
Moyen 1,5 22
Complexe 3 11
Nombres de scénarios de tests à
automatiser par type d’application
Heures d'utilisation Non-reg Front Non-reg Mobile
Durée par pays (heure) 3 2
Nombre de pays 8 8
Nombre de device 1 10
Nombre d'exécution moyenne par
semaine 2 1
Nombre de semaines 50 50
Nombre total d'heures d'exécution 2400 8000
Estimation heures d’exécution nécessaire
Nb scénarios 61
Nb jours automatisation par application 80
Nombre d'applications 4
Nb jours automatisation 320
Estimation budget automatisation
23. @crochefolle
ROI : Combien ça coute ?
Manual Automated
No. manual tests 61 No. automated tests 61
Test Creation Test Model Creation
Manual time (hrs) 2 Build time (hrs) 5
No. scenarios 61
Total time 122 Total time 326
Uses of scenario (hrs) 2
Total time 122
Overall model time 448
Prepare automated
framework
Acquire, install, configure
tools 140
Tool training 14
Testability analysis 0
Prepare Detailed test
model 40
Total aut prep 194
Test execution Automated execution
Manual exec (hrs) 1 Exec 4 mins 0,07
Man exec time 61 Aut exec time 4,27
Test
maintenance Aut maint
Manual maint 1
Man maint time 61 Total aut maint 5
Cost per test run
1 183 646
0
200
400
600
800
1000
1200
1400
1600
1800
1 2 3 4 5 6 7 8 9 10 11 12 13
Manual hrs
Automated hrs
24. @crochefolle
Les dangers du ROI
• Focus sur ce qui est facilement mesurable
• Les autres facteurs peuvent être beaucoup plus important : « la rapidité d’exécution »,
« exécution plus fréquente », « meilleure couverture », « meilleur TTM »
• Définir le ROI par le temps de tests peux donner l’impression que l’outil « remplace » les
testeurs
– C’est dangereux !
– Les outils remplacent certains aspects de ce que les testeurs font, mais augmentent les coûts
par ailleurs
– On attend un bénéfice net, même si c’est difficile à quantifier
25. @crochefolle
Infrastructure de test
• Définition : Les objets organisationnels nécessaires pour effectuer un test,
consistant en l’environnement de test, des outils de tests, des procédures et un
environnement bureautique
• Quels sont les artefacts dont on a besoin pour les tests ?
Entrées Résultats de tests
Données
d’entrées
Produits de test Compléments
Scripts de tests
Résultats obtenus
Logs
Exigences Status
Résultats
attendus
Différences
Environnement Rapports
Outils
26. @crochefolle
Infrastructure de test
• Quels sont les points important à prendre en compte ?
– La gestion des artefacts :
• Nombres
• Versionning
• Partage de données, librairies
Importance de la gestion de configuration
Gestion d’un référentiel de composant
– Les capacités d’exécutions :
• Machines virtuelles
• Test lab ?
– Maintenance
L’automatisation des tests est un projet de développement et doit être gérer en
tant que tel !!!
28. @crochefolle
Infrastructure de test : outils
• Quels sont les critères de choix ? Exemple du mobile
-
20
40
60
80
100
Installation
Pricing &
Licensing
Support
Fonctionalités
Metier
Fonctionnalités
Technique
HP
Microsoft
29. @crochefolle
En résumé : process d’automatisation
29
Automaticien
Testeur
Mise en place
d’un projet
d’automatisation
Choix d’un outil
Mise en place de
l’infrastructure de
test
Développement
d’un framework
d’automatisation
Conception et
sélection des
tests à
automatiser
Développement
d’un automate
pour ces
scénarios
Exécution de
l’automate
Analyse des
résultats
Maintenance de
l’automate
Mise en place
Au quotidien
30. @crochefolle
Conclusion
• Quoi ? Qu’est-ce qu’on automatise ?
• Les tests conçus et sélectionnés par les testeurs
• Tout ce qu’on peut et qui est pertinent : construction environnement, générations
de JDD, …
• Qui ?
• Le testeur conçoit, sélectionne, exécute et analyse les résultats
• L’automaticien développe les tests, met à disposition l’infra de test et aide à
l’analyse
• Où ?
• Sur une infrastructure de test
• Quand ?
• Quand c’est pertinent : fréquent, réutilisable, critique, complexe, …
• Combien ?
• Un ROI moyen autour de la 6ième itération
• Comment ?
• C’est l’objet de la prochaine session
• Pourquoi ?
31. @crochefolle
Objectifs de l’automatisation des tests
• Exécuter des tests répétitifs ou avec beaucoup de calcul (et donc risqués si fait
manuellement)
• Libérer les testeurs de l’exécution de tests répétitifs (et ennuyant ) ou avec
beaucoup de calcul (et donc risqué si fait manuellement)
• Exécuter plus de tests
• Exécuter les tests de régression plus souvent
• S’assurer de la répétabilité des tests de régression
• Construire une plateforme de tests automatisés durable et maintenable
• Ajouter de nouveaux tests facilement
32. @crochefolle
Agenda de la prochaine partie
Comment automatiser les tests ?
1. Les différents types de tests automatisés : TU, BDD/TDD, NRA,
TDC, Test de vie …
2. Méthodes d’automatisation
1. Capture/replay
2. Projet de développement
3. Techniques d’automatisation
1. Data driven
2. Keyword driven
3. DSTL
4. Oracle / bouchon
5. Techniques de comparaison
6. Reporting