Test et Validation du Logiciel Test...

54
Test et Validation du Logiciel Test Fonctionnel Sami Taktak [email protected] Centre d’Étude et De Recherche en Informatique et Communications Conservatoire National des Arts et Métiers

Transcript of Test et Validation du Logiciel Test...

Page 1: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test et Validation du LogicielTest Fonctionnel

Sami [email protected]

Centre d’Étude et De Recherche en Informatique et CommunicationsConservatoire National des Arts et Métiers

Page 2: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test FonctionnelObjectif :

Générer des cas de tests en utilisant des spécifications(non le code)

Données pouvant être utilisées :Type des paramètres d’une méthodePré-condition sur une méthodeEnsemble de commandes sur un systèmeCas d’utilisation

On ne peut pas tout explorer : il faut choisir de « bonnes »valeurs

Génération aléatoire (error guessing)Partitionnement en classes d’équivalenceTest aux limitesGraphe causes – effets / tables de décisionDiagramme états / transitions

S. Taktak Test et Validation du Logiciel Test Fonctionnel 2/54

Page 3: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Réduire la Combinatoire

Assez fréquemment :

Petit nombre de paramètresParamètres définis sur de petits ensembles dénombrablesÀ priori possible d’énumérer tous les cas possibles :nombre de combinaisons égales au produit des cardinauxdes ensembles

Mais énumérer tous les cas possibles a un coût et la réalisationd’un test exhaustif peut prendre beaucoup de temps

S. Taktak Test et Validation du Logiciel Test Fonctionnel 3/54

Page 4: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

All Singles, All Pairs

⇒ essayer de réduire la combinatoire en gardant une bonnequalité de couverture

2 approches :

jeux de tests all singles : jeux de tests utilisant au moinsune fois chaque valeur de chaque paramètrejeux de tests all pairs : jeux de tests utilisant au moinsune fois chaque valeur de chaque pairs (dit aussi pairwise)

S. Taktak Test et Validation du Logiciel Test Fonctionnel 4/54

Page 5: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

All Singles

Jeux de tests couvrant au moins chaque possibilité pourchaque paramètreNombre de jeux de tests : cardinal du plus grandensemble de valeursLes valeurs des autres ensembles sont énumérées dans lesjeux de tests construits

Permet de réduire grandement le nombre de jeux de testsGarantie une certaine qualité : toute valeur d’unparamètre est testée au moins une foisOubli de réalisation ou grosse erreur seront détectés

Mais ne détecte pas efficacement les erreurs liées à unecombinaison de paramètres

S. Taktak Test et Validation du Logiciel Test Fonctionnel 5/54

Page 6: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple All Singles

On veut tester un logiciel qui génère des scripts pour valider lecomportement de serveurs web.

Ce logiciel prend 4 paramètres en entrée :

Le type de système d’exploitation (OS) du client :Ubuntu, OpenSuse, Windows, Mac OS X, Chrome OSLe type de navigateur web : Firefox, Opera, ChromeLe type de données téléchargées : jpeg, avi, ogg, mp3Le fait d’utiliser une connexion sécurisée ou non

Test exhaustif : 5× 3× 4× 2 = 120 tests différents

S. Taktak Test et Validation du Logiciel Test Fonctionnel 6/54

Page 7: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple All Singles

Jeux de tests All Singles : 5 tests seulement (cardinal du plusgrand ensemble : 5 OS)

OS Navigateur Données Sécurisé( Ubuntu, Firefox, jpeg, oui )( OpenSuse, Opera, avi, non )( Windows, Chrome, ogg, oui )( Mac OS X, Firefox, mp3, non )( Chrome OS, Chrome, jpeg, oui )

Chaque valeur de chaque paramètre est testée au moins unefois

S. Taktak Test et Validation du Logiciel Test Fonctionnel 7/54

Page 8: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

All Pairs

Objectif :Tester les erreurs dues à une combinaison de 2 paramètres

Nécessite :Construire des jeux de tests avec toutes les pairespossibles

Complexité :produit du cardinal des 2 plus grands ensembles de valeurs

S. Taktak Test et Validation du Logiciel Test Fonctionnel 8/54

