SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
@crochefolle
Automatisation
des tests
Généralités
Objectifs & concepts
Partie 2
@crochefolle
@crochefolle
Rappel de la session précédente
• 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 cette 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
Comment automatiser les tests ?
1. Les différents types de tests automatisés : TU, BDD/TDD, GUI, 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. Composants technique pour l’automatisation
1. Oracle
2. Bouchon
3. Techniques de comparaison
4. Reporting
@crochefolle
Source : http://dept-info.labri.u-bordeaux.fr/~felix/
Classification des tests
@crochefolle 6
Mike Cohn Testing Pyramid
Répartition des tests
@crochefolle
Tests unitaires
• Tests unitaires
– Code qui permet de tester du code
– Validation basé sur des assertions
• Tests unitaires de base de données
– Code TSQL qui permet de tester une base de données
– Tests des procédures stockées, temps de réponse, cohérence
du résultat, etc.
– Généré au sein d’un test unitaire .NET classique pour
l’exécution
@crochefolle
Exemple
@crochefolle
Test driven development
Écrire un cas de
test
Exécuter les cas
de test
Faire un petit
changement
Exécuter les cas
de test
échec
succès
échec
développement s’arrête
développement
continue
Given Mon compte bancaire possède un crédit de 1000€
And Mon compte épargne possède un crédit de 0€
When Je procède à un virement de 500€ de mon compte bancaire vers
mon compte épargne
Then Mon compte bancaire à un crédit de 500€
And Mon compte épargne à un crédit de 500€
@crochefolle
SpecFlow est à la fois un composant ou framework de test, et un
plug-in pour Visual Studio, qui permet d’écrire des tests d’une
manière naturelle, puis de les exécuter avec votre test-runner
favori.
@crochefolle
Tests UI
• Tests codés de l’interface utilisateur
– Simulent les interactions de l’utilisateur au clavier et à
la souris
– Code généré à partir d’un enregistreur
– Peuvent être personnalisés / écrits manuellement
@crochefolle
Tests de performance/charge
• Tests de performance de site web
– Simulation d’un scénario d’utilisation d’une application web
– Uniquement les interactions au niveau de la couche http
– Peuvent tester des services web
– Permettent de valider le temps de réponse / contenu des
pages
• Tests de charge
– Souvent utilisés de pair avec les tests web
– Permettent de simuler une charge utilisateur sur une
application
– Récoltent des indicateurs permettant l’analyse du
comportement
@crochefolle
Schéma de principe
Postes d’injection
Scénarios de test
Utilisateurs
virtuels simulés
Contrôleur du test
Réseau
Plate-forme testée
application
1.0
données du
test
sonde
Plan de test
Mesures des
sondes système
Temps de réponses
mesurés
Analyse
Recueil du besoin
Rapport du test
@crochefolle
Tests de vie
• Tests de vie de site web
– Simulation d’un scénario d’utilisation d’une application web
– Mesure de la qualité de service
@crochefolle
Exemple de dashboard
15
@crochefolle
Tests de vulnérabilité
• Tests d’intrusion
– Un test d'intrusion (« penetration test » en anglais) est une
méthode d'évaluation de la sécurité d'un système ou
d'un réseau informatique.
– La méthode consiste généralement à simuler une attaque d'un
utilisateur mal intentionné, voire d'un logiciel malveillant. On
analyse alors les risques potentiels dus à une mauvaise
configuration d'un système, d'un défaut de programmation ou
encore d'une vulnérabilité liée à la solution testée. Lors d'un
test d'intrusion, nous nous retrouvons dans la position de
l'attaquant potentiel. Le principal but de cette manœuvre est de
trouver des vulnérabilités exploitables en vue de proposer un
plan d'actions permettant d'améliorer la sécurité d'un système.
@crochefolle
Exemple de dashboard
17
@crochefolle
Méthodes d’automatisation
18
Capture / Replay
Développement
@crochefolle
Capture / Replay
19
Scénario
de test
Capture Script
de test
Instructions
& JDD
Outil de test
Application
à
tester
testeurs automaticiens
@crochefolle
Capture / Replay
• Avantages :
– Mise en place très rapide
– Permet d’enregistrer beaucoup de scénarios rapidement
• Inconvénients
– Impossible à maintenir
– Pour chaque scénario, on réenregistre tout : aucune factorisation. Le script
est linéaire et déroule la séquence de test
– Les données et les étapes sont mélangées : autant de scripts de test que de
cas de test
20
Intéressant pour une démo, un POC jetable mais on
ne peux l’envisager sérieusement comme une
démarche durable
@crochefolle
Développement
21
Scénario
de test
Développe
Script
de
test
Outil de test
Application
à
tester
testeurs automaticiens
Librairie de
composants
de test
réutilisables
Données
de test
Référentiel
d’objets
@crochefolle
Développement
• Référentiel d’objets : liste partagés par tous les scripts de test permettant de
centraliser l’ensemble des objets qui seront utilisés lors des tests avec les
moyens de les retrouver .
Ex : une page, un champ ou un bouton dans une page
La constitution de ce référentiel est essentielle, c’est qui permettra de maintenir
les scripts de test synchrone avec l’évolution de l’application à tester.
On favorisera donc la reconnaissance des objets par leurs ID plutôt que par leur
position (qui peut être amené à évoluer). On évitera autant que faire ce peut
d’utiliser les coordonnées à l’écran ou la reconnaissance d’image.
• Composant de test : ensemble d’instructions de test réutilisable dans plusieurs
scripts (équivalent des « Shared steps »)
• Script de test : équivalent à un scénario de test, principalement composé
d’appel à des composants de tests
22
@crochefolle
Développement
• Avantages :
– Composants de test réutilisables
– Maintenance facilité :
• Le découpage des composants permet de cibler plus facilement les
modifications
• Peu de modification à faire en cas de modification dans l’application à tester
– Permet d’enrichir facilement le patrimoine de tests en multipliant les cas de test ou
les scénarios de tests une fois que l’on dispose d’un référentiel d’objet et d’une
librairie de composants de test conséquents.
• Inconvénients
– Mise en place plus longue : un investissement initial important est nécessaire pour
mettre en place le framework de test
23
Seule solution viable sur le long terme
@crochefolle
Techniques d’automatisation
On distingue principalement 3 techniques d’automatisation :
1. Data driven
2. Keyword driven
3. DSTL : Domain specific test language
24
@crochefolle
Data driven
• Les données sont externalisées des scripts de test :
– Csv
– Xls
– Xml
– Base de donnée
• Un script exécute de multiples tests basés sur les données en
entrée
– Maintenance faible sur le script
– Facilité d’enrichir les cas de tests en ajoutant un nouveau jeu de
donnée
25
@crochefolle
Data driven : exemple
26
Test de régression basé sur la donnée
@crochefolle
Keyword driven
• Constitution d’un librairie de composants de test basé sur des
mots-clefs :
– S’authentifier
– Mettre au panier
– Ajouter une adresse
• Les scripts de test sont constitués uniquement de l’appel à ces
composants.
• L’automaticien se concentre sur les moyens de test en
enrichissant la librairie de composants.
• Le testeur peut multiplier les scénarios de test en variant les
enchaînements d’appel à ces composants sans avoir besoin de
se préoccuper de la technique utilisée.
27
@crochefolle
Keyword driven : exemple
28
Test de régression Front
@crochefolle
Domain Specific Test Language (DSTL)
• Version plus abstraite que la méthode « Keyword »
• L’ensemble des mots-clefs est prédéfini dans un dictionnaire
• Plus proche du langage courant mais dans un format imposé
• Les testeurs peuvent le rédiger en respectant ce format quelle
que soit l’utilisation future (manuelle ou automatisée)
29
@crochefolle
DSTL: exemple
30
TDD : La syntaxe Gherkin
Gherkin est le Domain Specific Language de SpecFlow. Cette syntaxe, qui contient très peu de
mots clés, se veut compréhensible de tous et est orientée spécification. Ce DSL permet
de spécifier un comportement au travers de 3 mots clés:
Given est l’instruction de définition d’un contexte
When est l’instruction qui présente l’action a tester
Then est l’instruction permettant de valider l’action effectuée.
@crochefolle
Composants techniques pour l’automatisation
31
Dans tous frameworks d’automatisation, il est nécessaire de mettre
en place des composants techniques pour faciliter le
développement :
• Oracle
• Bouchon
• Techniques de comparaison
• Reporting
@crochefolle
Oracle
Un oracle est un mécanisme permettant de décider la réussite
d’un scénario de test, c’est à dire de déterminer si les réponses
obtenues à l’exécution du test correspondent bien à ce que
requiert le scénario.
Dans la plupart des frameworks de test, les oracles sont écrits
sous forme d’assertion.
32
@crochefolle
Les assertions
• Exemples d’assertions
– Assert.AreEqual(…)
– Assert.AreSame(…)
– Assert.IsFalse(…)
– CollectionAssert.AllItemsAreNotNull(…)
– CollectionAssert.AreEqual(…)
– CollectionAssert.Contains(…)
– StringAssert.Contains(…)
– StringAssert.DoesNotMatch()
– …
@crochefolle
Assertions : résultats
 Lors d’un test, 3 situations possibles
