Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Post on 25-Dec-2014

1.561 views 2 download

description

Initiation aux tests fonctionnels - Philippe Kernevez - October 2009

Transcript of 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

pkernevez@octo.com

JUGL

08/10/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/

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

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

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

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

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

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 ?

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

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

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

Exemple !

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

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

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.

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

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

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)

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

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

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

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

•!…

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

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

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

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

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

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

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

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

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

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)

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

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 !

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

DBFit !

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

Fitnesse - Industrie !

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

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)

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

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

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

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

Conclusion !

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

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 !