Page 9: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Méthodologie

Ordonner en ordre décroissant les ensembles de valeurs enfonction de leur cardinalPrendre les 2 ensembles de valeurs E1 et E2 ayant les 2plus grands cardinaux notés V1 et V2

Construire toutes les paires à valeurs dans E1 et E2(V1 × V2 paires)Pour les autres ensembles de valeurs, alterner lesdifférentes valeurs afin de construire des paires avec lesautres ensembles de valeursToutes les paires possibles sont ainsi couvertes par unjeux de V1 × V2 tests

⇒ Rajouter un paramètre avec un ensemble de valeurs pluspetit que le cardinal des 2 plus grands ensembles de valeurs nerajoute pas de jeux de test

S. Taktak Test et Validation du Logiciel Test Fonctionnel 9/54

Page 10: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple All Pairs

OS Navigateur Données Sécurisé( Ubuntu, Firefox, jpeg, oui )( Ubuntu, Opera, avi, non )( Ubuntu, Chrome, ogg, oui )( Ubuntu, Firefox, mp3, non )( Chrome OS, Opera, jpeg, non )( Chrome OS, Chrome, avi, oui )( Chrome OS, Firefox, ogg, non )( Chrome OS, Opera, mp3, oui )( ... , ... , ... , ... )

S. Taktak Test et Validation du Logiciel Test Fonctionnel 10/54

Page 11: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

All Singles, All Pairs

Très efficaceSimple à mettre en œuvrePeut servir conjointement à d’autres méthodes

Mais :Limité aux petits ensembles de valeursSouvent les ensembles de valeurs ont 2n valeurs(n : nombre de bits pour coder la variable)

S. Taktak Test et Validation du Logiciel Test Fonctionnel 11/54

Page 12: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Tests Aléatoires

Génération de tests de manière probabiliste

Fonction de distribution souvent uniforme sur lesensembles de valeurs des paramètres d’entrée

Fiabilité du programme mesurée en fonction des résultatsincorrects

Mesure dépendant de la fonction de distribution aléatoireutilisée pour la génération des tests

S. Taktak Test et Validation du Logiciel Test Fonctionnel 12/54

Page 13: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Tests Aléatoires

Avantages :Jeux de tests objectifs

Jeu de tests des méthodes déterministes fourni par lestesteurs⇒ influencé par la perception du système par le testeur

Simplification de la génération des tests : générationautomatiqueGénération automatique complète si analyse automatiquedes résultats possibles

⇒ impossible pour la plus par des application réelles

S. Taktak Test et Validation du Logiciel Test Fonctionnel 13/54

Page 14: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Tests Aléatoires

Méthodes d’analyse automatiques des résultats :

Test dos à dos :Deux variantes (ou plus) d’un système sont exécutéesavec les mêmes entrées et les sorties sont comparéesSolution très coûteuseUtilisé seulement pour les applications critiques

Inversion de la fonction testéeMais la plupart des fonctions ne sont pas inversibles(fonctions non injectives)

S. Taktak Test et Validation du Logiciel Test Fonctionnel 14/54

Page 15: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Tests Aléatoires

Principal inconvénient :Impossible de garantir le test de tous les comportementsdu système

Exemple :If (a = 0) and (x = 4145)then x = x / a ...

Très peu probable qu’un jeu de tests aléatoire effectue ladivision par zéro

S. Taktak Test et Validation du Logiciel Test Fonctionnel 15/54

Page 16: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Tests Aléatoires

Très simple à mettre en œuvre surtout si l’analyse desrésultats est automatiqueTrès efficace lors des premières phases de testsUn grand nombre de défauts peuvent être détectés avecun minimum d’interventionsPeut être complémentaire à d’autres méthodes de tests

Mais :Très coûteux d’augmenter le taux de couverture à partird’une certaine limite

S. Taktak Test et Validation du Logiciel Test Fonctionnel 16/54

Page 17: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Analyse Partitionnelle

Impossible en général d’énumérer tous les cas possibles :Produit cartésien des domaines de définition des entrées duprogramme

Explosion combinatoire ! !

