Test Automation

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 33

Automatisation

des tests

Généralités
Objectifs & concepts
Partie 1

@crochefolle

@crochefolle
Dédicace

Librement inspiré du travail de


Dorothy Graham

Spécialiste reconnue dans le


domaine du test, elle a contribué
à la définition du syllabus ISTQB
et notamment sur
l’automatisation des tests.

http://www.dorothygraham.co.uk/

@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

@crochefolle
Introduction
ce que l’on va couvrir (et ne pas couvrir)

• Comprendre les objectifs et • Pas de présentations d’outils


concepts de l’automatisation • Pas de formation au
des tests développement de script de
• Définir les rôles et test
responsabilités de chacun
• Présenter le ROI de
l’automatisation
• Présenter les principes
techniques d’automatisation

@crochefolle
Définition : Qu’est-ce qu’un
test automatisé?

• Conçu par des testeurs pour validé une


Un test ! exigence

Un test • automatiquement par un moteur de test


• mais qui pourrait être exécuté
exécuté : manuellement

On industrialise ce qu’on maitrise !!

@crochefolle
Définition : Qu’est-ce que
l’automatisation des tests ?
L’automatisation des tests est :

• 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
•…

Un métier !

• Double compétence dev/test

@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)?

@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 ?

@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 ?

@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) ?

@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

@crochefolle
Couverture : Qu’est-ce qu’on automatise ?

• 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 Test automatisé
• 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

@crochefolle
Couverture : Qu’est-ce qu’on automatise ?
• Sélectionner /identifier les scénarios de test
• Préparer l’environnement de test Automatisation des tests
– 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

@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 !!!!

@crochefolle
Pre et Post Process

Exemples

Préparer des fichiers d’entrées


Générer des données
Pre-process : 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

Copier les résultats vers l’outils de comparaison


Sauvegarder un état de données
Post-process : Faciliter l’analyse des résultats
Supprimer les données/résultats inutiles

@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 !!!

@crochefolle
Couverture : Comment déterminer ce qu’on
Les critères sont les suivants :
automatise ?
1. la faisabilité technique de
l’automatisation,

2. la fréquence d’exécution des


tests,

3. le degré de réutilisabilité des


composants de test,

4. le nombre total de ressources


nécessaires,

5. la complexité des cas de test,

6. la possibilité d’utiliser les mêmes


cas de test pour de multiples
navigateurs ou environnements

7. le temps nécessaire à l’exécution ©

des tests.

@crochefolle
Responsabilité : Qui fait quoi?
Test le logiciel

Automatise les tests Sélectionne les tests à


automatiser
Exécute les tests automatisés Conçoit les scénarii et cas de test

Maintient et améliore le référentiel de


test automatisé

Analyse les résultats de tests


Fournit l’équipe de test en outils
Aide à l’analyse de résultat
Créé les bugs trouvés par l’automate
Fournit les moyen pour lancer les tests

@crochefolle
Responsabilité : Qui fait quoi?
Testeur Automaticien
• Test le logiciel • Automatise les tests
– Conçoit les scénarii et cas demandés par les
de test testeurs
– Sélectionne les tests à • Aide à l’automatisation
automatiser des tests
• Exécute les tests – Fournit les moyen aux
testeurs pour lancer les
automatisés tests
• Analyse les résultats de – Aide à l’analyse de résultat
tests – Fournit l’équipe de test en
outils d’aide
– Créé les bugs trouvés par
l’automate • Maintient et améliore le
référentiel de test
automatisé

@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

@crochefolle
ROI : Combien ça coute ?
ROI : Retour sur investissement = (bénéfice – cout)/cout

• 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

@crochefolle
Hypothèses de travail : exemple du mobile
Applications concernées Estimation budget automatisation

Application Type Automatisation Priorité Nb scénarios 61


XXX iPhone X 1 Nb jours automatisation par application 80
iPad X 2 Nombre d'applications 4
Android X 3 Nb jours automatisation 320
Windows Phone
Webapp X 4

Nombres de scénarios de tests à


automatiser par type d’application
Durée / scénarios
Scénario (en jours) Nb Scénarios
Simple 0,5 28
Moyen 1,5 22
Complexe 3 11

Estimation heures d’exécution nécessaire


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

@crochefolle 22
ROI : Combien ça coute ?
Manual Automated
No. manual tests 61 No. automated tests 61
1800
Test Creation Test Model Creation
Manual time (hrs) 2 Build time (hrs) 5
No. scenarios 61 1600
Total time 122 Total time 326

Uses of scenario (hrs) 2 1400


Total time 122

Overall model time 448 1200

Prepare automated
framework
1000
Acquire, install, configure
tools 140
Manual hrs
Tool training 14
Testability analysis 0 800 Automated hrs
Prepare Detailed test
model 40
Total aut prep 194 600

Test execution Automated execution


Manual exec (hrs) 1 Exec 4 mins 0,07 400
Man exec time 61 Aut exec time 4,27

Test 200
maintenance Aut maint
Manual maint 1
Man maint time 61 Total aut maint 5 0
1 2 3 4 5 6 7 8 9 10 11 12 13

Cost per test run


1 183 646

@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

@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
Produits de test Compléments
d’entrées
Scripts de tests Logs
Exigences Status
Résultats
Résultats obtenus Différences
attendus
Environnement Rapports
Outils

@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 !!!

@crochefolle
Infrastructure de test : outils
• Quels sont les critères de choix ? Exemple du mobile

@crochefolle
Infrastructure de test : outils
• Quels sont les critères de choix ? Exemple du mobile
Installation
100
80
60

Fonctionnalités 40 Pricing &


Technique Licensing
20
-

Fonctionalités HP
Support
Metier

Microsoft

@crochefolle
En résumé : process d’automatisation
Mise en place
d’un projet Choix d’un outil
d’automatisation

Automaticien
Mise en place
Développement Mise en place de
d’un framework l’infrastructure de
d’automatisation test

Testeur
Conception et Développement
sélection des d’un automate
tests à pour ces
automatiser scénarios

Au quotidien

Analyse des Exécution de


résultats l’automate

Maintenance de
l’automate

@crochefolle 29
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 ?

@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

@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

@crochefolle
Merci !!

@crochefolle

Vous aimerez peut-être aussi