Vert  REUSSITE
– La condition vérifiée est exécutable et vraie, p.e.
public void test1() {
assertTrue(sqrt(4) == 2); }
FAILURE
– Condition vérifiée est exécutable mais fausse, p.e.
public void test2() {
assertEquals(3, sqrt(4), 0.001); }
ERREUR
– Une expression exécutée lors du test à lancée une erreur ou exception, p.e.
• Division par zéro
public void test3() {
assertTrue(2 / 0 == 1); }
Ça marche et ça
fait ce qu’on veut.
Ça ‘marche’ mais ça
ne fait pas ce qu’on veut.
Ça ne ‘marche’ même pas.
@crochefolle
Bouchon
Un bouchon (stub en anglais) est un code qui n'effectue aucun
traitement et retourne toujours le même résultat.
Un bouchon sert d'alternative à un code qui n'est pas utilisable
parce qu'il n'est pas encore codé, qu'il est en cours d'évolution ou
non disponible dans l’environnement courant.
Ex : bouchon de paiement
Dans les frameworks de test, on utilise le concept de Mocking pour
simuler le comportement de « l’extérieur »
35
@crochefolle
Exemples de frameworks
• Liste non exhaustive de framework .NET
– RhinoMock
– TypeMock
– Nmock
– Moq
• Moq (prononcer « Mock You »)
– Est extrêmement simple à aborder
– Est plus récent
– Permet de simuler des classes et des interfaces
@crochefolle
Exemple d’utilisation
• La classe DateManager implémente l’interface
IDateManager
public interface IDateManager
{
DateTime DateTimeNow();
}
public class DateManager:IDateManager
{
public DateTime DateTimeNow () {
return DateTime.Now;
}
}
@crochefolle
Exemple d’utilisation
• Etape 1 : créer le conteneur moq
• Etape 2 : décrire le comportement
• Etape 3 : utiliser l’objet généré
var mock = new Mock<IDateManager>();
mock.Setup(p => p.DateTimeNow())
.Returns(new DateTime(2000, 01, 01));
IDateManager testemoi = mock.Object;
Assert.AreEqual(testemoi.DateTimeNow().Year, 2013);
@crochefolle
Techniques de comparaison
39
La comparaison du résultat obtenu au résultat
attendu est un point crucial du test automatisé.
Il est important de faire attention à ce point et de :
• garder le plus simple possible,
• bien documenter ,
• éviter la comparaison d’images
Une technique de comparaison défaillante peut
rendre inutilisable les résultats de tests et mettre en
cause une politique d’automatisation.
Attention aux faux-positifs
@crochefolle
2 types de comparaison
40
Comparaison dynamique
• Effectuée pendant l’exécution
du test
• Exécutée par l’outil de test (les
assertions)
• Peut donner un suivi en direct
de l’avancée des tests
• Les informations d’échecs sont
enregistrés permettant l’analyse
postérieure
Comparaison post-exécution
• Effectuée après l’exécution du
test
• Très utilisés pour la
comparaison en masse de
donnée dans des fichiers ou
des bases
• Peut être exécuté
indépendamment de l’exécution
du test
• Peut avoir différents niveaux de
comparaisons (en détaillé sur
les points avec différences, en
surface pour les autres)
@crochefolle
Comparaison post-exécution
41
• Très peu d’outils pour la comparaison en masse post-exécution.
• Quelques-uns existent autour de la comparaison de fichiers sont
disponibles :
– Diff (Unix/Linux)
– winmerge, windiff (Windows)
• On utilise plutôt des outils de manipulations de texte :
– Sed, awk, grep, Perl, Tcl, Python
• Important de mettre en place de la reconnaissance de pattern
plutôt que de la comparaison stricte
@crochefolle
Reporting
42
Dernier composant important d’un framework de test, le reporting est
un point essentiel pour que l’automate de test soit utilisables par les
testeurs :
• Il doit être de plusieurs niveaux :
– Vue globale des résultats
– Vue détaillée pour les étapes en
échec ou en erreur.
• Intégré à l’outil de test mais consultable par tous sans avoir besoin
d’installer l’outil en question.
• Pouvoir être généré partiellement (notamment en cas d’erreurs et
d’interruptions des tests)
@crochefolle
Statuts de test
Les statuts de tests ne sont pas seulement : Pass/Fail
Voire plus spécifique :
• Partenaire
• Problèmes d’environnement (réseau indisponible, dns, time-out)
• Fichiers manquants
• Test obsolète par rapport au dev
A comparer à Pas de
différence
Des différences
trouvées
Résultat attendu Pass Fail
Erreur attendue Expected Fail Unknown
Pas d’information Unknown Unknown
@crochefolle
Exemple de reporting test unitaire
@crochefolle
Exemple de reporting test fonctionnel
@crochefolle
Mike Cohn Testing Pyramid
En résumé
Comment automatiser les tests ?
1. Les différents types de tests automatisés : le bon test au bon moment
2. Méthodes d’automatisation : Projet de développement
3. Techniques d’automatisation
1. Data driven : NRA Compta
2. Keyword driven : NRA Front
3. DSTL : TDD
4. Composants techniques pour un framework d’automatisation
1. Oracle : les assertions
2. Bouchon : mock
3. Techniques de comparaison : Attention aux faux-positifs
4. Reporting
@crochefolle
Merci !!
@crochefolle
Pour aller plus loin
http://www.dorothygraham.co.uk/
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.

