Approche de modélisation des tests de logiciels complexes par un système multi-agents



Documents pareils
Qualité du logiciel: Méthodes de test

Quatrième partie IV. Test. Test 15 février / 71

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Analyse,, Conception des Systèmes Informatiques

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Cours 1 : La compilation

Développement itératif, évolutif et agile

Chapitre 1 : Introduction aux bases de données

modélisation solide et dessin technique

2. Activités et Modèles de développement en Génie Logiciel

Le génie logiciel. maintenance de logiciels.

Test et Validation du Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Annexe : La Programmation Informatique

Processus d Informatisation

Vérification et Validation

Vérifier la qualité de vos applications logicielle de manière continue

Machines virtuelles Cours 1 : Introduction

Cours 1 : Qu est-ce que la programmation?

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours de Master Recherche

ORACLE TUNING PACK 11G

Modernisation et gestion de portefeuilles d applications bancaires

Gé nié Logiciél Livré Blanc

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Génie logiciel pour le commerce électronique Hiver 2003 Prof.: Julie Vachon

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

RÉUSSIR L AUTOMATISATION DU PROCESSUS DE TEST FONCTIONNEL

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Analyse structurée de solutions pour BMC Remedy IT Service Management v 7

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

Nom de l application

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

MASTER SIS PRO : logique et sécurité DÉTECTION D INTRUSIONS. Odile PAPINI, LSIS. Université de Toulon et du Var. papini@univ-tln.

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Comité Français des Tests Logiciels. Testeur Certifié. Version 2012

La gestion des problèmes

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

ITIL V2. La gestion des incidents

Chapitre VI- La validation de la composition.

Une SGDT simple pour entreprises

Chapitre I : le langage UML et le processus unifié

Projet Active Object

Quels outils pour prévoir?

Introduction à la méthodologie de la recherche

ITIL V3. Transition des services : Principes et politiques

NORME INTERNATIONALE D AUDIT 330 PROCÉDURES A METTRE EN ŒUVRE PAR L'AUDITEUR EN FONCTION DE SON ÉVALUATION DES RISQUES

Cours de Génie Logiciel

Les risques liés à l activité de l entreprise : quels outils pour les identifier?

ITIL V3. Objectifs et principes-clés de la conception des services

OCL - Object Constraint Language

Risques liés aux systèmes informatiques et de télécommunications

Nom-Projet MODELE PLAN DE MANAGEMENT DE PROJET

FORMATION CONTINUE SUR L UTILISATION D EXCEL DANS L ENSEIGNEMENT Expérience de l E.N.S de Tétouan (Maroc)

Principe et règles d audit

Fiche méthodologique Rédiger un cahier des charges

INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

Travaux soutenus par l ANR. Jean-François CAPURON (DGA) Bruno LEGEARD (Smartesting)

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

2. Technique d analyse de la demande

Évaluation et implémentation des langages

Sujet de thèse CIFRE RESULIS / LGI2P

1 Introduction à l infrastructure Active Directory et réseau

Guide d implémentation des ISBN à 13 chiffres

Génie logiciel (Un aperçu)

NORME INTERNATIONALE D AUDIT 330 REPONSES DE L AUDITEUR AUX RISQUES EVALUES

Structure typique d un protocole de recherche. Préparé par Johanne Desrosiers dans le cadre d une formation au réseau FORMSAV

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet

Méthode de sureté de fonctionnement pour une maintenance efficace Application à un poste électrique (60/10KV)

MÉTHODOLOGIE DE L ASSESSMENT CENTRE L INSTRUMENT LE PLUS ADÉQUAT POUR : DES SÉLECTIONS DE QUALITÉ DES CONSEILS DE DÉVELOPPEMENT FONDÉS

Conception d une infrastructure «Cloud» pertinente

Introduction à l évaluation des besoins en compétences essentielles

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Design centré sur l utilisateur et développement Agile : perspectives de réconciliation

Les diagrammes de modélisation

But de cette présentation

Plateforme de capture et d analyse de sites Web AspirWeb

Conception des systèmes répartis

Manuel de recherche en sciences sociales

CONFÉRENCE EUROPÉENNE DES MINISTRES DES TRANSPORTS EUROPEAN CONFERENCE OF MINISTERS OF TRANSPORT

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Bureau du surintendant des institutions financières. Audit interne des Services intégrés : Services de la sécurité et de l administration

UE Programmation Impérative Licence 2ème Année

Architecture des ordinateurs. Environnement Windows : sauvegarde

