TESTS BOITES NOIRES et TESTS BOITES BLANCHES

publicité
C E N T R E
D E
MAITRISE DES
SYSTEMES ET
DU
LOGICIEL
VALIDATION VERIFICATION TESTS
TESTS BOITES NOIRES et TESTS BOITES BLANCHES

STRUCTURE ET ORGANISATION DES PROGRAMMES EN VUE
DES TESTS
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 1
TESTS BOITES NOIRES et TESTS BOITES BLANCHES
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 2
Typologie des systèmes informatiques (1/2)
• Deux grandes classes de programmes et/ou de systèmes qui
interagissent de plus en plus :
– Programmes TRANSFORMATIONNELS séquentiels et/ou concurrents
– Transforment progressivement, et par étapes, les données entrées en résultats
– La description des données est primordiale
» Exp. :
• une transaction dans un système d’information
• un calcul dans une simulation numérique, etc.
– Programmes RÉACTIFS synchrones et/ou asynchrones
– Maintiennent une relation constante avec l’environnement
– La description du comportement est primordiale (ce qui implique un modèle de
l’environnement)
» Exp. :
• un ensemble de transactions dans un système d’information qui interagissent avec un ensemble
d’usagers du SI
• le pilote automatique d’un avion, etc.
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 3
Typologie des systèmes informatiques (2/2)
• Dans les deux cas, l’architecture logicielle est une caractéristique
fondamentale
– Architecture des DONNÉES
– MCD, schémas et vues des données, types des données, codage des données,
variables essentielles/inessentielles, dépendances fonctionnelles, Domaines et plages
de valeurs des données
– Architecture des TRAITEMENTS
– Enchaînements des fonctions qui réalisent la transformation entre un état initial
(supposé cohérent) et un état final qui soit l’exact reflet de la réalité que le programme
et/ou le système modélise
– Principe ACID de la programmation transactionnelle
– Architecture des CONTRÔLES
– Événements programmés et/ou inopinés, interruptions, attentes, retards,
synchronisation, protocoles, états, transitions, automates
– État nominal de l’environnement et contrôle de l’environnement
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 4
Éléments visibles du composant (1/2)
Pvisu
Canal d'intrusion
DOMAINE SORTIE / ECRITURE
• État final résultant de l'exécution
de l'élément à partir des données
d'entrée
MAINTENABILITE / INSTRUMENTATION
• paramètres et/ou ordres de visualisation des
états internes de l'élément
État initial
DE
DOMAINE ENTRÉE / LECTURE
• initialisation avec une combinaison
valide des données d'entrée
Elément ou
Composant
à Tester
Données
Code
Contrôle
Canal d'observation
©2000 Reproduction interdite J.Printz
État final
DS
TRACES
• États intermédiaires résultant de
l'instrumentation
Traces
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 5
Éléments visibles du composant (2/2)
Pvisu
Table des paramètres et ordres
d'intrusion construite à l'avance,
devant conduire à l'observation d'un
comportement
et
de
résultats
intermédiaires déterminés à l'avance.
Canal d'intrusion
Agents d'intrusion
DE
Données
Code
DS
Contrôle
Les programmes agents sont une forme
de redondance qu'il faut doser de façon à
perturber le moins possible le
comportement de l'élément tout en
assurant les conditions d'une bonne
observation.
 Ces agents peuvent être générés sur