Contenu connexe

Tendances

Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logicielJean-Paul CARMONA
 
Automatisation des tests: le mythe du ROI
Automatisation des tests: le mythe du ROIAutomatisation des tests: le mythe du ROI
Automatisation des tests: le mythe du ROIGilles Mantel
 
formation istqb.pdf
formation istqb.pdfformation istqb.pdf
formation istqb.pdfmido04
 
Stratégie de tests type
Stratégie de tests typeStratégie de tests type
Stratégie de tests typemadspock
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testingjubehr
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnelscvcby
 
Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?Gilles Brieux
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application javaAntoine Rey
 
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsEric Hogue
 
Qualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du LogicielQualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du Logicieldanaobrest
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxNicolas Fédou
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsCloudNetCare
 
JFTL2015 - Tester une application mobile de A à Z
JFTL2015 - Tester une application mobile de A à ZJFTL2015 - Tester une application mobile de A à Z
JFTL2015 - Tester une application mobile de A à ZCedric GAUTIER
 
Tests & recette - Les fondamentaux
Tests & recette - Les fondamentauxTests & recette - Les fondamentaux
Tests & recette - Les fondamentauxCOMPETENSIS
 

Tendances (20)

Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logiciel
 
Automatisation des tests: le mythe du ROI
Automatisation des tests: le mythe du ROIAutomatisation des tests: le mythe du ROI
Automatisation des tests: le mythe du ROI
 