Le test automatisé des applications web modernes

Introduction Les architectes Les utilisateurs expérimentés Les créateurs de contenu Les chefs de projet Les documentalistes

d évaluation Objectifs Processus d élaboration

IBM Tivoli Monitoring, version 6.1

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

La gestion des contraintes pour modéliser les stratégies humaines d'ordonnancement et concevoir des interfaces homme-machine ergonomiques

Comment se servir de cet ouvrage? Chaque chapitre présente une étape de la méthodologie

Transcription:

Ministère de l Enseignement Supérieur et de la Recherche Scientifique Institut National de Formation en Informatique (INI) Oued Smar MEMOIRE Pour l'obtention du diplôme de MAGISTER EN INFORMATIQUE (Option Systèmes d'informations) Approche de modélisation des tests de logiciels complexes par un système multi-agents Réalisé par : M me HADJ-BOUAZZA née M RAOUI Kamila Devant le jury composé de : Président : Mme H. DRIAS Professeur à l'usthb Rapporteur : Mr M. AHMED NACER Professeur à l'usthb Examinateur : Mme Z. ALIMAZIGHI Maître de conférence à l'usthb Examinateur : Mr D.E. ZEGOUR Professeur à l'ini INI, 2006

Remerciements Je tiens à exprimer toute ma gratitude à mon directeur de thèse le professeur M. Ahmed Nacer qui m a fait confiance en acceptant de m encadrer, m a transmis la motivation nécessaire pour mener à bien ce travail ; merci pour votre disponibilité, vos précieux enseignements et vos conseils avisés. Pour m avoir fait l honneur de présider mon jury, je tiens à remercier Mme H. Drias. Je remercie également Mme Z. Alimazighi et Mr D.E. Zegour de me faire l'honneur de faire partie du jury pour juger mon travail.,je remercie : - Les membres de l équipe de la Division Systèmes d'informations (DSI) du Cerist, en particulier Mme F. Admane, Melles Hamida, Lydia, Safia,... - Le personnel de la DPGR et de la bibliothèque de l INI. - Le personnel de la bibliothèque du Cerist en particulier Mr Meftouh. Je tiens à exprimer ma reconnaissance à Mme H. Mellah et Melle L. Mohand-Oussaid pour toute l aide et le soutien qu elles m ont apportés. Je tiens à dire un grand MERCI à toute ma famille, du plus petit au plus grand, pour leurs encouragements, leur soutien, leur patience et leur aide considérable. A Aziz pour sa patience et sa disponibilité, A ma petite Mellina, à ma grande Hafso, A ma mère, pour avoir suscité ma vocation, A mon père, pour ses conseils avisés qui m ont permis d acquérir un esprit de synthèse.

Résumé Le test logiciel représente un des moyens les plus efficaces permettant de s assurer du bon fonctionnement des logiciels particulièrement complexes. Mais, le processus de test logiciel en lui-même est assez complexe dans la mesure où un certain nombre de problèmes complexes se posent. Ces problèmes requièrent des solutions adaptées où le temps et l efficacité jouent un rôle important. L automatisation partielle ou globale du processus de test est donc primordiale voir déterminante. Dans cette optique, nous proposons une approche de modélisation du processus de test logiciel par un système multi-agents qui vise à automatiser ce processus. Le système proposé est constitué d agents capables de mener aussi bien les tests dynamiques que les tests statiques d un logiciel. Ces agents sont conçus pour conduire les tests de différents niveaux (unitaires, intégration et système), ainsi que les tests de régression. Les agents de notre système fonctionnent de façon autonome afin d atteindre le taux de détection d erreurs et les délais fixés par le testeur (humain) au départ. Mots-clés : Tests logiciels, agent, système multi-agents, modélisation.