options, activés ou désactivés (actions de
«debug», code OLTD, pré et postconditions, etc.)
©2000 Reproduction interdite J.Printz
Agents d'observation
Canal d'observation
Traces
Table des états intermédiaires observables (i.e. « histoire » de la
transformation)
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 6
États observables d’un programme :
États programmes / états données
Elément ou
Composant
à Tester
État initial
DE
Données
État final
DS
Code
Contrôle
État programme
État des données
sous contrôle de P
L’état programme à l’instant t résulte de :
• Données directement sous le contrôle du programme P
toujours accessibles  état données
• Données induites par le système d’exploitation, le
SGBD, les Télécom, etc. ) très difficilement accessibles
Parasites / Bruit de fond résultants
des actions hors contrôle de P
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 7
TESTS BOITES NOIRES
• ON NE PREND EN COMPTE QUE DE ET DS
» VALIDATION
• ANALYSE DE LA STRUCTURATION DE DE ET DS
• ANALYSE DES CORRESPONDANCES ENTRE DE ET DS (i.e. on valide complètement la
sémantique de la transformation)
• ASPECTS COMBINATOIRES
• LIMITE DES TESTS BOITES NOIRES
» LA DÉTERMINATION DES DOMAINES EST PROBLÉMATIQUE
» RENDEMENT DE L'EFFORT DE TESTS POTENTIELLEMENT TRÈS
MAUVAIS
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 8
TESTS BOITES BLANCHES (1/2)
• ON PREND EN COMPTE DE DS ET LA STRUCTURE INTERNE
DE L’ÉLÉMENT
» VÉRIFICATION
» NIVEAU DE GRANULARITÉ DE L'OBSERVATION
• INSTRUCTIONS ÉLÉMENTAIRES
• SÉQUENCES LINÉAIRES D'INSTRUCTIONS
• BLOCS DE CODE REGROUPANT PLUSIEURS SÉQUENCES APPARENTÉES ( i.e. RÉGIONS
FORTEMENT CONNEXES )
• FONCTIONS ET/OU PROCÉDURES DU LANGAGE
» ENVIRONNEMENT D'EXECUTION
• ASPECTS TEMPORELS, GESTION DES RESSOURCES, etc.
• LIMITE DES TESTS BOITES BLANCHES
» QUANTITÉ ET PERTINENCE DE L'INFORMATION PRODUITE
» STABILITÉ DES TESTS :
– MEME STABILITÉ QUE LE CODE
» COINCIDENCE ET RECOUVREMENT NON GARANTIS ENTRE
VÉRIFICATION ET VALIDATION
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 9
TESTS BOITES BLANCHES (2/2)
• Fondés sur l’aspect structural (i.e. syntaxique) du composant
à tester  au moyen du graphe de contrôle
– On s’intéresse à l’agencement des instructions, et non à leur signification
» Exp. : DO WHILE ((a>5) & (a<5)) DO; bloc d’instructions; END DO;
• Graphes de contrôle et nombre cyclomatique ignorent
l’aspect sémantique
– La sémantique prend en compte la nature de la transformation Ds = Prog(De),
c.a.d. aux domaines de valeurs et au sens des opérateurs
» Exp. : la condition ((a>5) & (a<5)) est toujours FAUSSE, donc le bloc
d’instructions n’est jamais exécuté
• Par définition, les tests de chemins ne peuvent pas détecter
les chemins manquants
– Il n’assurent pas la complétude de l’implémentation par rapport à la
spécification du composant
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 10
STRUCTURE ET ORGANISATION DES PROGRAMMES
EN VUE DE LEUR CONSTRUCTION
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 11
Terminologie
• STRUCTURE d’un programme
– Résulte des différentes catégories d’instructions utilisées pour construire le
programme et pour réaliser la transformation souhaitée
– Résulte directement des règles de syntaxe et de sémantique du langage de
programmation utilisé
• ORGANISATION d’un programme
– Regroupement des instructions constitutives de la transformation en :
» procédures, sous programmes, classes, tâches, etc.
– Les instructions correspondantes (qui ne modifient pas l’état mémoire) sont,
en fait, des directives d’assemblage
» unités d’alimentation (mémoire virtuelle  mémoire centrale) utilisées par
l’éditeur de liens dynamique et/ou le chargeur (i.e. loader) du système
d’exploitation (découpage en fichiers / segments / pages selon les SE)
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 12
STRUCTURE GÉNÉRALE DES LANGAGES DE
PROGRAMMATION IMPÉRATIFS (1/2)
• Dans ce type de langage de programmation 3 catégories
d’instructions :
– Celles qui MODIFIENT L’ÉTAT MÉMOIRE du programme
» Exp. :
a=b;
MOVE a TO b
CALL tri-rapide (f1,f2);
etc.
– Celles qui MODIFIENT LE FLOT D’EXÉCUTION des instructions (instructions dites
de contrôle)
» Exp. :
IF c THEN a=b ELSE a=c
GOTO l
– Celles qui permettent D’ORGANISER LE PROGRAMME en mémoire
» Exp. :
En COBOL :
En Ada :
En C et C++ :
©2000 Reproduction interdite J.Printz
organisation en DIVISION, SECTION et paragraphes
blocs d’instructions  declare … begin … end;
organisation en classes  package p is … end p;
 pakage body p1 is procedure p2 … end p2; … end p1;
