Vous êtes sur la page 1sur 22

Cours

Test Logiciel
Implémentation et Test
Logiciel
Malek LTAIEF

ltaief.maleek@gmail.com

2022-2023
Rappel

• L’objectif principal du test consiste à :

• Mieux évaluer l’application sous test,

• Prouver la conformité de l’application avec ses spécifications,

• Permet l’augmentation de la confiance du programme sous test et enfin détecter


les défaillances s’ils existent.

Test logiciel 2023 - Malek Ltaief 2


Données du test

• La sélection des données du test ne peut se faire de manière efficace que


lorsqu’elle est guidée par un objectif qu'on appelle généralement critère de
test.

• Le but est de sélectionner suffisamment de données de test (DT) pour couvrir


au mieux ce critère

Test logiciel 2023 - Malek Ltaief 3


Classification des Tests

• Il existe différentes façons pour classer les tests informatiques. Dans cette
étude, on va les classer selon le niveau d'accessibilité où on trouve deux
grandes familles complémentaires :
• le test structurel (boîte blanche)

• le test fonctionnel (boîte noire).

Test logiciel 2023 - Malek Ltaief 4


Test Fonctionnel

• Le test fonctionnel vise à examiner le comportement fonctionnel de


l’application et sa conformité avec sa spécification.

• Il prend en compte que les spécifications de l’objet à tester sans tenir leur
implémentation (boîte noire).

• Seul le comportement extérieur est testé : les détails d'implémentation des


composants ne sont pas connus

• Dans son fonctionnement, ce test se base sur la détermination des classes


d’équivalences, sur les tests aux limites, sur les graphes cause-effet.

Test logiciel 2023 - Malek Ltaief 5


Test Fonctionnel
1: L’analyse partitionnelle

• La méthode de l’analyse partitionnelle fondée sur les spécifications de l’application


sous test et d’établir des classes de données équivalentes (partition),

• les classes d’équivalences doivent recouvrir tout l’espace de donnée et elles doivent
être mutuellement exclusives.

• La sélection des DT se décompose en trois phases:

• calculer pour chaque donnée d’entrée les classes d’équivalences associées,

• choisir un représentant de chaque classe

• composer par produit cartésien sur l'ensemble des données d'entrée pour établir les DT.

Test logiciel 2023 - Malek Ltaief 6


Test Fonctionnel
1: L’analyse partitionnelle
Règles de partitionnement des domaines

• Si la donnée appartient à un intervalle, construire :

• une classe pour les valeurs inférieures,

• une classe pour les valeurs supérieures,

• n classes valides.

• Si la donnée est un ensemble de valeurs, construire :

• une classe avec l'ensemble vide,

• une classe avec trop de valeurs,

• - n classes valides.
Test logiciel 2023 - Malek Ltaief 7
Test Fonctionnel
1: L’analyse partitionnelle
• Si la donnée est un ensemble de valeurs traitées différemment, construire :

• une classe valide pour chaque valeur validée,

• une classe invalide pour les autres.

• Si la donnée est une obligation ou une contrainte (forme, sens, syntaxe), construire :

• une classe avec la contrainte respectée,

• une classe avec la contrainte non respectée.

Test logiciel 2023 - Malek Ltaief 8


Test Fonctionnel
1: L’analyse partitionnelle

• Exemple illustratif ( exemple du triangle )

• Soit le programme suivant :

Un programme lit trois nombres réels qui correspondent à la longueur des côtés d’un triangle.

• Si ces trois nombres ne correspondent pas à un triangle, imprimer le message approprié.

• Dans le cas d’un triangle, le programme examine s’il s’agit d ’un triangle isocèle, équilatéral ou scalène et
renvoie la réponse correspondante.

Test logiciel 2023 - Malek Ltaief 9


Test Fonctionnel
1: L’analyse partitionnelle

• Entrée: 3 entiers > 0 (longueurs de cotés)

• Sortie: type de triangle déterminé par les 3 entiers (équilatéral, isocèle, scalène, autre)

(a,b,c) → Triangle ? → Type de triangle ?

Hypothèse : On peut identifier la classe de D par sa valeur P(D)

• D1= {(a, b, c): abc est équilatéral}

• D2= {(a, b, c): abc est isocèle}

• D3= {(a, b, c): abc est scalène}

• D4= {(a, b, c): abc n'est pas un triangle}

Test logiciel 2023 - Malek Ltaief 10


Test Fonctionnel
1: L’analyse partitionnelle
Solution plus raffinée : Donc DT sélectionnées :

• D1= {(a, b, c): est équilatéral} (3, 3, 3)

• D21= {(a, b, c): est isocèle et a=b, a≠c} (2, 2, 3)

• D22 = {(a, b, c): est isocèle et a=c, b≠c} (2, 3, 2)

• D23 = {(a, b, c): est isocèle et b=c, a≠b} (3, 2, 2)

• D3 = {(a, b, c): est scalène, c’est à dire a≠b≠c}} (3, 4, 5)

• D41 = {(a, b, c): pas un triangle et a >= b+c} (6, 3, 3)