SOMMAIRE INTRODUCTION GÉNÉRALE... 1 CHAPITRE I : LES TESTS LOGICIELS... 3 I.1 INTRODUCTION... 3 I.2 DEFINITIONS... 4 I.3 LES NIVEAUX DE TESTS... 5 I.3.1 Les tests unitaires... 6 I.3.2 Les tests d intégration... 7 I.3.3 Les tests système... 9 I.3.4 Les tests d acceptation... 10 I.4 LES TYPES DE TESTS... 11 I.4.1 Classification des techniques de test... 11 I.4.2 Comparaison des techniques de test... 20 I.5 LE PROCESSUS DE TEST... 21 I.5.1 Phase 1 : modélisation de l environnement du logiciel... 22 I.5.2 Phase 2 : sélection des scénarios de tests... 24 I.5.3 Phase 3 : exécution et évaluation des scénarios de tests... 24 I.5.4 Phase 4 : mesure de la progression des tests... 25 I.6 CONCLUSION... 26 CHAPITRE II : LES SYSTEMES MULTI-AGENTS... 27 II.1 INTRODUCTION... 27 PARTIE 1 : ETAT DE L ART... 29 II.2 LES AGENTS... 29 II.2.1 Définition d un agent... 29 II.2.2 Modèle d agent [BON94]... 31 II.2.3 Les types d agents... 32 II.3 SYSTÈME MULTI-AGENT (SMA)... 38 II.3.1 Définition d un SMA... 38 II.3.2 Environnement d un système multi-agent... 40 II.3.3 L organisation dans un système multiagent... 41 II.3.4 Coopération entre agents... 42 i

II.3.5 Résolution de conflits... 43 II.3.5.1 Coordination... 43 II.3.5.2 Négociation... 44 II.3.6 Communication entre agents... 44 II.3.7 Contrôle et prise de décision... 48 II.3.8 Conception d un système multi-agent... 48 II.3.8.1 Spécification d un agent... 49 II.3.8.2 Spécification des interactions... 50 PARTIE 2 : LES SMA ET LES TESTS LOGICIELS... 52 II.4 Travaux sur la modélisation des tests logiciels par les SMA... 52 II.5 Discussions... 56 II.6 CONCLUSION... 57 CHAPITRE III : CONCEPTION... 58 III.1 INTRODUCTION... 58 III.2 Découpage du problème global en sous-problèmes... 58 III.3 Architecture du SMA pour la modélisation du processus global de test... 61 III.3.1 Spécification des agents... 62 III.3.2 Modélisation globale du processus de test... 64 III.3.2.1 Modélisation du processus de tests unitaires... 64 III.3.2.2 Modélisation du processus de tests d intégration... 68 III.3.2.3 Modélisation du processus de tests système... 72 III.3.2.4 Modélisation du processus de tests statiques... 75 III.3.2.5 Modélisation du processus de tests de régression... 78 III.3.2.6 Modélisation du processus de mesure de la progression des tests... 82 III.4 CONCLUSION... 84 CONCLUSION GÉNÉRALE... 85 BIBLIOGRAPHIE... 87 ii

Liste des figures : Figure 1 : Niveaux de tests... 5 Figure 2 : Processus de test unitaire...7 Figure 3 : Graphe d appels entre unités (exemple)... 8 Figure 4 : Classification des tests... 12 Figure 5 : Les étapes du processus d inspection... 13 Figure 6 : Tests «boite noire»... 17 Figure 7 : Tests «boite blanche»... 17 Figure 8 : Processus de test dynamique... 22 Figure 9 : Aperçu externe et général d un agent [MAN02]... 29 Figure 10 : Représentation d un agent... 31 Figure 11 : Modèle d agent [BON94]... 31 Figure 12 : Structure interne d un agent... 33 Figure 13 : Architecture fonctionnelle d un agent cognitif... 34 Figure 14 : Fonctionnement d un agent réactif... 37 Figure 15 : Vue canonique d un système multiagent [JEN00]... 39 Figure 16 : Système multi-agent... 40 Figure 17 : Architecture du modèle de tableau noir... 45 Figure 18 : communication par envoi de messages... 47 Figure 19 : Les agents du TAS... 52 Figure 20 : représentation du système multi-agent de Dhavachelvan et al. [DHA06]... 55 Figure 21 : Découpage du problème global en sous-problèmes... 59 Figure 22 : Processus global de test... 60 Figure 23 : Architecture globale du système multi-agents pour le processus de test logiciel.. 61 Figure 24 : Représentation graphique de l architecture de communication du processus tests unitaires... 65 Figure 25 : Diagramme d activité du processus de tests unitaires... 66 Figure 26 : Diagramme de séquence du scénario «parallélisation des tests unitaires»... 67 Figure 27 : Représentation graphique de l architecture de communication du processus de tests d intégration... 69 Figure 28 : Diagramme d activité du processus de tests d intégration... 70 Figure 29 : Diagramme de séquence du scénario «attente d une unité non disponible»... 71 iii