Exemple : l’addition de 2 entiers de 32 bits génère 264 vecteurs detests !

Solution possible : génération de tests aléatoiresMais se pose le problème de couverture :

Tous les comportements sont-ils couverts ?

S. Taktak Test et Validation du Logiciel Test Fonctionnel 17/54

Page 18: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Principe

Autre solution : Optimiser les jeux de testsPartitionner le produit cartésien en classes d’équivalence :

Analyse de la spécification du logicielIdentification des groupes de valeurs pour lesquelles lelogiciel se comporte identiquement

⇒ Identification des classes d’équivalence

1 classe d’équivalencem

1 comportement du programme

S. Taktak Test et Validation du Logiciel Test Fonctionnel 18/54

Page 19: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple de Partitionnement

Exemple :Fonction prenant en entrée un numéro de département (enmétropole)

La donnée doit être comprise entre 1 et 95

Validité des Entrées Classe d’équivalence Valeurs de Test

Valides [ 1, 95 ] 33

Invalides [minInt, 1 [ -40

Invalides ] 95, maxInt ] 10000

S. Taktak Test et Validation du Logiciel Test Fonctionnel 19/54

Page 20: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Classes d’Équivalence

Definition (Classe d’équivalence)Dans le cadre des tests fonctionnels, une classe d’équivalenceest un ensemble de valeurs pour lesquelles on ne peutdestinguer le comportement du logiciel

Pour toute valeur choisie dans une même classe d’équivalence,le logiciel aura toujours le même comportementCe comportement peut être, soit correct, soit incorrect

⇒ une seule valeur à tester par classe d’équivalence

S. Taktak Test et Validation du Logiciel Test Fonctionnel 20/54

Page 21: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Stratégie de Test

Identifier les classes d’équivalence valides et invalidesd’après les spécificationsDonnées en entrées indépendantes : partitionnement desdomaines de valeurs en classes d’équivalenceDonnées en entrées liées entre elles : certaines valeurspourront appartenir à plusieurs classes d’équivalences⇒ partitionnement non exact

Génération de tests pour chacune des classes d’équivalence :Retour au problème précédantGénération de tests avec la stratégie all pairsGénération de tests aléatoires

S. Taktak Test et Validation du Logiciel Test Fonctionnel 21/54

Page 22: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Stratégie de Test

Étape à suivre pour la construction de classe d’équivalence :

Extraire de la spécification :Le domaine des valeurs d’entréesL’ensemble des fonctions du système

Utiliser ces données pour :Déterminer les entrées des différentes fonctionsDécouper le domaine des entrées en classes d’équivalence

Pour chaque classe d’équivalence :Sélectionner un élément de la classeDéterminer les valeurs de sortie pour l’élémentsélectionné

S. Taktak Test et Validation du Logiciel Test Fonctionnel 22/54

Page 23: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Stratégie de Test

Détermination des valeurs de sortie pas toujours possible :spécification très complexecertains éléments nécessaires au calcul des sorties nonaccessibles

⇒ tests de propriétés sur les sorties

Suivant la forme de la spécification, la détermination desclasses d’équivalence est plus ou moins facile

S. Taktak Test et Validation du Logiciel Test Fonctionnel 23/54

Page 24: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Classes d’Équivalence

Règles de Construction des classes d’équivalence :1 Condition d’entrée ou sortie définissant un intervalle de

valeurs1 classe d’équivalence valide pour les valeurs dansl’intervalle)1 classe d’équivalence invalide pour les valeurs inférieurs1 classe d’équivalence invalide pour les valeurs supérieurs

2 Condition d’entrée ou de sortie définissant un tuple de Nvaleurs

3 Condition d’entrée ou de sortie définissant un ensemblede valeurs

4 Condition d’entrée ou de sortie définissant une contraintedevant être vérifiée

5 Classe d’équivalence trop complexe ou les éléments d’uneclasse d’équivalence semble être traités différemment

S. Taktak Test et Validation du Logiciel Test Fonctionnel 24/54

Page 25: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Classes d’Équivalence

Règles de Construction des classes d’équivalence :1 Condition d’entrée ou sortie définissant un intervalle de