• D42 = {(a, b, c): pas un triangle et b >= a+c} (3, 6, 3)

• D43 = {(a, b, c): pas un triangle et c >= a+b} (3, 3, 6)


Test logiciel 2023 - Malek Ltaief 11
Test Fonctionnel
2: Test aux limites

D’une manière générale, les tests aux limites consistent à identifier les domaines
de définition de chaque variable d’entrée, puis sélectionner les valeurs aux
bornes de chaque domaine. Ces valeurs sont par la suite combinées pour
produire les jeux d’essais.

Test logiciel 2023 - Malek Ltaief 12


Test Fonctionnel
2: Test aux limites

Règles générales de sélection des DT :

• Si la variable est comprise dans un intervalle de valeurs, on choisit la plus petite


variation possible delta.

• On génère par la suite 6 valeurs dont deux parmi eux correspondent aux 2 limites et les
quatre valeurs restantes correspondent aux valeurs limites (±) delta.

• Si les valeurs sont des entiers, delta prend le chiffre 1.

• Si la variable appartient à un ensemble ordonné des valeurs on choisit le premier,


le second, l’avant dernier et le dernier élément.

Test logiciel 2023 - Malek Ltaief 13


Test Fonctionnel
2: Test aux limites

• Le test aux limites est considéré comme l’une des méthodes fonctionnelles les plus
efficaces.

• Il produit à la fois des cas de test nominaux (dans l’intervalle) et de robustesse (hors
intervalle).

• La pratique montre que la plupart des erreurs des applications sont détectées aux tests des
valeurs limites des données d’entrées.

Test logiciel 2023 - Malek Ltaief 14


Test Fonctionnel
2: Test aux limites

Exemples :

• La variable est comprise dans un intervalle de valeurs

• n ∈3 .. 15

⇒ v1 = 3, v2 = 15, v3 = 2, v4 = 4, v5 = 14, v6 = 16

• La variable appartient à un ensemble ordonné des valeurs

• n ∈{-7, 2, 3, 157, 200}

⇒v1 = -7, v2 = 2, v3 = 157, v4 = 200

Test logiciel 2023 - Malek Ltaief 15


Test Structurel

• Le test structurel s'appuie sur l'analyse du code source de l’application (boîte


blanche) pour établir les tests en fonction des critères de couverture.

• Il se base sur le graphe de flot de contrôle (toutes les instructions, toutes les
branches, tous les chemins, …), sur la couverture du flot des données (toutes
les définitions de variable, toutes les utilisations, …), sur les fautes (test par
mutants).

• Par nature, les tests structurels sont généralement utilisés pour la vérification et
non pour la validation.

Test logiciel 2023 - Malek Ltaief 16


Test Structurel

• Examine la structure du programme en testant des portions de programme.

• Un graphe de flot est utilisé pour extraire les chemins d'exécution possibles.

• L'analyse du graphe permet d'identifier les données de tests en fonction d'un


chemin dans le graphe.

Test logiciel 2023 - Malek Ltaief 17


Test Structurel
• Critères de couverture:

• On dit que des données de test sensibilisent un chemin c si le flot d’exécution


avec ces données en entrée suit le chemin c.

• Critère de couverture: « tous-les-noeuds » (statement coverage)

• Objectif : sensibiliser suffisamment de chemins de contrôle pour visiter tous les nœuds
du graphe.

• Critère de couverture : « tous-les-arcs » (decision coverage)

• Objectif : sensibiliser suffisamment de chemins de contrôle pour visiter tous les arcs du
graphe.

Test logiciel 2023 - Malek Ltaief 18


Test Structurel
• Tout chemin (au sens de la théorie de graphes) qui mène d’un sommet de
départ au sommet d’arrivé est une exécution possible.

• Règles de construction du GFC :


1

2 3

40 5

Test logiciel 2023 - Malek Ltaief 19


Test Structurel
• Choix des données de test

• Chemin à suivre?: impérativement on part du sommet de départ et ont fini par le


point d’arrivé.

• Comment tester? : il faut sensibiliser tous les chemins:

• Pour l’exemple précédant: (1-2- 40, 1-3-5- 40)

Test logiciel 2023 - Malek Ltaief 20


Test Structurel
Exemple:
unsigned recherche(int a[], unsigned n, int info, unsigned *pos)
{ unsigned i;
if (info==71)
{ *pos=1;
return 1; }
i=0;
while((i!=n-2) && (a[i]!=info))
i++;
if (a[i]==info)
{ *pos=i;
return 1; }
return 0;
}
Test logiciel 2023 - Malek Ltaief 21
Test Structurel

• Une exécution possible (une DT) est un chemin partant du sommet de début (ici 1 )
et arrivant au sommet de destination (ici ,
)

• La faute peut être détecter facilement en sensibilisant le chemin: 1-2- 40,

• Limite: on ne peut pas détecter les cas non traités: i=n-1 → l’élément en dernière
position n’est pas traités (l’erreur peut être corrigée par le test aux limites)

Test logiciel 2023 - Malek Ltaief 22

Vous aimerez peut-être aussi