Figure 30 : Représentation graphique de l architecture de communication du processus tests système... 73 Figure 31 : Diagramme d activité du processus de tests système... 74 Figure 32 : Représentation graphique de l architecture de communication du processus de tests statiques... 75 Figure 33 : Diagramme d activité du processus de tests statiques... 76 Figure 34 : Diagramme de séquence du scénario «analyse statique formelle»... 77 Figure 35 : Représentation graphique de l architecture de communication du processus tests de régression... 79 Figure 36 : Diagramme d activité du processus de tests de régression... 80 Figure 37 : Diagramme de séquence du scénario «non adéquation des cas de tests»... 81 Figure 38 : Représentation graphique de l architecture de communication du processus de mesure de la progression des tests... 82 Figure 39: Diagramme d activité du processus de mesure de la progression des tests... 83 Figure 40 : Diagramme de séquence du processus «mesure de la progression des tests»... 83 iv

Liste des tableaux : Tableau 1 : Comparaison entre les tests «boite noire» et les tests «boite blanche»... 20 Tableau 2 : Comparatif entre Agents cognitifs et Agents réactifs [REI90]... 38 Tableau 3 : Interdépendances entre sous-problèmes... 59 v

Introduction générale INTRODUCTION GÉNÉRALE La complexité des logiciels devient de plus en plus importante de nos jours. Les tests logiciels sont le moyen de s assurer du bon fonctionnement des logiciels particulièrement complexes. Par exemple dans le cas de logiciels critiques, les conséquences d une erreur peuvent être très graves (pertes humaines). C est pourquoi des chercheurs, comme des industriels, travaillent au développement de méthodes et d outils efficaces pour automatiser les tests logiciels [GOU04]. D un autre coté, le coût élevé des tests logiciels a lui aussi montré que la nécessité d automatiser les tests devient donc impérative. En effet, l étude menée pour le NIST en 2002 [NIS02] sur l impact de l insuffisance d infrastructure de test dans les développements de logiciels a montré le coût excessif de cette insuffisance qui a été estimé à 60 milliards de dollars pour l économie américaine. Ces aspects importants liés aux tests logiciels nous ont particulièrement motivés dans notre travail. L étude du processus de test logiciel nous a mené au constat qu un certain nombre de problèmes assez complexes existent et sont à résoudre comme par exemple l automatisation des tests statiques, la mesure de la progression des tests, ou la conduite des tests de régression. L approche de résolution par un système multiagents paraît donc appropriée. Les systèmes multi-agents (SMA) permettent de faire coopérer un ensemble d agents dotés d un comportement intelligent et de coordonner leurs buts et leurs plans d actions pour résoudre un problème. 1

Introduction générale Le but de notre travail est de proposer une approche de modélisation du processus de test par un système multi-agents. Notre document est organisé en trois chapitres : Le chapitre 1 est une introduction aux tests logiciels. Nous y détaillons les différentes notions relatives au domaine des tests logiciels telles que les techniques utilisées, le processus de test, les niveaux de tests, Le chapitre 2 est structuré en deux parties. Dans la première partie, nous présentons un état de l art sur les systèmes multi-agents. Nous y présentons les différentes définitions relatives au concept «agent». Dans la deuxième partie, nous présentons un résumé de travaux réalisés dans la modélisation des tests logiciels avec le concept d agent. Le chapitre 3 est consacré à la présentation de notre proposition d approche de modélisation du processus de test par un système multi-agents. Cette approche est basée sur un groupe d agents qui interagissent entre eux pour conduire au mieux les tests statiques et les tests dynamiques à différents niveaux de tests (unitaires, intégration, système). 2

Chapitre I : LES TESTS LOGICIELS Chapitre I : Les tests logiciels I.1 INTRODUCTION Afin de savoir si un logiciel ne comporte pas d anomalies et répond aux attentes des utilisateurs, les développeurs doivent le soumettre à des tests. Procéder aux tests de logiciels n est pas un processus visant seulement à détecter les éventuelles anomalies, mais aussi à acquérir la confiance nécessaire avant l utilisation opérationnelle du produit logiciel en vue d atteindre la qualité voulue. Vu les coûts liés aux tests en temps et en budget, les développeurs ne procèdent pas systématiquement aux tests de leurs logiciels. En fait, les tests sont indispensables pour des logiciels soumis à d importantes contraintes de sécurité et de fiabilité. En réalité, le problème réside dans la capacité à mettre au point des tests, qui exigent le moins de temps possible dans leur conception et leur mise en œuvre, pour obtenir les résultats (détection d erreurs) les plus performants possibles. Dans ce chapitre nous allons explorer le domaine des tests de logiciels afin de mieux cerner le processus global de test de logiciel. 3

