Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

43
Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique Tests Fonctionnels Automatisés Philippe Kernévez [email protected] JUGL 08/10/2009

description

Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Transcript of Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Page 1: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Tests Fonctionnels Automatisés

Philippe Kernévez

[email protected]

JUGL

08/10/2009

Page 2: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 2

Licence !

Creative Commons

Contrat Paternité

Pas d'Utilisation Commerciale

Partage des Conditions Initiales à l'Identique

2.0 France

http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Page 3: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

AGENDA

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

!! Des tests ?

!! Tests fonctionnels automatisés

!! Pourquoi ?

!! Quand ?

!! Avec quoi ?

!! Pour quoi ?

!! Qui ?

!! Où ?

!! Démonstration

!! Effets de bord

Page 4: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Des tests ? !

4

Page 5: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Rôle incontournable des tests !

logiciel = complexe, invisible

tester = rendre le logiciel « visible »

rapport qualité/prix des tests

Page 6: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Typologie des Tests !

Tests de recette automatiques

Tests d’ensemble de fonctionnalités

UAT

Tests d’usabilité

Validation de cas d’utilisation

Tests unitaires

Tests d’intégration

Tests de performance

Test de disponibilité

Tests de sécurité

Fonctionnel

Technique

Contrôleur Faiseur

Page 7: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Pourquoi ? !

Tests fonctionnels automatisés

Page 8: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Réduire l’écart entre spécifications et tests !

100

100

100

+25

+50

+100

Pourrait-on détecter ces écarts plus tôt ?

Page 9: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Réduire l’écart entre spécifications et tests !

Elaborer les tests au plus tôt, avant le développement

Réaliser un logiciel qui passe ces tests

Page 10: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Réduire les redondances entre spécifications et tests !

Utiliser un format commun : Les Cas d’Utilisation

Fusionner Cas D’utilisation et Tests sur ces cas

Page 11: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Exemple !

Page 12: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

GreenPepper – Octopus MicroFinance !

http://wiki.octopusnetwork.org/display/OPUS/Late+repayment+-+flat+rate+-+based+on+overdue+principal

Page 13: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Quand ? !

Tests fonctionnels automatisés

Page 14: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Développement itératif !

Ecrire tous les tests puis tout le logiciel ?

Commencer plutôt par une partie du système.

Page 15: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Développement itératif !

Puis répeter le processus par incréments successifs

Page 16: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Chronologie !

Spécification Conception Dev Recette Homologation

Cycle en V :

Tests de recette

automatiques Tests unitaires

Tests de recette / Performances

UAT

Méthodes Agiles:

Itération 1 Itération 2 Itération 3 Itération 4 Itération 5

Tests de

recette

Tests

unitaires

Tests de

recette

Tests

unitaires

Tests de

recette

Tests unitaires et performance

Tests de

recette

Tests de

recette

UAT Tests unitaires et

performance

Page 17: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Evolution du temps consacré à la recette !!"#$"%&%'()!"%

$"*+#%

!","$$"%

!"#$"%&%'()!"%

$"*+#%

!","$$"%

!! Le temps de recette est

concentré en fin de projet

!! A une période critique (proche de la livraison)

!! Longtemps après le

développement de la

fonctionnalité

!! Le temps de recette est mieux

réparti sur la durée du projet

!! Minimisation du risque

!! Diminution du coût (erreurs

détectées plus tôt)

Page 18: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Avec quoi ? !

Tests fonctionnels automatisés

Page 19: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Limites des tests fonctionnels sur l’IHM!

Automatisation par capture puis re-jeu

!! tests sur l’IHM

!! difficile à automatiser

!! tests élaborés a posteriori

!! changements fréquents

!! maintenance coûteuse

!! édition de script fastidieuse

Page 20: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Framework for Integrated Testing !

Automatisation par construction

!! tests sur les API

!! indépendance à l’IHM

!! tests élaborés à l’avance

!! format tabulaire des tests

!! intégrant des descriptions

!! pas d’édition de scripts

Page 21: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Complémentarité des deux approches !

Tests sur IHM Tests de type FIT

•! Possibilité de valider l’IHM

•! Facilité de création

•! Ne peuvent pas être écrits « à priori »

•! Plus difficiles à maintenir

•! Ecriture « à priori » possible

•! Proche des cas d’utilisation

•!Ne permettent pas de valider l’IHM

•! Win Runner

•! …

•! Fit / Fitnesse / Slim