formation istqb.pdf
formation istqb.pdfformation istqb.pdf
formation istqb.pdf
 
Stratégie de tests type
Stratégie de tests typeStratégie de tests type
Stratégie de tests type
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testing
 
Ingénierie du test 0.9
Ingénierie du test 0.9Ingénierie du test 0.9
Ingénierie du test 0.9
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnels
 
Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?Le test dans un cycle agile. Comment faire ?
Le test dans un cycle agile. Comment faire ?
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec Jenkins
 
Jenkins
JenkinsJenkins
Jenkins
 
Qualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du LogicielQualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du Logiciel
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
JFTL2015 - Tester une application mobile de A à Z
JFTL2015 - Tester une application mobile de A à ZJFTL2015 - Tester une application mobile de A à Z
JFTL2015 - Tester une application mobile de A à Z
 
Tests & recette - Les fondamentaux
Tests & recette - Les fondamentauxTests & recette - Les fondamentaux
Tests & recette - Les fondamentaux
 

Similaire à Automatisation des tests - objectifs et concepts - partie 2

TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1Marc Bojoly
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en pythongburet
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
Les tests utilisateurs pour les petits budgets
Les tests utilisateurs pour les petits budgetsLes tests utilisateurs pour les petits budgets
Les tests utilisateurs pour les petits budgetsL_Demontiers
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & MétiersCellenza
 
