La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours Qualité et Tests Chapitre 3 : Tests Responsables du cours : Héla Hachicha Hatem Ben Sta Inès Benjaâfar Année Universitaire : 2012 - 2013.

Présentations similaires


Présentation au sujet: "Cours Qualité et Tests Chapitre 3 : Tests Responsables du cours : Héla Hachicha Hatem Ben Sta Inès Benjaâfar Année Universitaire : 2012 - 2013."— Transcription de la présentation:

1 Cours Qualité et Tests Chapitre 3 : Tests Responsables du cours : Héla Hachicha Hatem Ben Sta Inès Benjaâfar Année Universitaire :

2 Sommaire Problématique du test Test : définition Familles de Tests Test fonctionnel Test structurel Types de Tests Tests unitaires Tests dintégration Tests de conformité Tests de non-régression Test de boite noire Test de boite blanche Test de bon fonctionnement Tests de robustesse Test de performance Méthode fonctionnelle Méthode structurelle 2

3 Problématique du test On ne peut pas tester tout le temps ni tous les cas possibles Il faut des critères pour choisir les cas intéressants et la bonne échelle pour le test Prouver labsence derreurs dans un programme est un problème indécidable il faut des heuristiques réalistes 3

4 Problématique du test 4 analyse des besoins spécification Implémentation Testt Le coût du test dans le développement + maintenance = 80 % du coût global de développement !!! Test An. b Spécif. Implém.

5 Problématique du test Un jeune diplômé sur trois commence par faire du test 50% des start-up échouent à cause du trop grand nombre de bugs mauvaise campagne de test maintenance difficile pas de non régression 5

6 Terminologie 6 Une faute est la cause dune erreur Une erreur (IEEE 729) est Un écart entre une valeur ou condition calculée, observée ou mesurée et la valeur ou condition qui est vraie, spécifiée ou théoriquement correcte. Défaut, anomalie (fault, bug) (IEEE 729) est la manifestation d'une erreur dans un logiciel Un défaut peut causer une panne. Panne (failure) (IEEE 729) est la fin de la capacité d'un système ou d'un de ses composants d'effectuer la fonction requise, ou de l'effectuer à l'intérieur de limites spécifiées. FauteErreur Panne Défaut

7 Terminologie 7 SPECIFICATION (ISO 8402) Document qui prescrit les exigences auxquelles le produit ou le service doit se conformer. SATISFACTION Un programme satisfait sa spécification lorsquil est en tout point conforme aux exigences de celle-ci. VALIDATION ou VERIFICATION (ISO ) Processus d'évaluation du logiciel pour s'assurer quil satisfait aux exigences spécifiées. La validation ou la vérification d'un produit cherche à s'assurer qu'on a construit le bon produit (dun point de vue externe ou interne). Le test est un cas particulier de vérification.

8 Définitions du test «Le test est lexécution ou lévaluation dun système ou dun composant par des moyens automatiques ou manuels, pour vérifier quil répond à ses spécifications ou identifier les différences entre les résultats attendus et les résultats obtenus » -IEEE (Standard Glossary of Software Engineering Terminology) «Tester, cest exécuter le programme dans lintention dy trouver des anomalies ou des défauts »-G. Myers (The Art of Software testing) Testing can reveal the presence of errors but never their absence–EdsgarW. Dijkstra. Notes on structured programming. AcademicPress,

9 Objectifs Le test vise à mettre en évidence les erreurs dun logiciel Le test na pas pour objectif de diagnostiquer la cause des erreurs Le test na pas pour objectif de corriger les fautes Le test na pas pour objectif de prouver la correction dun programme 9

10 Qualité du test Lefficacité du test (son aptitude à détecter des erreurs) doit être conforme à certains critères de qualité. Le niveau de qualité requis dépend du contexte dutilisation du logiciel: plus le contexte est critique, plus leffort de tests doit être important. La programmation dun logiciel aérospatial requiert des exigences de qualité supérieures à la programmation dun éditeur de dessins techniques QUALITE (QUALITY), ISO 8402: Ensemble des propriétés et caractéristiques d'un produit ou service qui lui confèrent l'aptitude à satisfaire des besoins exprimés ou implicites. 10