valeurs2 Condition d’entrée ou de sortie définissant un tuple de N

valeurs1 classe d’équivalence valide représentant les tuples de Nvaleurs2 classes d’équivalences invalides : une représentant lestuples de moins de N valeurs, une représentant les tuplesde plus de N valeurs

3 Condition d’entrée ou de sortie définissant un ensemblede valeurs

4 Condition d’entrée ou de sortie définissant une contraintedevant être vérifiée

5 Classe d’équivalence trop complexe ou les éléments d’uneclasse d’équivalence semble être traités différemment

S. Taktak Test et Validation du Logiciel Test Fonctionnel 25/54

Page 26: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Classes d’Équivalence

Règles de Construction des classes d’équivalence :1 Condition d’entrée ou sortie définissant un intervalle de

valeurs2 Condition d’entrée ou de sortie définissant un tuple de N

valeurs3 Condition d’entrée ou de sortie définissant un ensemble

de valeurs1 classe d’équivalence valide représentant les valeursdans l’ensemble prédéfini ou bien une classed’équivalence par valeur si le programme semble lesdifférencier1 classe d’équivalence invalide représentant les valeurshors ensemble

4 Condition d’entrée ou de sortie définissant une contraintedevant être vérifiée

5 Classe d’équivalence trop complexe ou les éléments d’uneclasse d’équivalence semble être traités différemment

S. Taktak Test et Validation du Logiciel Test Fonctionnel 26/54

Page 27: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Classes d’Équivalence

Règles de Construction des classes d’équivalence :1 Condition d’entrée ou sortie définissant un intervalle de

valeurs2 Condition d’entrée ou de sortie définissant un tuple de N

valeurs3 Condition d’entrée ou de sortie définissant un ensemble

de valeurs4 Condition d’entrée ou de sortie définissant une contrainte

devant être vérifiée1 classe d’équivalence valide (la contrainte est vérifiée)1 classe d’équivalence invalide (la contrainte n’est pasvérifiée)

5 Classe d’équivalence trop complexe ou les éléments d’uneclasse d’équivalence semble être traités différemment

S. Taktak Test et Validation du Logiciel Test Fonctionnel 27/54

Page 28: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Classes d’Équivalence

Règles de Construction des classes d’équivalence :1 Condition d’entrée ou sortie définissant un intervalle de

valeurs2 Condition d’entrée ou de sortie définissant un tuple de N

valeurs3 Condition d’entrée ou de sortie définissant un ensemble

de valeurs4 Condition d’entrée ou de sortie définissant une contrainte

devant être vérifiée5 Classe d’équivalence trop complexe ou les éléments d’une

classe d’équivalence semble être traités différemmentDécomposer cette classe d’équivalence en plusieursclasses d’équivalence moins complexes

S. Taktak Test et Validation du Logiciel Test Fonctionnel 28/54

Page 29: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple de Recherche de Classes d’Équivalence

Quelles données de test pour une méthode Lendemainqui calcule le lendemain d’une date (jour, mois,année) passée en paramètre ?

Données : mois, jour, an représentant une date1 ≤ mois ≤ 121 ≤ jour ≤ 311000 ≤ an ≤ 3000

Résultat : date du jour suivant la date donnéeDoit considérer les années bissextiles : Année bissextile sidivisible par 4 et pas siècle sauf si multiple de 400

S. Taktak Test et Validation du Logiciel Test Fonctionnel 29/54

Page 30: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple de Recherche de Classes d’Équivalence

Prise en compte des contraintes d’intervalle

CE Valides CE Invalides

1 ≤ mois ≤ 12 ∧1 ≤ jour ≤ 31 ∧1000 ≤ an ≤ 3000

jour < 1

jour > 31

mois < 1

mois > 12

an > 3000

an < 1000

S. Taktak Test et Validation du Logiciel Test Fonctionnel 30/54

Page 31: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple de Recherche de Classes d’Équivalence

Prise en compte des contraintes liant les données d’entrées(nombre jour par mois et année bissextile) : peut être vucomme une décomposition de la CE valide en plus petites CE

CE Valides CE Invalides