testUnitaire (1).pptx
testUnitaire (1).pptxtestUnitaire (1).pptx
testUnitaire (1).pptxManalAg
 

Similaire à Automatisation des tests - objectifs et concepts - partie 2 (20)

TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en python
 
Perf university
Perf universityPerf university
Perf university
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Les tests utilisateurs pour les petits budgets
Les tests utilisateurs pour les petits budgetsLes tests utilisateurs pour les petits budgets
Les tests utilisateurs pour les petits budgets
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers
 
testUnitaire (1).pptx
testUnitaire (1).pptxtestUnitaire (1).pptx
testUnitaire (1).pptx
 

Plus de Christophe Rochefolle

Agile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique ResponsableAgile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique ResponsableChristophe Rochefolle
 
Une App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durableUne App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durableChristophe Rochefolle
 
#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendredi#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendrediChristophe Rochefolle
 
Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"Christophe Rochefolle
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018Christophe Rochefolle
 
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...Christophe Rochefolle
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 

Plus de Christophe Rochefolle (13)

Agile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique ResponsableAgile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique Responsable
 
Une App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durableUne App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durable
 
#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendredi#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendredi
 
Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6
 
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Qualité logiciel - Generalités
Qualité logiciel - GeneralitésQualité logiciel - Generalités
Qualité logiciel - Generalités
 
Paris Chaos Engineering Meetup #5
Paris Chaos Engineering Meetup #5Paris Chaos Engineering Meetup #5
Paris Chaos Engineering Meetup #5
 
Jftl 2018 chaos engineering
Jftl 2018   chaos engineeringJftl 2018   chaos engineering
Jftl 2018 chaos engineering
 
Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2
 
Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1 Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1
 

Dernier

BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinidelewebmestre
 
anas transcript 111111111111111111111111
anas transcript 111111111111111111111111anas transcript 111111111111111111111111
anas transcript 111111111111111111111111zaidtaim1214
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresidelewebmestre
 
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueBOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueidelewebmestre
 
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...idelewebmestre
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...idelewebmestre
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresidelewebmestre
 
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la NièvreAccompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la Nièvreidelewebmestre
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleuridelewebmestre
 

Dernier (10)

BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcin
 
anas transcript 111111111111111111111111
anas transcript 111111111111111111111111anas transcript 111111111111111111111111
anas transcript 111111111111111111111111
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitières
 
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueBOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
 
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
BOW 2024 - Nouveaux modes de logement pour des veaux de boucherie avec accès ...
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
 
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
 
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la NièvreAccompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
 
Webinaire lésions podales_04.04.2024.pptx
Webinaire lésions podales_04.04.2024.pptxWebinaire lésions podales_04.04.2024.pptx
Webinaire lésions podales_04.04.2024.pptx
 