11 Familles de tests Deux grandes familles de tests Test fonctionnel (ou test boîte noire) Test structurel (ou test boîte blanche) 11

12 Test fonctionnel 12

13 Tests de boîte noire : Black-box testing 13

14 Tests de boîte blanche : Test structurel – «White Box Testing» 14

15 Complémentarité test fonctionnel -structurel (1) 15

16 En examinant ce qui à été réalisé, on ne prend pas forcément en compte ce qui aurait du être fait : Les approches structurelles détectent plus facilement les erreurs commises Les approches fonctionnelles détectent plus facilement les erreurs domission et de spécification Une difficulté du test structurel consiste dans la définition de lOracle de test. 16 Complémentarité test fonctionnel -structurel (2)

17 Difficultés du test (1) Le test exhaustif est en général impossible à réaliser En test fonctionnel, lensemble des données dentrée est en général infini ou très grande taille Exemple : un logiciel avec 5 entrées analogiques sur 8 bits admet 240 valeurs différentes en entrée En test structurel, le parcours du graphe de flot de contrôle conduit à une forte explosion combinatoire Exemple : le nombre de chemin logique dans le graphe de la figure 1 est supérieur à …+ 51 => le test est une méthode de vérification partielle de logiciels => la qualité du test dépend de la pertinence du choix des données de test 17

18 Difficultés du test (2) Difficultés dordre psychologique ou «culturel» Le test est un processus destructif : un bon test est un test qui trouve une erreur alors que lactivité de programmation est un processus constructif -on cherche à établir des résultats corrects Les erreurs peuvent être dues à des incompréhensions de spécifications ou de mauvais choix dimplantation => Lactivité de test sinscrit dans le contrôle qualité, indépendant du développement 18

19 Terminologie : alpha- et bêta-test Alpha-test (alpha testing) test effectué en phase de développement, avant la distribution du produit ( alpha-versions du produit) Bêta-test (beta testing) test effectué après l'alpha-test, en distribuant le produit ( des bêta-versions) à un groupe limité d'utilisateurs avertis 19

20 Organisation de l'activité de test Activité coûteuse optimiser l'investissement effort minimum / probabilité max. de détection d'erreur Incrémentalité Construction des tests aussi organisée que celle d'un produit (!) ( il y a des sociétés qui vendent des suites de test) Gestion projet planification suffisamment tôt (difficile d'accroître les ressources en fin de développement) 20

21 Tâches Définition des tests Implémentation des jeux de tests Soumission des jeux de tests Dépouillement des résultats Évaluation de la qualité des tests Décision d'arrêter l'écriture de tests Rejeu (maintenance, non régression) 21

22 Environnements (outils) de test Mise en œuvre des jeux de test construction de données et de contextes d'exécution Diagnostic définition de critères de réussite / échec automatisable ou non (ex. test d'interface) Synthèse des résultats car les sorties des tests sont souvent très grosses ne pas rater une erreur dans une masse de succès Diffusion des résultats 22

23 Types de Tests (éléments testés et phases) 23 Tests unitaires : Test de procédures, de modules, de composants Tests dintégration : Test de bon comportement lors de la composition de procédures et modules Tests de conformité ou test système : Validation de ladéquation aux spécifications Tests de non-régression : Vérification que les corrections ou évolution dans le code nont pas créées danomalies nouvelles