mois ∈ {2, 4, 6, 9, 11} ⇒1 ≤ jour ≤ 30

mois ∈ {2, 4, 6, 9, 11} ∧(jour ≤ 1 ∨ jour > 30)

mois = 2 ∧ (année nonbissextile) ⇒ (jour ≤ 28)

mois = 2 ∧ (année nonbissextile) ∧ (jour > 28)

mois = 2 ∧ (année bissextile)⇒ (jour ≤ 29)

mois = 2 ∧ (année bissextile)∧ (jour > 29)

S. Taktak Test et Validation du Logiciel Test Fonctionnel 31/54

Page 32: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple : Génération de jeux de tests

Couverture des CE valides(jour = 15, mois = 2, année = 2000)(jour = 29, mois = 2, année = 2004)

Couverture des CE invalides(jour = -10, mois = 2, année = 2000)(jour = 40, mois = 2, année = 2000)(jour = 20, mois = -2, année = 2000)(jour = 15, mois = 15, année = 2000)À compléter. . .

S. Taktak Test et Validation du Logiciel Test Fonctionnel 32/54

Page 33: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Conclusion

Approche systématique qui donne une bonne couvertureStratégie permettant de rendre praticable les méthodes detest de logiciels réelsNécessite un effort d’abstraction et d’analyse desspécificationsPermet de détecter des incohérences au niveau desspécifications

Mais :La spécification ne définit pas toujours les résultatsattendus pour les cas de tests invalidesLa prise en compte de toutes les CE peut amener àgénérer un très grand nombre de cas de test

S. Taktak Test et Validation du Logiciel Test Fonctionnel 33/54

Page 34: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test aux Limites

Test aux limites ⇒ Vérifier le comportement du logiciel auxfrontières de ses domaines de fonctionnement

La plupart des erreurs sont dues à une mauvaise gestiondes valeurs aux bornes des domaines des variables

S’appuie sur le partitionnement des domaines des valeursen entrée

Utilisé en complément du test par partitionnement

S. Taktak Test et Validation du Logiciel Test Fonctionnel 34/54

Page 35: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test aux Limites

Dans le cas du test fonctionnel les frontières se définissentgrâce aux domaines obtenus lors du calcul des classesd’équivalence :

Bornes des intervalles pour les valeurs numériques

Valeurs des types énumérés

Collections d’éléments :Tableau, liste : taille (vide, plein,. . . )

Valeurs alphanumériques : choix de valeurs prochessyntaxiquement

S. Taktak Test et Validation du Logiciel Test Fonctionnel 35/54

Page 36: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test aux Limites

Utilisation de la technique du test aux limites :

1 Trouver les classes d’équivalence2 Pour chaque classe d’équivalence :

Générer une valeur médianeGénérer une ou plusieurs valeurs aux bornes

Exemple : Soit une fonction qui attend en entrée un numéro de départe-ment (en métropole), la donnée d’entrée doit être comprise entre 1 et 95 :

Validité des Entrées Classe d’équivalence Valeurs de Test

Valides [ 1, 95 ] 1, 50, 95

Invalides [minInt, 1 [ -10000, 0

Invalides ] 95, maxInt ] 96, 10000

S. Taktak Test et Validation du Logiciel Test Fonctionnel 36/54

Page 37: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test aux Limites

Exemple avec valeurs non numériques :Fonction prenant en paramètre la chaîne de caractère "oui"ou la chaîne de caractère "non"

Validité Classe d’équivalence Valeurs de Test

Valide {"oui"} "oui"

Valide {"non"} "non"

Invalide Autres chaînes "abcd", "", "ouii","nom"

S. Taktak Test et Validation du Logiciel Test Fonctionnel 37/54

Page 38: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Apport du Test aux Limites

Types d’erreurs pour lesquelles le test aux limites est trèsefficace :

Mauvais opérateur de relation : X > 2 au lieu de X ≥ 2

Erreur de borne : X + 2 = y au lieu de X + 3 = y

Échange de paramètres : 2x + 3y > 4 au lieu de3x + 2y > 4

Ajout d’un prédicat qui ferme un ensemble : (2x > 4) et(3x < 6)