Chapitre I : LES TESTS LOGICIELS I.2 DEFINITIONS Avant toute chose, nous allons tenter de définir ce qu est le test de logiciels ainsi que certaines notions utilisées dans ce domaine. Cette définition est issue de la norme IEEE 729: «Le test est un processus manuel ou automatique, qui vise à établir qu un système vérifie les propriétés exigées par sa spécification, ou à détecter des différences entre les résultats engendrés par le système et ceux qui sont attendus par la spécification». Une autre définition [SWE04]: «le test de logiciel consiste en la vérification dynamique du fonctionnement d'un programme sur un ensemble fini de cas de test, convenablement sélectionné parmi le domaine infini d'exécutions, en fonction des spécifications prévues.». Selon Myers [MYE04] : «Le test de logiciel est un processus, ou une série de processus, conçus pour s assurer que le code du logiciel accomplit ce pour quoi il a été conçu, et qu il n accomplit pas d autres choses inattendues». La vérification est «le processus d évaluation d un produit issu d une des activités du développement logiciel, pour déterminer la correction et la cohérence avec les produits ou les normes fournis comme entrée de cette activité» [DOD88]. La vérification sert à répondre à la question : est-ce un système bien fait, conformément aux règles de l art? La validation est «le processus d évaluation d un logiciel pour déterminer sa conformité avec les besoins spécifiés» [DOD88]. Par la validation nous tentons de répondre à la question : est-ce le bon système, répondant aux besoins réels des utilisateurs? Une erreur (error) est une différence entre une valeur ou une condition calculée, observée ou mesurée et la valeur ou condition spécifiée, qui est vraie ou théoriquement correcte [IEE90]. Une faute ou un défaut (fault) est une collection d états du code source d un programme qui cause une panne. [IEE90] 4

Chapitre I : LES TESTS LOGICIELS Une panne ou défaillance (failure) est : «l incapacité d un système ou d un de ses composants d effectuer les fonctions demandées dans les conditions de performance spécifiées» [IEE90]. Un oracle de test est une spécification des résultats attendus par le test, qui permet de décider de l échec ou le succès du test. Remarque : les définitions données ci-dessus sont standards dans le domaine du «test logiciel», elles sont différentes de celles utilisées dans le domaine de la «tolérance aux fautes». On déduit, à partir des définitions précédentes, que pour bien conduire les tests, il faudra d abord formuler les fonctionnalités attendues, les contraintes d environnement, ou encore les situations particulières à considérer. Le principal objectif du test de logiciel est de détecter les erreurs pour garantir : La correspondance entre le produit livré et ses spécifications fonctionnelles, et L absence d anomalies l empêchant de fonctionner. I.3 LES NIVEAUX DE TESTS On distingue 4 niveaux de test : 1. Les tests unitaires, 2. Les tests d intégration, 3. Les tests système et 4. Les tests d acceptation. A chaque niveau de test les buts sont spécifiques. Tests unitaires Tests d intégration Tests système Tests d acceptation Figure 1 : Niveaux de tests 5

Chapitre I : LES TESTS LOGICIELS Pour tous les types de systèmes, on commence toujours par tester la plus petite unité ou module afin d identifier les fautes fonctionnelles et structurelles, c est ce qu on appelle les tests unitaires. Une fois les tests unitaires effectués et les corrections nécessaires faites, on doit intégrer les différentes unités pour construire le système et tester l intégration. Au niveau des tests d intégration on s intéresse particulièrement aux interfaces. Le test du système commence lorsque tous les composants ont été intégrés avec succès. A ce niveau l accent est mis sur l évaluation de la performance, l utilisabilité, la fiabilité et d autres spécifications relatives à la qualité. L étape suivante est le test d acceptation, qui doit montrer que le produit logiciel satisfait les besoins des utilisateurs. A l issue de cette étape, on devra obtenir un produit validé. I.3.1 Les tests unitaires Une unité est vue comme une fonction ou une procédure implémentée dans un langage procédural. Dans un système orienté-objet, les méthodes et les classes/objets ont été suggérées par les chercheurs comme un choix d unité [BUR02]. Une unité peut représenter également un composant COTS (Component Off The Shelf) de petite taille acheté de chez un vendeur externe et qui subit l évaluation par l acheteur, ou un simple composant récupéré d une librairie de composants réutilisables interne. Les tests unitaires représentent un niveau de test vital. Plus les unités sont petites et simples, plus il sera facile de les tester. Lorsqu une défaillance est révélée par les tests, il est plus facile de la localiser et de la réparer (débogage) du moment que l on ne considère que l unité sous test. Les tests unitaires introduisent le parallélisme dans le processus de test du fait de la possibilité de tester plusieurs unités simultanément. Le but principal des tests unitaires est de comparer les fonctions d une unité par rapport à certaines spécifications. En fait, on ne cherche pas à montrer qu une unité satisfait ses spécifications mais à montrer le contraire, c est-à-dire qu elle contredise ses spécifications. Les tests unitaires sont menés en se basant sur le plan de tests unitaires conçu à l étape de «conception détaillée» du cycle de vie du logiciel. Ce plan met en évidence les spécifications à tester pour chaque unité. Donc, pour préparer les tests unitaires les développeurs ou les testeurs doivent accomplir un certain nombre de tâches : - planifier l approche générale pour effectuer le test des unités ; - concevoir les cas de test, et les procédures de test ; - définir les relations entre les tests ; 6