24 24 Tests nominal ou test de fonctionnel Les cas de test correspondent à des données dentrée valide. (Réaction à certaines entrées (sorties produites) Test-to-pass Tests de robustesse : Les cas de test correspondent à des données dentrée invalide Test-to-fail Règle : Les tests nominaux sont passés avant les tests de robustesse. Test de performance vitesse, charge –Load testing (test avec montée en charge) –Stress testing (soumis à des demandes de ressources anormales) Tests de fiabilité résistance aux pannes Tests de sécurité,... Tous types et étapes de test pas nécessairement présents : dépend de la criticité du logiciel Types de Tests (nature des propriétés testées)

25 Types de Tests (selon les informations accédées) 25 Tests de boîte noire [black box testing] Le test porte sur le fonctionnement externe du système. La façon dont le système réalise les traitements n'entre pas dans le champ du test. – évaluation de l'extérieur (sans regarder le code), uniquement en fonction des entrées et des sorties – sur le logiciel ou un de ses composants Tests de boîte blanche [white/glass box testing] Le test vérifie les détails d'implémentation, c'est à dire le comportement interne du logiciel.. – exploite le code ( besoin du source/de l'architecture) – tests de portions de code : bloc, branche, etc.

26 26 Types de Tests

27 Test et démarche dassurance qualité 27

28 Critères d'arrêt des développements de tests Taux de couverture atteint ( critère a priori) suffisamment d'aspects testés Nombre ou taux d'erreurs découvertes ( critère a posteriori) courbe du nb d'erreurs en fonction de la durée arrêt sous un certain seuil ( ) séparation des erreurs par catégorie Épuisement des ressources dédiées au test ( ) effort humain et/ou durée 28

29 Taux de découverte de bogues et arrêt des tests 29

30 Rapport qualité prix Nombre de cas de test arbitrairement grand Nécessité d'un compromis précision, bon degré de couverture, bonnes informations pour les développeurs-testeurs (reproductibilité, debug) coût (définition, réalisation, passage, dépouillement) temps d'exécution de tests nb de ressources de calcul (machines) mobilisées 30

31 1. Méthodes de test structurel Le test structurel sappuie sur lanalyse du code source de lapplication (ou dun modèle de celui-ci) pour établir les tests en fonction de critères de couverture Basés sur le graphe de flot de contrôle (toutes les instructions, toutes les branches, tous les chemins, …) Basés sur la couverture du flot de données (toutes les définitions de variable, toutes les utilisations, …) Basés sur les fautes (test par mutants) 31

32 1-1 Graphe de flot de contrôle 32

33 Chemins dans le graphe de contrôle Le graphe G1 est un graphe de contrôle qui admet une entrée -le nœud a -, une sortie -le nœud g. le chemin [a, c, d, e, g] est un chemin de contrôle, le chemin [b, d, f, g] nest pas un chemin de contrôle. Le graphe G1 comprend 4 chemins de contrôle : β1 = [a, b, d, f, g] β2 = [a, b, d, e, g] β3 = [a, c, d, f, g] β4 = [a, c, d, e, g] 33

34 Expression des chemins de contrôle Le graphe G1 peut-être exprimé sous forme algébrique sous la forme suivante : G1 = abdfg+ abdeg+ acdfg+ acdeg le signe + désigne le «ou» logique entre chemins. Simplification de lexpression de chemins G1 = a (bdf+ bde+ cdf+ cde) g G1 = a (b + c) d (e + f) g 34

35 Calcul de lexpression des chemins de contrôle 35

36 Chemins de contrôle avec boucles 36

37 Expressions de chemins -Exercice Soit le programme P3 suivant : 37 Question : Etablir le graphe de flot de contrôle de ce programme Fournir lexpression des chemins

38 Graphe de flot de contrôle du programme P3 38

39 Expressions de chemins -Exercice 39 Soit le programme P4 suivant : Question : Etablir le graphe de flot de contrôle de ce programme Fournir lexpression des chemins

40 Graphe de flot de contrôle du programme P4 40

41 Problème des chemins non exécutables 41

42 Méthodes de test structurel : couverture de tous- les-noeuds 42

43 Limites du critère tous-les-noeuds 43

44 Méthodes de test structurel : couverture de tous- les-arcs 44

45 Cas des conditionnelles composées (1) 45

46 Cas des conditionnelles composées (2) 46

47 Critère de couverture de condition- décision multiple 47

48 Sensibilité au compilateur 48

49 Limites des critères tous-les-arcs et condition-décision multiple 49

50 50 Limites des critères tous-les-arcs et condition-décision multiple

51 Méthodes de test structurel : couverture de tous-les-chemins-indépendants Le critère tous-les-chemins-indépendants vise à parcourir tous les arcs dans chaque configuration possible (et non pas au moins une fois comme dans le critère tous-les-arcs) Lorsque le critère tous-les-chemins-indépendants est satisfait, cela implique : le critère tous-les-arcs est satisfait, le critère tous-les-nœuds est satisfait. Sur le programme P7, larc [c-e] est sensibilisé lorsque i > sup à la fois dans le contexte sum= 0 (la boucle nest pas activée) et sum 0 (la boucle est activée) 51

52 Procédure : tous-les-chemins-indépendants 1 -Evaluer le nombre de décisions par analyse des conditionnelles 2 -Produire une DT couvrant le maximum de noeuds de décisions du graphe 3 -Produire la DT qui modifie la valeur de vérité de la première instruction de décision de la dernière DT calculée. Recommencer létape 3 jusqua la couverture de toutes les décisions. 52

53 Critère tous-les-chemins-indépendants- Exemple 53

54 54 Critère tous-les-chemins-indépendants- Exemple

55 Couverture des chemins limites et intérieurs (1) 55

56 Couverture des chemins limites et intérieurs (2) 56

57 Hiérarchie des critères basés sur le flot de contrôle 57

58 Méthodes de test structurel -Exercice 58

59 59 Méthodes de test structurel -Exercice

60 60 Méthodes de test structurel -Exercice

61 61 Méthodes de test structurel -Exercice

62 1-2 Critères de couverture basés sur le flot de données Les critères basés sur le flot de données sélectionnent les données de test en fonction des définitions et des utilisations des variables du programme Définitions sur les occurrences de variables : une variable est définie lors dune instruction si la valeur de la variable est modifiée (affectations), Une variable est dite référencée si la valeur de la variable est utilisée. Si la variable référencée est utilisée dans le prédicat dune instruction de décision (if, while, …), il sagit dune p-utilisation, dans les autres cas (par exemple dans un calcul), il sagit dune c-utilisation. 62

63 Critères basés sur le flot de données 63

64 64 Critères basés sur le flot de données

65 Critères toutes-les-définitions et tous- les-utilisateurs toutes-les-définitions: pour chaque définition, il y a au moins un chemin dr-strict dans un test tous-les-utilisateurs: pour chaque définition et pour chaque référence accessible à partir de cette définition, couverture de tous les utilisateurs (noeuds c-utilisateurs ou arcs p-utilisateurs) tous-les-utilisateurs toutes-les-définitions 65

66 Critères toutes-les-définitions et tous- les-utilisateurs -exemple 66

67 Autres critères basés sur le flot de données Le critère tous-les-utilisateurs nécessite souvent la sensibilisation dun grand nombre de chemin, deux autres critères, intermédiaires entre tous-les-utilisateurs et toutes-les-définitions sont proposés : tous-les-p-utilisateurs/quelques-c-utilisateurs: pour chaque définition, et pour chaque p-utilisation accessible à partir de cette définition et pour chaque branche issue de la condition associée, il y a un chemin dr- strict prolongé par le premier segment de cette branche ; sil ny a aucune p-utilisation, il suffit davoir un chemin dr-strict entre la définition et lune des c-utilisation, tous-les-c-utilisateurs/quelques-p-utilisateurs: pour chaque définition, et pour chaque c-utilisation accessible à partir de cette définition, il y a un chemin dr-strict ; sil ny a aucune c-utilisation, il suffit davoir un chemin dr-strict entre la définition et lune des p-utilisation. 67

68 Critère tous-les-p-utilisateurs/quelques-c- utilisateurs -exemple 68

69 Limite du critère tous-les-utilisateurs 69

70 Critère tous-les-du-chemins 70

71 Hiérarchie des critères basés sur le flot de données 71

72 Méthodes de test structurel basés sur la couverture du flot de données -Exercice 72

73 Méthodes de test structurel basés sur la couverture du flot de données -Solution 73

74 1.3 Critères de couverture basés sur les fautes –le test mutationnel 74

75 Le test mutationnel Cette technique vise à évaluer les Données de Tests vis-à-vis de la liste des fautes les plus probables qui ont été envisagées (modèles de fautes). Les mutations correspondent à des transformations syntaxiques élémentaires de programme Pour un programme P, soit M(P) lensemble de tous les mutants obtenus par le modèle de faute. Certains mutants peuvent avoir le même comportement que P, noter E(P). On fait exécuter la suite de tests T à chacun des mutants de M(P) et on note DM(P) lensemble de ceux qui ne fournissent pas le même résultat que P. Le score de mutation MS(P,T) correspond à: 75

76 Le test mutationnel -Synthèse Le test mutationnel est plus une approche pour évaluer la qualité dune suite de tests : combien de mutants fonctionnellement distinguables sont «tués», Cette méthode est couteuse de mise en oeuvre, en particulier pour établir les mutants fonctionnement distinguables des autres => test mutationnel faible : que sur des composants élémentaires 76

77 Règles de mutations dopérateurs (instructions) 77

78 Opérateurs de mutations (Statecharts) 78

79 2. Méthodes de test fonctionnel Le test fonctionnel vise à examiner le comportement fonctionnel du logiciel et sa conformité avec la spécification du logiciel => Sélection des Données de Tests ( DT) Méthodes du test fonctionnel Analyse partitionnelle des domaines des données dentrée et test aux limites test déterministe Test combinatoire –Algorithmes Pairwise Test aléatoire Génération automatique de tests à partir dune spécification 79

80 Analyse partitionnelledes domaines des données dentrée et test aux limites 80

81 Analyse partitionnelleet test aux limites – synthèse Lanalyse partitionnelle est une méthode qui vise à diminuer le nombre de cas de tests par calcul de classes déquivalence importance du choix de classes déquivalence : risque de ne pas révéler un défaut Le choix de conditions dentrée aux limites est une heuristique solide de choix de données dentrée au sein des classes déquivalence cette heuristique nest utilisable quen présence de relation dordre sur la donnée dentrée considérée. Le test aux limites produit à la fois des cas de test nominaux (dans lintervalle) et de robustesse (hors intervalle) 81

82 Analyse partitionnelle et test aux limites – Combinaison des valeurs dentrée 82

83 Test aux limites -Evaluation Méthode de test fonctionnel très productive : le comportement du programme aux valeurs limites est souvent pas ou insuffisamment examiné Couvre lensemble des phases de test (unitaires, dintégration, de conformité et de régression) Inconvénient : caractère parfois intuitif ou subjectif de la notion de limite Difficulté pour caractériser la couverture de test. 83

84 2.2. Méthode pour le test combinatoire Les combinaisons de valeurs de domaines dentrée donne lieu a explosion combinatoire Exemple : Options dune boite de dialogue MS Word 84

85 Test combinatoire : approche Pairwise Tester un fragment des combinaisons de valeurs qui garantissent que chaque combinaison de 2 variables est testé Exemple : 4 variables avec 3 valeurs possibles chacune 85

86 Pairwise testing 86

87 Test combinatoire Lapproche Pairwisese décline avec des triplets, des quadruplets, …. mais le nombre de tests augmente très vite Une dizaine doutils permette de calculer les combinaisons en Pairwise(ou n-valeurs) : Prise en charge des exclusions entre valeurs des domaines et des combinaison déjà testée Exemple : outil Pro Test Problème du Pairwise: le choix de la combinaison de valeurs nest peut-être pas celle qui détecte le bug … Le résultat attendu de chaque test doit être fournis manuellement 87


Télécharger ppt "Cours Qualité et Tests Chapitre 3 : Tests Responsables du cours : Héla Hachicha Hatem Ben Sta Inès Benjaâfar Année Universitaire : 2012 - 2013."

Présentations similaires


Annonces Google