tâches  task body t is… end t;
etc.
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 13
STRUCTURE GÉNÉRALE DES LANGAGES DE
PROGRAMMATION IMPÉRATIFS (2/2)
• Marquage des instructions
– Toutes les instructions sont repérables par :
» leur nom (en anglais label)
l1 : a=b;
l1 : DO …. END l1;
GOTO l1;
» leur N° d’ordre dans le programme
» leur adresse machine (symbolique ou physique)
• Cf. : les références croisées et les cartes d ’allocation mémoire produite par les compilateurs
et les éditeurs de liens
– Obligatoire pour des raisons d’édition et de mise au point
• La plupart des langages ont des fonctions d’édition
incorporées qui permettent de composer le programme à
compiler à partir de motifs pré-enregistrés
– Clauses COPY en COBOL
– Unités generic en Ada
– Macros en C / C++
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 14
REPRÉSENTATIONS ET PROPRIÉTÉS ÉLÉMENTAIRES
DE LA BOÎTE BLANCHE
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 15
Graphe de contrôle d’un programme
• Tout programme peut se représenter sous forme de
graphe où :
– Les nœuds sont les instructions
– Les arcs sont les branchements
• Exemple :
Un if-then-else
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 16
Les types de nœuds du graphe
• Il y a trois types de nœuds :
– Les nœuds « fonction » (toute instruction est une fonction) matérialisés par :
f
– Les nœuds « prédicatifs » (représentant une condition) matérialisés par :
c
– Les nœuds « de regroupement » (qui sont vides) matérialisés par :
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 17
Programmation structurée (1/3)
• Si l’on examine tous les graphes de 1 à 4 nœuds (il y en a 15),
seuls 7 sont pertinents car les autres n’ont pas de nœuds
fonction (il n’y a donc pas d’instruction !)
• Ces 7 graphes sont à l’origine de la programmation structurée
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 18
Programmation structurée (2/3)
• En effet, on a :
– L’instruction : a = b; par exemple
– La séquence : a = b; c = d;
» Remarque : correspond à la composition de fonctions
– Les alternatives :
» If-then
» If-then-else
– Les itératives :
» While-do
» Do…while (ou repeat…until)
» Do-while-do (test de « milieu » de boucle)
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 19
La programmation structurée (3/3)
• On remarque que :
– Il n’y a pas le « case » (switch)
» C’est un confort syntaxique pour exprimer des cascades de if-then-else
imbriqués
– Il n’y a pas de boucle « for »
» La boucle «for » n’est pas une vraie boucle
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 20
Programme structuré
• Un programme structuré est donc :
– Un programme qui ne possède qu’un point d’entrée et un point de sortie
– Constitué à partir des 7 formes de bases (appelées structures premières)
– Tel que pour chaque nœud il existe un chemin reliant l’entrée à la sortie
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 21
Définition du nombre cyclomatique(1/4)
• À partir du graphe de programme on peut calculer le nombre
cyclomatique (Mc Cabe-1976) V(g) tel que :
– V(g) = e – n + 2
(e : edge [arc] ; n : node [nœud])
• Le nombre cyclomatique représente :
– Le nombre de chemins linéairement indépendants dans un graphe fortement
connexe
– Le nombre de décisions + 1 prises dans un programme (i.e. le nombre de
nœuds prédicatifs + 1)
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 22
Définition du nombre cyclomatique(2/4)
• Un graphe est fortement connexe si :
–  ni et nj, deux nœuds du graphe,  un chemin reliant ni et nj
» On remarque qu’un programme bien structuré n’a pas un graphe fortement
connexe car il n’y a pas de chemin reliant la sortie à l’entrée ! (on ajoute
donc cet arc fictif)
• Le nombre de chemins linéairement indépendants correspond
au nombre de régions du plan délimitées par le graphe quand
les arcs ne se recoupent pas.
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 23
Définition du nombre cyclomatique(3/4)
• Exemple