Frontière manquante : (x + y > 0) ou (x + y <= 0)

Boucles mal réglées, mauvaise gestion des indices detableau

S. Taktak Test et Validation du Logiciel Test Fonctionnel 38/54

Page 39: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test aux Limites

Le test aux limites améliore le test par partitionnementmais ne le remplace pas

Il est parfois complexe de construire les frontières

La complexité de la construction des frontières peut êtreréduite par différents procédés d’approximation

Une automatisation poussée peut être atteinte aussi biendans le cadre de tests structurels que de tests fonctionnels

S. Taktak Test et Validation du Logiciel Test Fonctionnel 39/54

Page 40: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Tester avec des Tables de DécisionsLe comportement du logiciel dépend de conditionsd’entrée : chaque action dépend (normalement) deconditions d’entréeTable de décisions ⇒ représenter de façon concise lesactions effectuées en fonction des conditions d’entrée1 Cas de test par colonne (variant) conforme auxconditions / valeurs définies par le variants

C1 VC1

Ci VCi

Actionn ×

S. Taktak Test et Validation du Logiciel Test Fonctionnel 40/54

Page 41: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple de Construction d’une Table de Décision

Soient 3 conditions / variables C1, C2, C3 telles que :C1 peut prendre les valeurs 0,1,2C2 peut prendre les valeurs 0,1C3 peut prendre les valeurs 0,1,2,3

Soient 4 actions A1, A2, A3, A4 à effectuer en fonctiondes combinaisons des valeurs des 3 conditionsLe nombre de ligne de la table sera 7 : 3 conditions + 4actionsLe nombre de colonnes sera 3× 2× 4 (3 valeurs pour C1,2 valeurs pour C2 et 4 valeurs pour C4)

S. Taktak Test et Validation du Logiciel Test Fonctionnel 41/54

Page 42: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Exemple de Construction d’une Table de Décision

Exemple de Table de décision :

C1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2C2 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1C3 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3A1 × × × × × × × × ×A2 × × × × ×A3 × × × × ×A4 × × × × ×

S. Taktak Test et Validation du Logiciel Test Fonctionnel 42/54

Page 43: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Tables de Décisions

Une table de décision peut être construite de différentesmanièresVoici une façon de procéder :

Identifier les variables et les conditions de décisionsIdentifier les actions résultantesIdentifier quelle action doit être produite en réponse àune combinaison de décision particulièreVérifier la consistance et la complétude

3+ 4 peuvent être remplacés par « Énumérer toutes lescombinaisons de décisions (possibles) et associer l’actionrésultante »

S. Taktak Test et Validation du Logiciel Test Fonctionnel 43/54

Page 44: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Tables de Décisions

Simplification des table de décisions lorsqu’une conditionn’influence pas le résultat pour certains variants : on lesregroupe et on donne la valeur « Don’t Care » à cettecondition au niveau de ce nouveau variant

C1 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2C2 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1C3 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3A1 × × × × × × × × ×A2 × × × × ×A3 × × × × ×A4 × × × × ×

S. Taktak Test et Validation du Logiciel Test Fonctionnel 44/54

Page 45: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Tables de Décisions

Simplification des table de décisions lorsqu’une conditionn’influence pas le résultat pour certains variants : on lesregroupe et on donne la valeur « Don’t Care » à cettecondition au niveau de ce nouveau variant

C1 0 1 2 0 1 2 × 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2C2 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1C3 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3A1 × × × × × × ×A2 × × × × ×A3 × × × × ×A4 × × × × ×

S. Taktak Test et Validation du Logiciel Test Fonctionnel 45/54

Page 46: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Tables de Décisions : Conclusion

Construction systématique

Exhaustivité des cas

Permet de maîtriser efficacement la combinatoire

Déduction aisée des cas de tests

Peut également se faire avec des graphes de décisions

Peut être simplifié par l’utilisation de BDD (BinaryDecision Diagram)

S. Taktak Test et Validation du Logiciel Test Fonctionnel 46/54

Page 47: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Diagrammes d’États / Transitions

Le comportement de certains systèmes dépendent del’ordre dans lequel les paramètres lui sont passés