Chapitre I : LES TESTS LOGICIELS - préparer le code auxiliaire nécessaire pour le test unitaire. La conception des cas de test unitaires : La conception des tests unitaires nécessite deux éléments : une spécification de l unité et son code source. Typiquement, la spécification définit les entrées et les sorties de l unité. Les tests unitaires sont en grande partie orientés «boite blanche». Mais lorsqu on teste de grandes unités comme le programme entier, les tests «boite blanche» deviennent moins efficaces [BUR02]. Les tests unitaires sont également appelés tests de composants. Toutefois, les tests de composants sont parfois classés à un niveau de tests plus élevé que les tests unitaires. Cela peut être le cas des systèmes contenant des composants pouvant être testés individuellement, et qui contiennent eux-mêmes plusieurs unités. Dans d'autres cas, certains font la différence entre tests unitaires et tests de composants en fonction du degré d'isolement des modules. Dans les tests unitaires, les unités appelées sont remplacées par des bouchons (stubs), et les unités appelantes sont remplacées par des pilotes (drivers), de façon à isoler les unités en cours de test. U i (unité à tester) P i (plan de tests de U i ) Cas de Tests pour U i Test unitaire Rapport de test de U i Procédure de test de U i Figure 2 : Processus de test unitaire I.3.2 Les tests d intégration Dans les tests unitaires, le testeur tente de détecter les fautes relatives aux fonctionnalités et la structure de l unité. Quelques tests d interface simples sont réalisés lorsque les unités interagissent avec des pilotes (drivers) et des bouchons (stubs). Par ailleurs, les interfaces sont plus adéquatement testées lors des tests d intégration lorsque chaque unité est connectée aux unités avec lesquelles elle interagit. L assemblage ou le 7

Chapitre I : LES TESTS LOGICIELS processus d intégration permet de constituer un système complet prêt à être testé lors de la phase suivante «tests système». Les tests d intégration devraient être exécutés sur des unités qui ont été corrigées et qui ont passé les tests unitaires avec succès. Pour effectuer les tests d intégration, il faudra adopter une stratégie d intégration. Il existe plusieurs stratégies parmi les plus connues : la stratégie top-down, la stratégie bottom-up, et la stratégie big-bang. Les tests d intégration se basent sur le graphe d appel entre les unités. En se basant sur le graphe d appel, il sera plus simple d appliquer la stratégie choisie. U1 U2 U3 U4 U5 Figure 3 : Graphe d appels entre unités (exemple) La stratégie TOP-DOWN (descendante): Le test d intégration «Top-Down» consiste à intégrer les unités en commençant par la racine du graphe (sommet). La première unité est ainsi intégrée aux unités qu elle appelle au fur et à mesure, puis la même procédure est appliquée pour chaque unité intégrée [MYE04]. Dans l exemple de la Figure 3, l intégration Top-Down se fera comme suit : on teste l intégration de U1 avec U2, puis on teste l intégration de (U1+U2) avec U3, puis on teste l intégration de (U1+U2+U3) avec U4, puis on teste l intégration de (U1+U2+U3+U4) avec U5. La stratégie BOTTOM-UP(ascendante) : L intégration «Bottom-Up» consiste à intégrer les unités en commençant par les unités qui sont à la base du graphe (feuilles). Ces unités sont d abord testées (tests unitaires), puis pour 8