V(G) = 3 (donc 2 décisions)
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 24
Définition du nombre cyclomatique(4/4)
• Quelle valeur maximum ?
– On considère généralement que le nombre cyclomatique doit être inférieur à 10
dans chaque sous-programme
• Remarque importante
– Le nombre cyclomatique ne mesure que la complexité structurelle statique
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 25
APPLICATION : SÉLECTION ET DESCRIPTION DE CHEMINS
a
1
b
c
3
d
4
e
5
6
2
OUI
DEBUT
OUI
NON
i
h
l
10
g
k
f
j
9
OUI
8
NON
7
OUI
m
CHEMINS
abcde
abhkgde
abhlibcde
abcdfjgde
abcdfmibcde
©2000 Reproduction interdite J.Printz
FIN
NON
DÉCISIONS
4
6
7
OUI
OUI
NON
OUI
NON,OUI OUI
OUI
NON,OUI OUI
OUI
NON,OUI NON
NON
9
NON
OUI
LIENS
a b c
- - - - - - - - - -
d
-
e f g h
- - - - -
i
j k l
m
-
-
-
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
-
Page 26
INTÉRETS DES MODES DE REPRÉSENTATION
• GRAPHE DE CONTRÔLE : LE PLUS INTUITIF  « ça se voit » !
• MODES DE REPRÉSENTATION PLUS ABSTRAITS :
– Expressions régulières:
• correspondance directe GC  ER
– Automates
» Machines logiques à mémoire VOLONTAIREMENT rudimentaire
• Automates à états finis
• Automates à pile(s)
• Machines de Turing
» Ont des propriétés mathématiques très intéressantes et permettent des
preuves (sémantique parfaitement définie)
– Machines abstraites
» Adaptées aux problèmes à résoudre, donc moins générales que les automates
» Rendent explicites ce que le programmeur considère comme important
• les événements à contrôler auxquels on va associer les instructions de la machine.
• les états mémoire dont on peut choisir la structure et la topologie.
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 27
NOMBRE CYCLOMATIQUE (1/3)
• MESURE DE COMPLEXITÉ DE Mc CABE
» M = Arcs - Noeuds + 2P
– Arrière plan mathématique :
• s'applique à des graphes non orientés
• chemins minimaux à partir desquels on peut engendrer tous les chemins possibles
– notion de base d'un espace vectoriel
– Exemples :
M=2
M=2
M=1
M=7
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 28
NOMBRE CYCLOMATIQUE (2/3)
– Applications
• évaluation du nombre de tests minimaux
• critère pour investigations plus poussées (révélateur d'anomalies)
– revues, inspections
– Faiblesses
• les programmes sont des graphes orientés; la notion de chemin est différente .
• la mesure n'est pas fidèle.
» Exemples:
• conditions multiples
• boucles
A&B&C
A
V
F
©2000 Reproduction interdite J.Printz
A
B
C
V
F
M=2
B&C
F
M=3
M=4
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 29
NOMBRE CYCLOMATIQUE (3/3)
M=2
DO WHILE
1
1
3
2
4
2,3,4
4
5
DO UNTIL
1 seul test pour les
2 chemins
5
2 tests pour les 2
chemins
1
3
2
1
2
2,3,2
4
4
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 30
NOMBRE CYCLOMATIQUE ET EFFORT DE TEST
Début
M=1
Début
M=5
Bloc N°1
Bloc N°2
Bloc N°1
Bloc N°2
Bloc N°3
Bloc N°4
Bloc N°5
Bloc N°3
Fin
Bloc N°4
Bloc N°5
Fin
©2000 Reproduction interdite J.Printz
 Bien que les nombres cyclomatiques soient
très différents, l’effort de test est quasiment le
même !!!
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 31
COUVERTURES
• DÉTERMINENT LES DIFFÉRENTES FAÇONS DE PARCOURIR
LE GRAPHE DE CONTROLE
– TOUS LES NOEUDS:
– TOUS LES ARCS:
– TOUS LES CHEMINS:
C0
C1
C
• FACILITÉ DE MISE EN OEUVRE
– C0 et C1 très faciles
– C très difficile
• RENDEMENT
– C1 EXCELLENT, EN PARTICULIER ASSOCIÉE AVEC PROGRAMMATION
STRUCTURÉE
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 32
LIMITATIONS DES GRAPHES DE CONTROLE
• LA SIMPLIFICATION DU MODELE CONDUIT A NE PAS OU A MAL
REPRÉSENTER LES ÉLÉMENTS SUIVANTS :
»
»
»
»
»
»
»
»
»
le détail des expressions booléennes
l'itération simple
les assignations et la dépendance fonctionnelle des variables
les déclarations de données, la portée des variables
la segmentation des données et du code (packaging en mémoire virtuelle pour
bénéficier des effets « cluster » grâce aux caches)
les appels de fonctions et de procédures
les ordres d'entrées sorties et d’une façon générale les appels système
les macros et/ou l’héritage de code
les exceptions et les interruptions ; la synchronisation (i.e. programmes
réactifs)
TOUS CES ÉLÉMENTS JOUENT UN ROLE TRES IMPORTANT
ET SONT SOURCE DE NOMBREUSES ERREURS
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 33
DÉFAUTS SÉMANTIQUES POTENTIELLEMENT INDÉCELABLES
PAR COUVERTURE SIMPLE (1/2)
Exemple :
N°1
N°2
N°3
N°4
N°5
Valeurs initiales 
a=0 ; b=0
a=0 ; b=1
a=1 ; b=0
a=1 ; b=1
a=1 ; b=2
(a+b)(a+1)
0
1
2
4
6
Programmes faux

(a-b)(a+1)
(a+1)(a+1)
(b+b)(a+1)
(a+b)+(a+1)
(a+b)(a-1)
0
-1
0
0
0
-1
-1
2
2
-1
2
0
0
3
0
0
0
4
4
0
-2
0
8
5
0
4
0
1
2
0
Résultats corrects mais
programme faux
 Il faut passer plusieurs fois dans la même branche avec des
valeurs différentes pour détecter l’erreur
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 34
DÉFAUTS SÉMANTIQUES POTENTIELLEMENT INDÉCELABLES
PAR COUVERTURE SIMPLE (2/2)
Erreur décelable par ajout de redondance
Calcul de l’expression
Calcul d’une expression
sémantiquement
équivalente
(test en ligne)
Comparaison des résultats
Vrai
Faux
Auto diagnostique
Par exemple :
 a2 + a×b + a + b
 a× (a + b + 1) + b
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 35
Annexe et complément sur la
programmation en vue des tests :
STRUCTURE ET ORGANISATION DES PROGRAMMES
EN VUE DES TESTS
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 36
PARTIE CACHÉE
État initial
DE
Événements entrants
©2000 Reproduction interdite J.Printz
Code fonctionnel
nominal
Exceptions et/ou
défaillances programmées
et/ou inopinées

Autocontrôles
Post-conditions
Composante
transformationnelle
Pré-conditions
PARTIE VISIBLE
MODÈLE DE COMPOSANT
État final
DS
Événements sortants
Composante
réactive
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 37
Caractéristiques et classes de programmes
• T = Transformationnel ; R = Réactif
Asynchrone
(Rendez-vous)
Synchrone
(Temps vrai,
respect de priorités)
©2000 Reproduction interdite J.Printz
Séquentiel
Concurrent
T
T
R
T (temps
contraint)
R
T (temps + RDV
contraints)
R
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 38
PROGRAMMES TRANSFORMATIONNELS (1/3)
• Pour le programmeur, tout se passe comme si le programme
dispose instantanément de toutes les ressources système
nécessaires à son exécution
– Toute ressource nommée dans le programme est considérée comme acquise
– Le programme est très proche de l’idéal déterministe
• La plupart des mécanismes système lui sont cachés par le
système d’exploitation
– La sémantique de la transformation ne dépend pas de ces mécanismes
(propriété d’idempotence)
– La « sphère de contrôle » du programme est strictement incluse dans celle du
système d’exploitation de la machine
• Le programme est une abstraction logique intemporelle sur
lequel on peut raisonner de façon sûre avec toutes les
ressources de la logique mathématique
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 39
PROGRAMMES TRANSFORMATIONNELS (2/3)
Le programme est généralement mono
processus et ne s'exécute que sur un seul
processeur à la fois. Il n'a aucune relation
directe avec l'extérieur. Il est assimilable à une
suite d’instructions ininterruptibles.
Il faut parfaitement connaître les interfaces
avec le système d'exploitation.
PROGRAMME
Mémoire
vue
par P
P
Zone Tampon
(interface avec le SE)
Appels directs aux
fonctions du SE
Contenu de la zone tampon :
• Buffer pool pour fichiers et/ou bases de
données,
• Mémoire virtuelle,
• Files d'attente de messages télécoms vus
comme des fichiers,
etc.
SYSTEME D'EXPLOITATION
RESSOURCES
(gérées par le SE)
©2000 Reproduction interdite J.Printz
Recueille et traite tous les événements et les
interactions avec l'extérieur (sous contrôle du SE)
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 40
Données de la
transformation
Mémoire non persistante
statique
Mémoire non persistante
dynamique
Mémoire persistante
SPHÈRE DE
CONTRÔLE DU
PROGRAMME
Algorithmes de
la
transformation
Via SGF et/ou SGBD
©2000 Reproduction interdite J.Printz
SPHÈRE DE CONTRÔLE DU
SYSTÈME D’EXPLOITATION
PROGRAMMES TRANSFORMATIONNELS (3/3)
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 41
PROGRAMMES RÉACTIFS (1/4)
• Pour le programmeur, tout se passe comme si le programme doit
lui-même gérer les ressources système nécessaires à son
exécution
– Toute ressource utilisée par le programme doit être acquise (statiquement ou
dynamiquement) conformément au protocole d’acquisition propre de la ressource
– Le programme est très éloigné de l’idéal déterministe
• La plupart des mécanismes système sont visibles par le
programme lui-même
– La sémantique de la transformation peut dépendre de ces mécanismes
– La « sphère de contrôle » du programme déborde celle du système d’exploitation
de la machine
• Chaque instance (i.e. exécution) du programme est susceptible
d’une histoire particulière qui dépend aléatoirement des
événements qui l’engendrent ; on ne peut plus raisonner de
façon sûre avec les seules ressources de la logique
mathématique (i.e. nouvelle logique temporelle)
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 42
PROGRAMMES RÉACTIFS (2/4)
• MODÈLE ASYNCHRONE : PARTAGE DE RESSOURCES +
CONCURRENCE POUR LES RESSOURCES EXCLUSIVES
» MODÈLE CLIENT-SERVEUR ET PROTOCOLES DE COMMUNICATIONS
» LE MODÈLE LE PLUS RÉPANDU EST CELUI DE LA PROGRAMMATION
TRANSACTIONNELLE (en COBOL dès les années 70)
• LE PROGRAMME SE PARTAGE PLUSIEURS PROCESSEURS
• IL Y A CONCURRENCE SUR LES DONNÉES (accès aux bases de données)
• LES RESSOURCES AFFECTÉES AU PROGRAMME SONT BANALISÉES
• MODÈLE SYNCHRONE : TEMPS RÉEL
» LE TEMPS VRAI EST UN PARAMÈTRE FONDAMENTAL
• INTERRUPTIONS ET PRIORITÉS
• RESSOURCES DEDIÉES (y compris les processeurs)
• MODÈLES MIXTES
» SYSTÈMES C3I
• COHABITATION D ’INTERACTIONS DE TYPE CONVERSATIONNEL - temps « réfléchi » où
l’attente est possible - ET DE TYPE RÉFLEXE où la réponse doit être immédiate
» SYSTÈMES HYBRIDES
• COHABITATION ÉQUIPEMENTS ANALOGIQUES - fonctionnant en continu - ET ORDINATEURS
(le tout fonctionnant en boucles fermées)
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 43
PROGRAMMES RÉACTIFS (3/4)
M1,3
Tâche T3
M1,2
M1,1
M1,3
Tâche T2
M1,2
M1,1
M1,3
Tâche T1
M1,2
M1,1
Ordonnancement
des taches selon
les priorités et les
contraintes
temporelles
Le programme est multitâches qui peuvent
s'exécuter sur plusieurs processeurs et gérer
plusieurs contextes.
Il est en permanence en relation directe avec
l'extérieur. L’exécution des instructions peut
être interrompue à tout moment  phénomène
d ’entrelacement (interleaving).
Il faut parfaitement connaître le fonctionnement
des moniteurs qui notifient les événements aux
différentes tâches.
Zone de communication entre tâches
Contenu de la zone de communications :
• Files d’attentes de messages à dispatcher,
• Tables de verrouillage de ressources,
• Sémaphores de synchronisation, etc.
Différents moniteurs
La cohérence entre le système d'exploitation
et les moniteurs doit être soigneusement
validée et vérifiée.
SYSTEME D'EXPLOITATION
RESSOURCES
(gérées par le SE)
©2000 Reproduction interdite J.Printz
Dispatching des événements
selon les moniteurs
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 44
PROGRAMMES RÉACTIFS (4/4)
• Conséquences de l’entrelacement sur le flot des instructions
» Contrôle rigoureux des règles de partage des données (en particulier pour
les mises à jour et les lectures « sales »)
» Contrôle rigoureux des règles de rupture de séquence (section critique,
propriétés ACID des transactions)
Flot de la tâche T1
••
•
Durée t quelconque
 Potentialité de générer très facilement
des états incohérent du programme qui
provoqueront des défaillances très
difficiles, voire impossibles, à reproduire !!!
Séquence quelconque
d’instructions des autres
tâches, des moniteurs,
du système
d ’exploitation
••
•
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 45
TEST DE PROGRAMMES RÉACTIFS
Exemple de la gestion de ressources
logicielles
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 46
Principes
• Expliciter aussi précisément que possible la sphère de contrôle
du programme et/ou du système à tester
– Faire un modèle de l’environnement dans lequel opère le programme
– Faire l’inventaire des événements qui doivent remonter sur le programme
• Tester d’abord les composantes transformationnelles du
programme
– Couverture 100%
• Mettre en place, à demeure dans le programme, un jeu de traces
que l’on peut activer ou débrayer dynamiquement, y compris in
situ
– Identifier exhaustivement toutes les variables partagées, les points de
synchronisation, les sections critiques, les ressources partagées, etc.
– Journalisation des événements sur des mémoires circulaires stables (pour éviter
la perte d’information)
– Relaxation progressive de la granularité en fonction de l’évolution de la courbe de
maturité jusqu’à obtention du grain nominal
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 47
Ressource logicielle (1/4)
 Ce qui permet à une fonction logicielle de s’exécuter
• Exp : Mémoire, fichiers, DB, appareil, ligne télecom, 1 ou n processus, une donnée, etc.
• L’acquisition d’une ressource résulte toujours d’une demande
– Explicite sous contrôle du/des programmeur(s)
• Ouverture d’un fichier, allocation d’une zone mémoire, etc.
– Implicite à partir de l’information des programmes
• Par le compilateur, l’éditeur de liens, le système d’exploitation, le moniteur de contrôle, etc.
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 48
Ressource logicielle (2/4)
• Etat d’une ressource
– Disponible
» Libre / Attribuée (à 1 ou n, i.e. partagée)
– Indisponible
» Temporairement (saturation, attente, etc.)
» Définitivement (types de pannes)
– Réparable / Non réparable
 Mot d’état associé à la ressource
» Visibilité du mot d’état : Broadcast / Polling
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 49
Ressource logicielle (3/4)
• La prise en compte de la demande par l’environnement peut
être faite
– A la compilation et/ou édition de liens
 Construction déterministe
– Au démarrage de l’application lors du chargement
– Dynamiquement, au dernier moment
 Construction non déterministe (d’où contrôle de charge)
» Cas fréquent en programmation objet
• L’exécution de la demande peut être synchrone ou
asynchrone
 Priorité, durée, etc.
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 50
Ressource logicielle (4/4)
• Types de ressources
» Banalisée / homogène : une zone mémoire, une tâche, un fichier
temporaire, etc.
 Possibilité d’épuisement ; ressources centralisées
» Spécifique / hétérogène : un fichier particulier, une donnée (i.e. données
« essentielles »), un processus système, etc.
 Possibilité de conflit avec une autre demande ; ressources distribuées
» Composite (toute combinaison autorisée)
» Persistante : la demande survit à la fin logique du processus/programme :
i.e. rangement dans un cache.
• Régulière : restituée automatiquement à l’environnement à la terminaison du programme
(i.e. critère LRU)
• Irrégulière : restituée si notification explicite (i.e. time out)
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 51
Pipeline de ressources (1/3)
• Notion de pipeline
• Pipeline permettant le chargement anticipé d’instructions et de données avant leur emploi
réel (Localité + régularités statistiques)
Mécanisme fondamental (mais très délicat) des UC modernes qui évite de synchroniser la
machine sur les organes les plus lents (le bus, E/S, etc.)
• Anticipation des demandes de ressources
• la ressource est disponible au moment de son utilisation effective
• Relaxation progressive en fin de demande
• la fin logique d’une demande de ressource ne coïncide pas nécessairement avec la
restitution physique des ressources
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 52
Pipeline de ressources (2/3)
Espace d'adresse d'une
application particulière A
Espace système contenant
toutes les ressources
accessibles depuis A
Zone de communication permettant d'échanger des informations
©2000 Reproduction interdite J.Printz
Espace machine global contenant
toutes les entités adressables, y
compris le système d'exploitation et
tous ses sous-systèmes.
La construction de cet espace est
faite par le « Boot » du système
d'exploitation qui à son tour créera
tous les autres espaces nécessaires
aux applications.
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 53
Pipeline de ressources (3/3)
 Exemple de terminaison d’une application
TFin
Application A
Fin de l'exécution de l'application A, du point de vue du programmeur
•••
Séquences d'ordres explicites relâchant certaines
ressources temporairement utilisées par A  Durée
d'exécution TE
Programme système d'analyse des résidus de la terminaison
•••
©2000 Reproduction interdite J.Printz
Séquences d'ordres complémentaires implicites relâchant le
reliquat de ressources non encore libérées  Durée
d'exécution TI
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 54
Ingénierie de l’architecture
• L’architecture doit identifier :
– Le code fonctionnel basique,
– Le code fonctionnel dur
– Le code non fonctionnel
• Facilités d ’emploi, Fiabilité, Performance, Maintenabilité, Portabilité
– La structure de contrôle la plus appropriée à la logique d ’enchaînement
– Le jeu d’interfaces qui minimise le volume du code
– La taille maximum des composants critiques pour la survie de l’application
 Concept d’architecture testable et maintenable
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 55
Dilemme de l’architecte
• Pour réduire le coût à risque constant, la performance doit
être réduite
• Pour réduire le risque à coût constant, la performance doit
être réduite
• Pour réduire le coût à performance constante, un niveau de
risque plus élevé doit être accepté
• Pour réduire le risque à performance constante, un coût plus
élevé doit être accepté
Cf. Vade-mecum du chef de projet
©2000 Reproduction interdite J.Printz
/ CNAM - CMSL / VVT Chapitre 2 : Tests boites noires et tests boites blanches / Vers. 5.0
Page 56
Téléchargement