L’histoire de son exécution influe sur son comportement

Ce sont des systèmes à états ou encore des machines àétats

Comportement différent des systèmes vus jusqu’à présent :

Le comportement ne dépendait pas des valeursprécédentes des paramètresToute exécution de ces systèmes avec les mêmes valeursde paramètres produit le même comportement

S. Taktak Test et Validation du Logiciel Test Fonctionnel 47/54

Page 48: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Diagrammes d’États / Transitions

Pour un système à état :le système réagira en fonction de l’historique des valeursdes paramètres qui lui ont était passéSon comportement dépendra des valeurs des paramètresmais aussi de son état interneLe passage d’un état interne à un autre est appelétransition

Mais :Dans le cas des tests fonctionnels l’état interne dusystème n’est souvent pas observable

S. Taktak Test et Validation du Logiciel Test Fonctionnel 48/54

Page 49: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Diagrammes d’États / Transitions

Description de ces systèmes sous forme d’automates oudiagrammes d’états / transitions :

Représentation graphiqueGraphe dont les noeuds sont les états du systèmes et lesarcs, les transitionsUn arc est étiqueté avec une conditions de franchissementde la transition associée (passage d’un état à un autre)

Exemples :Protocole réseau TCPServeur webDistributeur de billets

S. Taktak Test et Validation du Logiciel Test Fonctionnel 49/54

Page 50: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Diagrammes d’États / Transitions

Clôture d’une connection TCP

ÉtablieAttenteClose

AttenteFin

En cours

Temporisation

Fermée

AttenteAck

AttenteFin

Ack

Close/Fin

Fin/Ack

AckAck

Close/Fin

Fin/Ack

Fin/Ack

S. Taktak Test et Validation du Logiciel Test Fonctionnel 50/54

Page 51: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction du Diagramme d’États

Cas simple : le diagramme d’état fait parti de laspécificationSinon, construire le diagramme à partir de la spécification

⇒ Revient à réaliser une abstraction des comportements dusystème

L’abstraction doit être suffisante pour que le modèle nesoit pas trop complexeL’abstraction doit être assez précise pour prendre encompte tous les comportements intéressants pour le test

S. Taktak Test et Validation du Logiciel Test Fonctionnel 51/54

Page 52: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction du Diagramme d’États

Étapes de construction du diagramme d’états :

Définir les états observables du système et identifier lesmoyens d’observations de l’état (variable, appelle defonction, réaction du système, . . . )Définir l’environnement externe accessible (variableexternes)Définir les variables internes qui interviennent dans lecomportementIdentifier les différents évènements auxquels le composantva réagirDéfinir pour chaque état et chaque évènement quelleaction effectue le système (rien, changement d’état)

S. Taktak Test et Validation du Logiciel Test Fonctionnel 52/54

Page 53: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Construction des Séquences de Test

Choix des objectifs en terme de parcours du diagrammed’États :

Atteindre au moins une fois chaque étatExercer au moins une fois chaque transitionExercer toutes les séquences d’une longueur donnéeExercer toutes les séquences permettant d’atteindre unétat donnéÉvaluer les réactions vis-à-vis de tous les évènementsdans un état donné

Choix des séquences de tests permettant de réaliser cesobjectifs :

Trouver les séquences de tests appropriéesTrouver les valeurs qui permettront d’exercer la séquence

S. Taktak Test et Validation du Logiciel Test Fonctionnel 53/54

Page 54: Test et Validation du Logiciel Test Fonctionnelcedric.cnam.fr/~taktaks/GLG101/testfonctionnel.pdf · Test et Validation du Logiciel Test Fonctionnel SamiTaktak sami.taktak@cnam.fr

Test fonctionnel : Conclusion

Peu formalisé et donc peu automatisé

Utilisation des tables de décisions pour des cas spécifiques

Tests aléatoires efficaces pour les premières phases de test

Le test partitionnel est la méthode la plus répandue

Utilisation conjointe des tests nominaux, des tests auxlimites et des tests de robustesse

S. Taktak Test et Validation du Logiciel Test Fonctionnel 54/54