•! GreenPepper

•!…

Page 22: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Fonctionnement !

!! Fonctionnement

exécute

restitue

Valeurs saisies Valeurs à vérifier

Page 23: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Fonctionnement !

MOA

MOE

Page 24: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Schéma de fonctionnement !

FIT système

testé page de tests

code de

liaison

Page 25: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Repository de tests Fitnesse !

Site intranet

Composé de pages éditables

Intégrant texte et schémas

Organisé en suites de tests

Permet d’exécuter tous les tests

MOA

Page 26: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Pour quoi? !

Tests fonctionnels automatisés

Page 27: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Types d’utilisation !

!! Tester l’IHM (html) :

!! possible avec FIT, mais pas forcément une solution optimale

!! Tester un progiciel :

!! lorsque la couche métier est exposée via une API java

!! lorsqu’il y a des points d’entrée / sorties fichier

!! Tester des traitements batch

!! sur les fichiers en entrée et en sortie

!! Tester une chaîne d’applications (EAI)

!! aux points d’entrée de la chaîne ou via l’interface des outils EAI

Page 28: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Qui ? !

Tests fonctionnels automatisés

Page 29: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Conseils d’utilisation!

!! utiliser en collaboration (MOA/MOE)

!! travailler en mode itératif incrémental

!! concevoir les tests au plan métier puis

le code de liaison

!! faire vivre la base de tests

!! factoriser et normaliser les données

de tests

!! masquer les aspects non-fonctionnels

!! surveiller la taille du code de liaison

Page 30: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Où ? !

Tests fonctionnels automatisés

Page 31: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Exemple d’usine de développement !

Livraison

Développeur

Développeur

! Tests

unitaires

Build

Logiciel Tests de recette

auto.

Indicateurs qualité

Gestion de version

Code source

(logiciel + tests)

Page 32: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Mais aussi… !

Démonstration

Page 33: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Fitnesse : D’autres jeux !

Page 34: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

DBFit !

Page 35: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Fitnesse - Industrie !

Page 36: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Effets de bord…!

Page 37: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Méthodologie !

Automatiser les tests permet un développement plus agile :

!! supprime une partie des spécifications au profit des tests

!! réduit le délai de retour d’information sur le système

!! permet un développement itératif incrémental

!! permet d’évaluer correctement la stabilité d’un système

Les tests de recette permettent de piloter le projet :

!! clarifier les besoins exprimés via des exemples concret

!! piloter le projet à l’aide de jalons binaires

!! mesurer l’avancement et la vélocité de l’équipe (nombre de TR

passant par itération)

Page 38: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Pilotage du projet par les tests !

Avancement = TR passants / nb. TR total estimé

Productivité = TR passants / itération

Page 39: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Résultats constatés !

Une mesure plus fiable de la productivité

Le test devient l’unité de mesure (« Ce qui est testé n’est plus à faire ») Des coûts de maintenance maîtrisés

La durée d'homologation d’une application complète n’est plus que de quelques jours

Les anomalies de recette diminuent en nombre et en gravité (« Il n’y a plus de

bug! ») Une gestion de la qualité plus pragmatique

Les indicateurs (tests) permettent de mesurer la qualité intrinsèque du livrable La gestion de la qualité est entièrement intégrée au processus de

développement (refactoring au fil des itérations)

Une meilleure évaluation du risque Un feedback fréquent permet de suivre l’évolution

Un projet peut être arrêté après seulement quelques itérations Des équipes qui restent motivées tout le long du projet

La pression est lissée

Une industrialisation du processus qui est répétable et répété toutes les 3 semaines

Page 40: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Bienfaits colatéraux !

Tester

Documenter ce que fait votre

logiciel par des tests

Collaborer entre les équipes technique et

fonctionnelle en spécifiant par les

tests

Assurer la non-régression en constituant un

harnais de tests

Automatiser les tests pour éviter

les erreurs manuelles

Piloter le projet via une mesure

univoque

Page 41: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Conclusion !

Page 42: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Automatiser ses tests fonctionnels pour

!! Un logiciel plus fiable

!! Moins de stress

!! Une équipe, alignée

!! Un meilleur pilotage

!! Un gain de temps

« Passer des tests manuels aux spécifications exécutables… »

Page 43: Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Philippe KERNEVEZ pkernevez@octo,com

Avenue du Théatre, 7!

1010 Lausanne

Tél : +41 21 312 94 15 !