Chapitre I : LES TESTS LOGICIELS chaque unité on intègre, au fur et à mesure, les unités qui l invoquent. La même procédure est appliquée pour chaque unité intégrée [MYE04]. Dans l exemple de la Figure 3, l intégration Bottom-Up se fera comme suit : on teste l intégration de U5 avec U3, puis on teste l intégration de (U5+U3) avec U4, puis on teste l intégration de (U5+U3+U4) avec U2, puis on teste l intégration de (U5+U3+U4+U2) avec U1. La stratégie BIG-BANG : Le test d intégration «Big-Bang» consiste à assembler toutes les unités en même temps et à exécuter l ensemble. Cette technique n est pas adaptée aux systèmes complexes, car les erreurs sont difficilement localisables. Une intégration big-bang progressive, c est-à-dire l intégration d une ou de quelques unités à la fois, est plus efficace pour la localisation des erreurs [HAN02]. Dans l exemple de la Figure 3, l intégration Big-Bang se fera comme suit : On teste l intégration de (U1+U2+U3+U4+U5). I.3.3 Les tests système Les objectifs des tests système sont de détecter les fautes relatives au comportement du système global, plutôt que le comportement de chacun des éléments, et de tester le logiciel dans son fonctionnement global. Ce niveau d'évaluation implique le système dans sa globalité, et pas seulement les interactions entre unités. Le but des tests système est de s assurer que le système est en accord avec les besoins. A cette étape, les testeurs doivent disposer d un plan de tests système élaboré à l issue de l étape d analyse des besoins. Ce plan doit contenir un plan de tests maître et les tests boite noire à effectuer. Il doit contenir, aussi, les approches de tests à utiliser, les coûts et les délais à respecter, les cas de tests et les procédures de tests. Les tests système permettent d évaluer les caractéristiques de la qualité requises telles que la fiabilité, l utilisabilité, la performance et la sécurité. A ce stade, il sera spécialement utile de pouvoir détecter des défaillances dans les interfaces logicielles et matérielles externes, par exemple, celles qui causent des conditions extrêmes, des verrous, des problèmes d interruption et de traitement des exceptions, et l utilisation inefficace de la mémoire. Afin de tester les différentes caractéristiques de la qualité, il existe plusieurs types de tests système parmi eux [MYE04][JAC03]: 9

Chapitre I : LES TESTS LOGICIELS 1. les tests de fonctionnalité : consistent à tester si le système accomplit les fonctions pour lesquelles il a été conçu. 2. les tests de volume : consistent à tester si le système est capable de manipuler un gros volume de données spécifié dans les besoins. 3. les tests de stress : consistent à tester la réaction du système face à une charge de traitements importante dans un temps limité. On teste, ici, s il n y pas de problèmes de manque de ressources ou de concurrence pour l utilisation des ressources. 4. les tests d utilisabilité : ce type de tests s intéresse au facteur humain. Il s agira de sélectionner un sous ensemble représentatif d utilisateurs potentiels afin de tester le système. 5. les tests de sécurité : consistent à tester les propriétés de sécurité que le système doit assurer telles que la disponibilité, l intégrité, la confidentialité des données et des services. Le but de ces tests est de révéler les failles de sécurité. 6. les tests de performance : consistent à tester la performance du système en révélant ses défaillances en terme de temps de réponse ou encore de capacité de traitement sous certaines conditions. 7. les tests de configuration : consistent à tester le système de façon à vérifier s il fonctionne dans les différentes configurations (réseaux, systèmes d exploitation, ) pour lesquelles il a été conçu. 8. les tests de fiabilité : consistent à tester les propriétés de fiabilité du système spécifiées dans les besoins. I.3.4 Les tests d acceptation Une fois les tests système achevés, on passe à l étape des tests d acceptation. Les tests d acceptation consistent à mettre le logiciel à la disposition du client afin que les utilisateurs potentiels puissent l évaluer dans les conditions réelles. Un plan de test est conçu en collaboration avec les clients afin de déterminer les cas de test à considérer lors des tests d acceptation. Pour les logiciels destinés à un client précis, on parle de tests d acceptation. Alors que pour les logiciels complexes destinés à un large marché, on parle de tests Alpha et de tests Béta. Les tests Alpha sont faits sur le site du développeur par les utilisateurs potentiels. Les développeurs relèvent les problèmes rencontrés afin de les corriger. 10