Automatisation des tests - objectifs et concepts - partie 2

  • 2. @crochefolle Rappel de la session précédente • 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 cette session • Pourquoi ?
  • 3. @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
  • 4. @crochefolle Agenda Comment automatiser les tests ? 1. Les différents types de tests automatisés : TU, BDD/TDD, GUI, 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. Composants technique pour l’automatisation 1. Oracle 2. Bouchon 3. Techniques de comparaison 4. Reporting
  • 6. @crochefolle 6 Mike Cohn Testing Pyramid Répartition des tests
  • 7. @crochefolle Tests unitaires • Tests unitaires – Code qui permet de tester du code – Validation basé sur des assertions • Tests unitaires de base de données – Code TSQL qui permet de tester une base de données – Tests des procédures stockées, temps de réponse, cohérence du résultat, etc. – Généré au sein d’un test unitaire .NET classique pour l’exécution
  • 9. @crochefolle Test driven development Écrire un cas de test Exécuter les cas de test Faire un petit changement Exécuter les cas de test échec succès échec développement s’arrête développement continue Given Mon compte bancaire possède un crédit de 1000€ And Mon compte épargne possède un crédit de 0€ When Je procède à un virement de 500€ de mon compte bancaire vers mon compte épargne Then Mon compte bancaire à un crédit de 500€ And Mon compte épargne à un crédit de 500€
  • 10. @crochefolle SpecFlow est à la fois un composant ou framework de test, et un plug-in pour Visual Studio, qui permet d’écrire des tests d’une manière naturelle, puis de les exécuter avec votre test-runner favori.
  • 11. @crochefolle Tests UI • Tests codés de l’interface utilisateur – Simulent les interactions de l’utilisateur au clavier et à la souris – Code généré à partir d’un enregistreur – Peuvent être personnalisés / écrits manuellement
  • 12. @crochefolle Tests de performance/charge • Tests de performance de site web – Simulation d’un scénario d’utilisation d’une application web – Uniquement les interactions au niveau de la couche http – Peuvent tester des services web – Permettent de valider le temps de réponse / contenu des pages • Tests de charge – Souvent utilisés de pair avec les tests web – Permettent de simuler une charge utilisateur sur une application – Récoltent des indicateurs permettant l’analyse du comportement
  • 13. @crochefolle Schéma de principe Postes d’injection Scénarios de test Utilisateurs virtuels simulés Contrôleur du test Réseau Plate-forme testée application 1.0 données du test sonde Plan de test Mesures des sondes système Temps de réponses mesurés Analyse Recueil du besoin Rapport du test
  • 14. @crochefolle Tests de vie • Tests de vie de site web – Simulation d’un scénario d’utilisation d’une application web – Mesure de la qualité de service
  • 16. @crochefolle Tests de vulnérabilité • Tests d’intrusion – Un test d'intrusion (« penetration test » en anglais) est une méthode d'évaluation de la sécurité d'un système ou d'un réseau informatique. – La méthode consiste généralement à simuler une attaque d'un utilisateur mal intentionné, voire d'un logiciel malveillant. On analyse alors les risques potentiels dus à une mauvaise configuration d'un système, d'un défaut de programmation ou encore d'une vulnérabilité liée à la solution testée. Lors d'un test d'intrusion, nous nous retrouvons dans la position de l'attaquant potentiel. Le principal but de cette manœuvre est de trouver des vulnérabilités exploitables en vue de proposer un plan d'actions permettant d'améliorer la sécurité d'un système.
  • 19. @crochefolle Capture / Replay 19 Scénario de test Capture Script de test Instructions & JDD Outil de test Application à tester testeurs automaticiens
  • 20. @crochefolle Capture / Replay • Avantages : – Mise en place très rapide – Permet d’enregistrer beaucoup de scénarios rapidement • Inconvénients – Impossible à maintenir – Pour chaque scénario, on réenregistre tout : aucune factorisation. Le script est linéaire et déroule la séquence de test – Les données et les étapes sont mélangées : autant de scripts de test que de cas de test 20 Intéressant pour une démo, un POC jetable mais on ne peux l’envisager sérieusement comme une démarche durable
  • 21. @crochefolle Développement 21 Scénario de test Développe Script de test Outil de test Application à tester testeurs automaticiens Librairie de composants de test réutilisables Données de test Référentiel d’objets
  • 22. @crochefolle Développement • Référentiel d’objets : liste partagés par tous les scripts de test permettant de centraliser l’ensemble des objets qui seront utilisés lors des tests avec les moyens de les retrouver . Ex : une page, un champ ou un bouton dans une page La constitution de ce référentiel est essentielle, c’est qui permettra de maintenir les scripts de test synchrone avec l’évolution de l’application à tester. On favorisera donc la reconnaissance des objets par leurs ID plutôt que par leur position (qui peut être amené à évoluer). On évitera autant que faire ce peut d’utiliser les coordonnées à l’écran ou la reconnaissance d’image. • Composant de test : ensemble d’instructions de test réutilisable dans plusieurs scripts (équivalent des « Shared steps ») • Script de test : équivalent à un scénario de test, principalement composé d’appel à des composants de tests 22
  • 23. @crochefolle Développement • Avantages : – Composants de test réutilisables – Maintenance facilité : • Le découpage des composants permet de cibler plus facilement les modifications • Peu de modification à faire en cas de modification dans l’application à tester – Permet d’enrichir facilement le patrimoine de tests en multipliant les cas de test ou les scénarios de tests une fois que l’on dispose d’un référentiel d’objet et d’une librairie de composants de test conséquents. • Inconvénients – Mise en place plus longue : un investissement initial important est nécessaire pour mettre en place le framework de test 23 Seule solution viable sur le long terme
  • 24. @crochefolle Techniques d’automatisation On distingue principalement 3 techniques d’automatisation : 1. Data driven 2. Keyword driven 3. DSTL : Domain specific test language 24
  • 25. @crochefolle Data driven • Les données sont externalisées des scripts de test : – Csv – Xls – Xml – Base de donnée • Un script exécute de multiples tests basés sur les données en entrée – Maintenance faible sur le script – Facilité d’enrichir les cas de tests en ajoutant un nouveau jeu de donnée 25
  • 26. @crochefolle Data driven : exemple 26 Test de régression basé sur la donnée
  • 27. @crochefolle Keyword driven • Constitution d’un librairie de composants de test basé sur des mots-clefs : – S’authentifier – Mettre au panier – Ajouter une adresse • Les scripts de test sont constitués uniquement de l’appel à ces composants. • L’automaticien se concentre sur les moyens de test en enrichissant la librairie de composants. • Le testeur peut multiplier les scénarios de test en variant les enchaînements d’appel à ces composants sans avoir besoin de se préoccuper de la technique utilisée. 27
  • 28. @crochefolle Keyword driven : exemple 28 Test de régression Front
  • 29. @crochefolle Domain Specific Test Language (DSTL) • Version plus abstraite que la méthode « Keyword » • L’ensemble des mots-clefs est prédéfini dans un dictionnaire • Plus proche du langage courant mais dans un format imposé • Les testeurs peuvent le rédiger en respectant ce format quelle que soit l’utilisation future (manuelle ou automatisée) 29
  • 30. @crochefolle DSTL: exemple 30 TDD : La syntaxe Gherkin Gherkin est le Domain Specific Language de SpecFlow. Cette syntaxe, qui contient très peu de mots clés, se veut compréhensible de tous et est orientée spécification. Ce DSL permet de spécifier un comportement au travers de 3 mots clés: Given est l’instruction de définition d’un contexte When est l’instruction qui présente l’action a tester Then est l’instruction permettant de valider l’action effectuée.
  • 31. @crochefolle Composants techniques pour l’automatisation 31 Dans tous frameworks d’automatisation, il est nécessaire de mettre en place des composants techniques pour faciliter le développement : • Oracle • Bouchon • Techniques de comparaison • Reporting
  • 32. @crochefolle Oracle Un oracle est un mécanisme permettant de décider la réussite d’un scénario de test, c’est à dire de déterminer si les réponses obtenues à l’exécution du test correspondent bien à ce que requiert le scénario. Dans la plupart des frameworks de test, les oracles sont écrits sous forme d’assertion. 32
  • 33. @crochefolle Les assertions • Exemples d’assertions – Assert.AreEqual(…) – Assert.AreSame(…) – Assert.IsFalse(…) – CollectionAssert.AllItemsAreNotNull(…) – CollectionAssert.AreEqual(…) – CollectionAssert.Contains(…) – StringAssert.Contains(…) – StringAssert.DoesNotMatch() – …
  • 34. @crochefolle Assertions : résultats  Lors d’un test, 3 situations possibles Vert  REUSSITE – La condition vérifiée est exécutable et vraie, p.e. public void test1() { assertTrue(sqrt(4) == 2); } FAILURE – Condition vérifiée est exécutable mais fausse, p.e. public void test2() { assertEquals(3, sqrt(4), 0.001); } ERREUR – Une expression exécutée lors du test à lancée une erreur ou exception, p.e. • Division par zéro public void test3() { assertTrue(2 / 0 == 1); } Ça marche et ça fait ce qu’on veut. Ça ‘marche’ mais ça ne fait pas ce qu’on veut. Ça ne ‘marche’ même pas.
  • 35. @crochefolle Bouchon Un bouchon (stub en anglais) est un code qui n'effectue aucun traitement et retourne toujours le même résultat. Un bouchon sert d'alternative à un code qui n'est pas utilisable parce qu'il n'est pas encore codé, qu'il est en cours d'évolution ou non disponible dans l’environnement courant. Ex : bouchon de paiement Dans les frameworks de test, on utilise le concept de Mocking pour simuler le comportement de « l’extérieur » 35
  • 36. @crochefolle Exemples de frameworks • Liste non exhaustive de framework .NET – RhinoMock – TypeMock – Nmock – Moq • Moq (prononcer « Mock You ») – Est extrêmement simple à aborder – Est plus récent – Permet de simuler des classes et des interfaces
  • 37. @crochefolle Exemple d’utilisation • La classe DateManager implémente l’interface IDateManager public interface IDateManager { DateTime DateTimeNow(); } public class DateManager:IDateManager { public DateTime DateTimeNow () { return DateTime.Now; } }
  • 38. @crochefolle Exemple d’utilisation • Etape 1 : créer le conteneur moq • Etape 2 : décrire le comportement • Etape 3 : utiliser l’objet généré var mock = new Mock<IDateManager>(); mock.Setup(p => p.DateTimeNow()) .Returns(new DateTime(2000, 01, 01)); IDateManager testemoi = mock.Object; Assert.AreEqual(testemoi.DateTimeNow().Year, 2013);
  • 39. @crochefolle Techniques de comparaison 39 La comparaison du résultat obtenu au résultat attendu est un point crucial du test automatisé. Il est important de faire attention à ce point et de : • garder le plus simple possible, • bien documenter , • éviter la comparaison d’images Une technique de comparaison défaillante peut rendre inutilisable les résultats de tests et mettre en cause une politique d’automatisation. Attention aux faux-positifs
  • 40. @crochefolle 2 types de comparaison 40 Comparaison dynamique • Effectuée pendant l’exécution du test • Exécutée par l’outil de test (les assertions) • Peut donner un suivi en direct de l’avancée des tests • Les informations d’échecs sont enregistrés permettant l’analyse postérieure Comparaison post-exécution • Effectuée après l’exécution du test • Très utilisés pour la comparaison en masse de donnée dans des fichiers ou des bases • Peut être exécuté indépendamment de l’exécution du test • Peut avoir différents niveaux de comparaisons (en détaillé sur les points avec différences, en surface pour les autres)
  • 41. @crochefolle Comparaison post-exécution 41 • Très peu d’outils pour la comparaison en masse post-exécution. • Quelques-uns existent autour de la comparaison de fichiers sont disponibles : – Diff (Unix/Linux) – winmerge, windiff (Windows) • On utilise plutôt des outils de manipulations de texte : – Sed, awk, grep, Perl, Tcl, Python • Important de mettre en place de la reconnaissance de pattern plutôt que de la comparaison stricte
  • 42. @crochefolle Reporting 42 Dernier composant important d’un framework de test, le reporting est un point essentiel pour que l’automate de test soit utilisables par les testeurs : • Il doit être de plusieurs niveaux : – Vue globale des résultats – Vue détaillée pour les étapes en échec ou en erreur. • Intégré à l’outil de test mais consultable par tous sans avoir besoin d’installer l’outil en question. • Pouvoir être généré partiellement (notamment en cas d’erreurs et d’interruptions des tests)
  • 43. @crochefolle Statuts de test Les statuts de tests ne sont pas seulement : Pass/Fail Voire plus spécifique : • Partenaire • Problèmes d’environnement (réseau indisponible, dns, time-out) • Fichiers manquants • Test obsolète par rapport au dev A comparer à Pas de différence Des différences trouvées Résultat attendu Pass Fail Erreur attendue Expected Fail Unknown Pas d’information Unknown Unknown
  • 46. @crochefolle Mike Cohn Testing Pyramid En résumé Comment automatiser les tests ? 1. Les différents types de tests automatisés : le bon test au bon moment 2. Méthodes d’automatisation : Projet de développement 3. Techniques d’automatisation 1. Data driven : NRA Compta 2. Keyword driven : NRA Front 3. DSTL : TDD 4. Composants techniques pour un framework d’automatisation 1. Oracle : les assertions 2. Bouchon : mock 3. Techniques de comparaison : Attention aux faux-positifs 4. Reporting
  • 48. @crochefolle Pour aller plus loin http://www.dorothygraham.co.uk/ 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.