Chapitre I : LES TESTS LOGICIELS Les tests Béta sont faits en dehors du site du développeur, les utilisateurs potentiels testeront ainsi le logiciel dans des conditions réelles, et rapportent les problèmes rencontrés aux développeurs. I.4 LES TYPES DE TESTS Les différentes approches de tests (dynamique et statique) sont importantes, car le but est de détecter la présence de fautes ou de prouver leur absence. La première définition du test de logiciels, présentée précédemment, fait ressortir deux types de test : les tests statiques et les tests dynamiques, et donc assimile la vérification au test de logiciel. Alors que la deuxième définition ne considère que la partie dynamique de la vérification comme faisant partie de l activité de test. I.4.1 Classification des techniques de test Les différentes techniques de tests peuvent être classées en fonction de la stratégie de test choisie. Ainsi, Huey-Der Chu [CHU97] propose une classification selon le but des tests : 1. doit-on exécuter le logiciel pour le tester? si oui, le test sera dynamique, sinon le test sera statique. 2. doit-on examiner le code source dans le test dynamique? si oui, on utilisera le test boite blanche, sinon ce sera le test boite noire. 3. doit-on examiner la syntaxe du code source dans le test statique? si oui, on fera un test syntaxique, sinon un test sémantique. 4. comment se fait la sélection des données de test? les données de tests sont sélectionnées selon que la technique utilisée soit un test fonctionnel, un test structurel ou encore un test aléatoire. 5. quel type de données de test doit être généré? dans le test déterministe, les données de test sont prédéterminées par un choix sélectif en fonction du critère adopté. Dans le test aléatoire, les données de test sont générées en fonction d une distribution de probabilité sur l ensemble des données de tests possibles (input domain). 11

Chapitre I : LES TESTS LOGICIELS Tests logiciels Statique Dynamique Syntaxique Sémantique Boite noire Boite grise Boite blanche Figure 4 : Classification des tests Dans ce qui suit, nous allons détailler les différentes techniques de tests. Les techniques de test existantes sont divisées en deux catégories : les tests statiques et les tests dynamiques. Les techniques de tests statiques sont utilisées pour examiner le logiciel sans l exécuter ; les techniques de tests dynamiques requièrent la génération de cas de tests pour l exécution du logiciel. I.4.1.1 Les tests statiques Les techniques de tests statiques permettent d examiner, de façon manuelle ou automatique, les représentations du système (documents de spécifications, diagrammes de conception, code source du logiciel, ) sans avoir à exécuter le code du logiciel. Le but étant de s assurer qu aucune erreur n a été introduite durant le processus de développement du logiciel, donc la vérification des spécifications est ici très importante. Les tests statiques peuvent porter sur l examen de la syntaxe ou de la sémantique du code source. On peut diviser les techniques de tests statiques en deux groupes, les techniques informelles et les techniques formelles. Dans la pratique, les techniques informelles sont axées sur l examen de la syntaxe, alors que les techniques formelles sont plus axées sur l examen de la sémantique. Parmi les techniques de tests statiques les plus utilisées, il y a les inspections de programmes, l analyse des anomalies, l évaluation symbolique, et la vérification formelle basée sur les mathématiques. 12

Chapitre I : LES TESTS LOGICIELS a) Les techniques informelles Parmi les techniques de tests informelles, il y a les inspections, l analyse des anomalies, et l évaluation symbolique. a.1. L inspection de programme : L inspection de programme est une sorte de revue. Les revues sont de trois types [SOM92] : - les revues relatives aux décisions de gestion de projet, - les revues relatives à la stratégie de conception, et - les revues qui visent à vérifier le logiciel, qui sont parfois appelées «inspections de programme». Le but d une inspection est d analyser le code et d indiquer les défauts possibles qui s y trouvent. Les inspections de programme peuvent aussi être utilisées pour l examen statique de tout produit logiciel qui résulte de n importe quel stade du processus de développement logiciel (spécification des besoins, conception, documentation, ). Une inspection suit un processus structuré. En général, une inspection est entreprise par une petite équipe composée d un minimum de quatre personnes. Les rôles des membres de l équipe sont répartis comme suit : L auteur : qui est le programmeur ou le concepteur du ou des composants à inspecter. Le lecteur, dont le rôle est de présenter le code à l équipe lors de l inspection. Le testeur qui inspecte le code du point de vue des tests (dynamiques). Le modérateur qui dirige l inspection et motive les autres membres de l équipe. Planification Panorama Préparation individuelle Inspection de programme Re-travail Ré-inspection Figure 5 : Les étapes du processus d inspection 13