Module Test et Qualité de logiciel

189
MODULE TEST ET QUALITÉ DE LOGICIEL Année universitaire [2010- 2011] Université Mentouri Département d’informatique Dr. Maamri Dr Maamri Ramdane 1

description

Année universitaire [2010-2011] Université Mentouri Département d’informatique Dr. Maamri. Module Test et Qualité de logiciel. Concepts fondamentaux de génie logiciel Développement d’un logiciel Etapes de développement Validation du logiciel Comparaison des moyens de validation - PowerPoint PPT Presentation

Transcript of Module Test et Qualité de logiciel

Bienvenue!

Module Test et Qualit de logicielAnne universitaire [2010-2011]

Universit MentouriDpartement dinformatiqueDr. MaamriDr Maamri Ramdane1Plan du coursConcepts fondamentaux de gnie logiciel

Dveloppement dun logicielEtapes de dveloppementValidation du logicielComparaison des moyens de validationLe cycle de vie du logiciel1. Le modle en tunnel2. Le modle en cascade3. Le modle en V4. Le modle itratif4 bis. Le modle en spiraleCritres de qualit dun logicielQualit et Assurance QualitEvaluer la qualit

Dr Maamri Ramdane2Les facteurs de la qualitDes critres de qualitRelations entre facteurs et critresMesureMise en place de la qualitTest de Logiciel

Dr Maamri Ramdane3Concepts fondamentaux de gnie logiciel

Dr Maamri Ramdane4 Caractristiques du logicielProduit uniqueconu et fabriqu une seule fois, reproduitInusabledfauts pas dus l'usure mais proviennent de sa conceptionComplexele logiciel est fabriqu pour soulager l'humain d'un problme complexe ; il est donc par nature complexeInvisibleFabrication du logiciel=activit purement intellectuelledifficult de perception de la notion de qualit du logicielTechnique non matureencore artisanal malgr les progrsDr Maamri Ramdane5ConstatsLe cot du dveloppement du logiciel dpasse souvent celui du matriel,Les cots dans le dveloppement du logiciel :20% pour le codage et la mise au point individuelle,30% pour la conception,50% pour les tests d'intgration,Dure de vie d'un logiciel de 7 15 ans,Le cot de la maintenance volutive et corrective constitue la part prpondrante du cot total ,Plus de la moiti des erreurs dcouvertes en phases de tests proviennent d'erreurs introduites dans les premires tapes,La rcupration d'une erreur est d'autant plus coteuse que sa dcouverte est tardive.Dr Maamri Ramdane6Les plaintes classiques des clientsNon respect du cahier des charges,Dlais et cots dpassant les prvisions,Maintenance corrective et volutive difficiles,Non respect des performances,Documentations absentes ou peu claires,Fiabilit discutable.

QUALITE du logiciel, Gnie logicielDr Maamri Ramdane7Gnie logicielEnsemble des activits de conception et de mise en uvre des produits et des procdures tendant rationaliser la production du logiciel et son suivi.Arrt ministriel Franaise du 30/12/1983

Procdures, mthodes, langages, ateliers, imposs ou prconiss par les normes, adapts l'environnement d'utilisation afin de favoriser la production et la maintenance de composants logiciels de qualit.P. JaulentDr Maamri Ramdane8Dveloppement dun logiciel

Caractristiques souhaites : Adquation avec les besoins Maintenance aise Bon march Rapidement dvelopp Comment ?Le gnie logiciel = outils + mthodesDr Maamri Ramdane9Etapes de dveloppement

Analyse (du problme)comprendre et recenser les besoins Spcification (par exemple cahier des charges) Conception (du logiciel)Prliminaire clater le logiciel en sous-parties dfinir les interfaces entre ces sous-partiesarchitecture du logicielDtailleprciser larchitecture des sous-parties Implantation- codageDr Maamri Ramdane10Activits du dveloppement de logiciels Lorganisation de ces activits et leur enchanement dfinit le cycle de dveloppement du logicielDr Maamri Ramdane11Dfinir ce qui sera dveloppDfinir comment il sera dveloppDvelopper undes composants Assembler lescomposants Valider le logiciel11Validation du logiciel Dfinition assurer la cohrence entre les besoins et le logiciel obtenu garantir au mieux labsence derreur Moyens prototyper :dvelopper et essayer une partie du logiciel concevoir tester :effectuer des essais de fonctionnement et vrifier le rsultat obtenu par rapport au rsultat attendu prouver : vrifier mathmatiquement la cohrence de la conception/du code par rapport la spcification (qui doit tre formelle)Dr Maamri Ramdane12Comparaison des moyensde validationConsquence : Preuve rserve aux systmes critiques Test toujours utilisDr Maamri Ramdane13InconvnientAvantageCibleCe qui est vrifiAucune garantiesur rsultatIntervient trs ttDveloppeursLa bonne comprhension du problmePrototyperIntervient la fin pas exhaustifFacilit de mise en oeuvreNombreux outilsProgrammeexcutUn comportement correctdans des cas bien prcisTesterLourd mettreen placeGarantie obtenueCode et/ouconceptionLa correction par rapport auxproprits spcifies formellementTesterLe cycle de vie du logiciel

Dr Maamri Ramdane141. Le modle en tunnelProblme

Caractristique absence de modle ! Utilisation A viter ! rserve aux petits projetsDr Maamri Ramdane15

2. Le modle en cascade Caractristiques phases bien identifies test : intervient tard est mal cadrDr Maamri Ramdane16

3. Le modle en VCaractristiques Modle en cascade amlior Le plus utilisDr Maamri Ramdane17Test de chaque fonction indpendammentTest de la composition entre modulesTest dune fonctionnalitTests fonctionnelsConceptionTests dintgrationAnalyseimplantationProgrammeTest s unitaires

4. Le modle itratif PrincipeA chaque tape, on rajoute de nouvelles fonctionnalits Caractristiques Chaque tape est relativement simple On peut tester et essayer au fur et mesure le logiciel que lon dveloppeDr Maamri Ramdane18

4 bis. Le modle en spiraleAutre vision du modle itratifDr Maamri Ramdane19

Modle en spirale Prototype incrmentalDr Maamri Ramdane20Cot cumulatifEvaluer les alternativesIdentifier et viter les risquesDvelopper et vrifier leprochain niveau du produitDterminer les objectifs,les alternatives, les contraintesOrganiser les phases suivantesPrvision besoinsprojetproto1proto2proto3ProtooprationnelAnalysedesrisquesConcevoiroprationsSimul.ModlesBenchmarksConceptiondtailleConceptionSpec.besoinsValider conceptionCodageTestsAcceptertestsOrganisationdveloppementIntgration et test de l'organisation du projetRevue critiqueProgresser par tapesIntroduction au qualit de logicielDr Maamri Ramdane21La qualit

Un ensemble de principes et de mthodes organises en stratgie globale, visant mobiliser toute lentreprise, en fonction dobtenir lentire satisfaction du client, et ce au moindre cot.

Dfinition de lAFCERQ, Association franaise des cercles de qualit

La qualit, cest laptitude dun produit satisfaire le besoin du client en respectant ses exigences de volume, de temps, de lieu et de cots.

Dfinition reconnue par la plupart des organisations nord-amricaines

Dr Maamri Ramdane22Selon l'IEEELa qualit logicielle est:(1) Le degr avec lequel un systme, un composant ou un processus satisfait ses exigences spcifies.(2) Le degr avec lequel un systme, un composant ou un processus satisfait aux besoins ou attentes de ses clients/usagers.Dr Maamri Ramdane23Quality means meeting requirements

With this definition, to have a quality product the requirements must be measurable, and the products requirements will either be met or not met.

Software testing and continuous quality improvementWilliam E. Lewis

Dr Maamri Ramdane24La qualitla Qualit logicielle Conformit aux exigences Sens le plus troit de qualit du logiciel absence de bugs bas ratio de dfauts (# de dfauts/unit de taille) haute fiabilit (nombre de pannes par n heures d'opration) Temps Moyen entre Pannes (Mean Time ToFailure MTTF)probabilit d'opration sans panne dans un temps spcifiDr Maamri Ramdane25Selon PressmanLa qualit logicielle est:Conformit aux exigences fonctionnelles et de performance explicites, aux normes de developpement explicitement documentes, et aux caractristiques implicites qui sont attendues de tout le logiciel professionnellement dveloppDr Maamri Ramdane26Importance de la qualit du logiciel Logiciel est une composante majeure des systmes informatiques (environ 80% du cot) utiliss pour communication (ex. syst. tlphone, syst. email) sant (monitoring), transport (ex. automobile, aronautique), changes conomiques (ex. ecommerce), entertainment, etc.Dr Maamri Ramdane27 Les dfauts du logiciel sont extrmement coteux en terme d'argent de rputation- de perte de vie

Dr Maamri Ramdane28 Plusieurs dsastres historiques attribus au logiciel 1988 abattage d'un Airbus 320 par l'USS Vincennes affichage cryptique et confusant du logiciel de dtection 1991 chec de missile patriot calcul imprcis de temps d des erreurs arithmtiques London Ambulance Service Computer Aided Despatch System plusieurs dcsDr Maamri Ramdane29 Le 3 Juin 1980, North American Aerospace Defense Command (NORAD) rapporta que les U.S. taient sous attaque de missiles Echec du premier lancement oprationnel de la navette spatiale dont le logiciel d'exploitation temps rel consiste en environ 500,000 LOC problme de synchronisation entre les ordinateurs de contrle de vol panne de 9 heures du rseau tlphonique longue distance d'AT&T provoqu par un patch de code non test

Dr Maamri Ramdane30 Ariane 5 crash 4 Juin 1996 Vol inaugural du lanceur europen Ariane 5 crash environ 40 secondes aprs dcollage Perte d'environ milliards de dollars L'explosion tait le rsultat d'une erreur logicielDr Maamri Ramdane31 Exception non capture due une erreur de floating point:conversion d'entier 64bit entier 16bit signed integer appliqu un nombre plus large que suppos Le module tait rutilis sans avoir t test convenablement d'Ariane 4 Erreur n'tait pas suppos survenir avec Ariane 4 Pas de gestionnaire d'exception

Dr Maamri Ramdane32 Mars Climate Orbiter 23 Septembre 1999 Mars Climate Orbiter disparat alors qu'il commence orbitrer Mars. Cot environ $US 125million Panne due une erreur dans le transfert de l'information entre une quipe au Colorado et une quipe en Californie Une quipe utilisa des units anglaises (ex., inches, feet, pounds) tandis que l'autre utilisa des units mtriques pour une opration cl.Dr Maamri Ramdane33 Mars Polar Lander Dcembre 1999 Mars Polar Lander disparait l'atterrissage sur la plante Mars Panne probablement due la mise inattendue d'un seul bit de donne. dfaut non dcel durant les tests quipes indpendantes on tests des aspects du systme sparmentDr Maamri Ramdane34Virus et vers Internet Ver Blaster ($US 525 millions) Sobig.F ($US 500 millions 1milliard) Exploitent des vulnrabilits bien connues du logiciel Les dveloppeurs de logiciel ne consacrent pas assez d'effort appliquer des leons apprises sur les causes des vulnrabilits. Les mmes types de vulnrabilits continuent tre vus dans les nouvelles versions des produits qui taient dans des versions prcdentes. Problmes d'utilisabilitDr Maamri Ramdane35 La qualit au niveau du logiciel 25% des projets de dveloppement avortent

15% des logiciels livrs contiennent des anomalies

30 40 % du contenu des logiciels sont transforms lors de la maintenance

50 % des projets de dveloppement ne respectent pas les chanciers

Centre National de la Recherche Scientifique Dr Maamri Ramdane36 Les enjeux pour lentreprise La qualit :

Pour fidliser notre clientle

Effet positif sur les profits de lentreprise

Qui doit retourner une rmunration

Aux actionnaires et aux employs.

Dr Maamri Ramdane37 Les enjeux pour lentreprise Le manque de qualit :

Effets directs sur les ventes de produits ou services

Les profits de lentreprise

Effets indirects sur les salaires et le retour sur linvestissement

Effets indirects sur la valorisation des employs

Dr Maamri Ramdane38Pourqoi est-ce que la qualit est important?rentabilit long terme

rentabilit court termefaites la bonne chose la premire fois

aide llaborationetant donn les changements constantes aux besoins, le logiciel avec un niveau de qualit lev est plus facile modifier

la satisfaction des clients

lutilisation frequent du logiciel partoutsurtout dans les systmes critiquesDr Maamri Ramdane39Facteurs de Qualit LogicielleModle de qualit logicielle de McCall'sDr Maamri Ramdane40

Les facteurs de la qualit Point de vue utilisateur Fiabilit : pas de plantage Scurit : pas de mise en danger de vies humaines/de machines Intgrit : protection des donnes contre les intrusions Ergonomie : utilisation aise du logiciel Efficacit : minimisation des ressources (temps, mmoire, etc.)Dr Maamri Ramdane41Les facteurs de la qualit Point de vue dveloppeur Testabilit : facilit de vrification du code Maintenabilit : dtection et correction aise des erreurs Flexibilit : volution facile

Dr Maamri Ramdane42Les facteurs de la qualit Point de vue communication Rutilisabilit : utiliser les modules dvelopps dans de futurs projets Portabilit : possibilit de faire tourner le logiciel sur dautres architectures Compatibilit : change de donnes avec dautres logiciels

Dr Maamri Ramdane43Test et Qualit de LogicielDr Maamri RamdaneFacteurs de Qualit Logicielle Correctude exactitude, compltude de la sortie requise disponibilit, caractre jour de l'information Fiabilit taux de panne maximum Efficacit ressources ncessaires la fonction du logicielDr Maamri Ramdane44 Intgrit scurit du systme logiciel, droits d'accs Utilisabilit habilit d'apprentissage, habilit d'usage pour la tche requise Maintenabilit effort pour identifier et corriger les pannes (modularit, documentation, etc) Flexibilit degr d'adaptabilit (a de nouveaux usagers, tches, etc)

Dr Maamri Ramdane45Facteurs de Qualit Logicielle Testabilit support pour tests (ex: fichier logs, diagnostics automatiques, etc)Portabilit adaptation d'autres environnements (matriel, logiciel)

Dr Maamri Ramdane46Facteurs de Qualit Logicielle Reusabilit usage de composants du logiciel pour d'autres projets Interoprabilit habilit d'interfassage avec d'autres composants/systmesDr Maamri Ramdane47Critres de qualit dun logicielTraabilitCompltudePrcisionCohrenceRobustesseSimplicitModularitGnralitExtensibilitEfficacit de stockageEfficacit dexcution

Dr Maamri Ramdane48Traage des accsContrle des accsSouplesse des interfacesFacilit dexploitationFacilit dapprentissageIndpendance machineIndpendance systmeNormalisation des communicationsStandardisation des structures de donnesConcisionConformit

Critres de qualit dun logicielRelations entre facteurs et critres

Fiabilit : cohrence, robustesse, conformit, prcision Scurit : compltude, prcision, cohrence, robustesse Intgrit : traage et contrle des accs Ergonomie : souplesse des interfaces, facilit dapprentissage et dexploitation Efficacit : efficacit de stockage et dexcution, (concision) Testabilit : traabilit, simplicit, modularit Maintenabilit : traabilit, modularit, traage des accs, simplicitDr Maamri Ramdane49Critres de qualit dun logicielRelations entre facteurs et critres

Flexibilit : gnralit, extensibilit, modularit

Rutilisabilit : gnralit, normalisation des com. et structures de donnes

Portabilit : indpendance machine et systme

Compatibilit : normalisation des communications et structures, de donnes

Dr Maamri Ramdane50Lassurance qualit en gnie logiciel

Selon l'IEEEL'assurance qualit logicielle est:1. Un modle planifi et systmatique de toutes les actions ncessaires pour fournir une confiance adquate qu'un article ou un produit est conforme ses exigences techniques tablies.2. Un ensemble d'activits conu pour valuer le processus par lequel les produits sont dvelopps ou fabriqus.

A contraster avec: le contrle de qualit.Dr Maamri Ramdane51Lassurance qualitLe contrle de la qualit

Les processus et mthodes pour contrler le travail et observer si les exigences sont rencontrs.On se concentre sur les revues et la suppression des dfectuosits avant la livraison du produit.Software testing and continuous quality improvementWilliam E. LewisTches lies au contrle de la qualit:

Interprter le contexte Planifier les activits de contrle qualit Raliser des tests (75% du domaine qualit)

Dr Maamri Ramdane52Objectifs de l'AQL dans le dveloppement(1) Assurer un niveau de confiance acceptable que le logiciel sera conforme aux exigences fonctionnelles techniques.(2) Assurer un niveau de confiance acceptable que le logiciel sera conforme aux exigences de gestion concernant l'chancier et le budget.(3) Initiation et activits de gestion pour l'amlioration et la plus grande efficience des activits de developpement et d'assurance de qualit logicielle.Dr Maamri Ramdane53Trois principes gnraux de l'AQL Savoir ce que vous faites Savoir ce que vous devriez faire Savoir mesurer la diffrenceDr Maamri Ramdane54Trois principes gnraux de l'AQL Savoir ce que vous faites comprendre ce qui est entrain d'tre construit, comment il est construit et ce qu'il fait suppose un processus de dveloppement logiciel avec une structure de gestion (milestones, schduling) politique de rapport processus de suiviDr Maamri Ramdane55Trois principes gnraux de l'AQL Savoir ce que vous devriez faire avoir des exigences et spcifications explicites suppose un processus de dveloppement logiciel avec analyse des exigences, tests d'acceptabilit, feedback frquent des usagersDr Maamri Ramdane56Trois principes gnraux de l'AQL Savoir mesurer la diffrence avoir des mesures explicites comparant ce qui est entrain d'tre fait de ce qui devrait tre fait quatre mthodes complmentaires: mthodes formelles vrifier mathmatiquement des proprits spcifiesDr Maamri Ramdane57 tests donnes explicites pour excuter le logicielle et vrifier si les rsultats correspondent aux attentes inspections examen par humain des exigences, design, code, ... bass sur des checklists mtriques mesures un ensemble connu de proprits lies la qualit

Dr Maamri Ramdane58Assurance de Qualit Logicielle Approche complte de cycle de vie concerne par chaque aspect du processus de dveloppement de logiciels. Comprend ensemble complet d'objectifs de qualit, attributs mesurables de qualit (mtriques de qualit) pour valuer le progrs vers les objectifs, objectifs quantitatives de certification pour toutes les parties du processus de dveloppementDr Maamri Ramdane59 Prend en compte: exigence de produit des clients exigences de qualit, et exigences de qualit corporatifsDr Maamri Ramdane60AQLSQE comprend Vrification construisons nous le produit bien? effectue la fin d'une phase pour s'assurer que des besoins tablis pendant la phase prcdente ont t rpondus Validation construisons nous le bon produit? effectue la fin du processus de dveloppement pour assurer la conformit aux exigences du produitDr Maamri Ramdane61

AQLComprend Prvention de dfauts Prviens la survenance de dfauts Activits: formation, planification, simulation Dtection de dfauts Trouver des dfauts dans un artefact logiciel Activits: inspections, test, mesure Suppression de dfauts isolation, correction, vrification de correction Activits: isolation de fautes, analyse de fautes, test de rgressionDr Maamri Ramdane62AQL Activits typiques de processus d'Assurance de la Qualit Logicielle Validation des exigences. Vrification de Design. Vrification statique de code (inspection/revues). Test dynamique. Ingnierie de processus et standards. Mtriques et amlioration continue.Dr Maamri Ramdane63Critres de qualit dun logiciel Mesure Dfinition un nom une mthode de calcul une valeur optimale un intervalle dont il ne faut pas sortir Exemples nombre dimbrications maximal, (souvent, nim < 5) taux de couverture des tests proportion de commentaires par rapport aux lignes de codeDr Maamri Ramdane64Critres de qualit dun logiciel Mesure Attention ! Une mesure : indicateur quantitatif pas daspect qualitatif

Dr Maamri Ramdane65Dr Maamri RamdaneMise en place de la qualit

Plan Qualit Logiciel (PQL)document prcisant pour un logiciel donn les phases de dveloppement et les facteurs et critres de qualits, ainsi que les niveaux requis pour ces derniers. Systme Qualitdispositif mis en place par une entreprise pour vrifier le respect de la procdure dAssurance QualitDr Maamri Ramdane66Vrification statique de code : la revue

Dfinition runion de prsentation/prise de dcision mene par le chef de projet ou le chef dune phase Types de revues : Revue de dbut de projet prsentation du projet, du planning, de la dmarche Revue de fin de phase existence et qualit de la documentation adquation du point atteint avec les objets fixs au dpartDr Maamri Ramdane67Vrification statique de code : la revue Revue de fin de projet analyse des problmes rencontrs, consquences mthodologiques prparation de la maintenance

Dr Maamri Ramdane68Dr Maamri RamdaneVrification statique de code : linspection

Dfinition contrle approfondi dun point particulier mene par un spcialiste du domaine inspect Documents inspects la documentation les sources les dossiers de test Principe examen systmatique de certains points recherche de potentiels dfauts vrification de lapplication de certaines rglesDr Maamri Ramdane69Vrification statique de code : laudit

Dfinition examen mthodique dun aspect donn (produit, processus) men par quelquun dextrieur lquipe de dveloppement :client, organisme de contrle audit externe responsable Assurance Qualit audit interne But existence et conformit du PQL avec les exigences requises application correcte du PQL tat davancement du projet vrification du processus de gestion de configurationDr Maamri Ramdane70TestDr Maamri Ramdane71Dfinition de testLe test est lexcution ou lvaluation dun systme ou dun composant par des moyens automatiques ou manuels, pour vrifier quil rpond ses spcifications ou identifier les diffrences entre les rsultats attendus et les rsultats obtenus -IEEE (Standard Glossaryof Software Engineering Terminology)Tester, cest excuter le programme dans lintention dy trouver des anomalies ou des dfauts -G. Myers (The Art of Software testing)Testing can reveal the presence of errors but never their absenceEdsgarW. Dijkstra. Notes on structured programming. AcademicPress, 1972.

Dr Maamri Ramdane72Dfinitions Tester cest raliser lexcution du programmeNotion dOracle : rsultats attendus dune excution du logicielCot du test : 30 % 60 % du cot de dveloppement total Deux grandes familles de testsTest fonctionnel (ou test bote noire)Test structurel (ou test bote de verre)

Dr Maamri Ramdane73Principe du testProgramme PvaluerDonnes de test XSorties P(X)Oracle okF ContrlerRsultats (vrai,faux) Dr Maamri Ramdane74Stratgies de slection des donnes de testDonnes de testSortiesTest fonctionnel : bas sur la spcificationTest structurel : bas sur lanalyse du programmeDonnes de testSortiesDr Maamri Ramdane75Mthodes de test structurelLe test structurel sappuie sur lanalyse du code source de lapplication (ou dun modle de celui-ci) pour tablir les tests en fonction de critres de couvertureBass sur le graphe de flot de contrle(toutes les instructions, toutes les branches, tous les chemins, )Bass sur la couverture du flot de donnes(toutes les dfinitions de variable, toutes les utilisations, )Bass sur les fautes(test par mutants)

Dr Maamri Ramdane76Le graphe de flot de controlele CFG modelise toutes les executions dune mthode en descrivant les structures de controleNoeud : instructions ou une sequence dinstructions (bloc) arcs : Transfert de controleBloc : une squence dinstructions telle que si la premiere instruction est excute les autres sont aussi excutes(pas de branchement)

Les rgles de transformations des instruction en graphe Dr Maamri Ramdane7777GFC : le si instructionDr Maamri Ramdane78if (x < y){ y = 0; x = x + 1;}else{ x = y;}4123x >= yx < yx = yy = 0x = x + 1if (x < y){ y = 0; x = x + 1;}312x >= yx < yy = 0x = x + 1GFC : le return instructionDr Maamri Ramdane79if (x < y){ return;}print (x);return;312x >= yx < yreturnprint (x)returnPas darc entre les noeud 2 et 3.Le noeud return doit tre distinct.LoopsLes boucles demandent des extra noeuds qui doivent $etre ajouts.Ces extra noeuds ne presentent pas des instructions ou des blocs dinstructions.Dr Maamri Ramdane8080GFC : les boucles while Dr Maamri Ramdane81x = 0;while (x < y){ y = f (x, y); x = x + 1;}43y =f(x,y)x = x + 11x = 0x >= yx < y2dummy nodeGFC : les boucles for for (x = 0; x < y; x++){ y = f (x, y);}Dr Maamri Ramdane821x = x + 1235x >= yx < yy = f (x, y)4x = 0Implicitement: initialisation de la boucleImplicitement: Incrmentation de la boucleGFC : la structure case (switch) Dr Maamri Ramdane83read ( c) ;switch ( c ){ case N: y = 25; break; case Y: y = 50; break; default: y = 0; break;}print (y);51read ( c );c == Ny = 0;break;243c == Ydefaulty = 50;break;y = 25;break;print (y);Exemple de GFC StatsDr Maamri Ramdane84public static void computeStats (int [ ] numbers) { int length = numbers.length; double med, var, sd, mean, sum, varsum; sum = 0; for (int i = 0; i < length; i++) { sum += numbers [ i ]; } med = numbers [ length / 2 ]; mean = sum / (double) length;

varsum = 0; for (int i = 0; i < length; i++) { varsum = varsum + ((numbers [ I ] - mean) * (numbers [ I ] - mean));} var = varsum / ( length - 1.0 ); sd = Math.sqrt ( var ); System.out.println ("length: " + length); System.out.println ("mean: " + mean); System.out.println ("median: " + med); System.out.println ("variance: " + var); System.out.println ("standard deviation: " + sd);}84Graphe de flot de controle pour StatsDr Maamri Ramdane85i = 0i >= lengthi < lengthi++i >= lengthi < lengthi = 0i++public static void computeStats (int [ ] numbers){ int length = numbers.length; double med, var, sd, mean, sum, varsum;

sum = 0; for (int i = 0; i < length; i++) { sum += numbers [ i ]; } med = numbers [ length / 2 ]; mean = sum / (double) length;

varsum = 0; for (int i = 0; i < length; i++) { varsum = varsum + ((numbers [ I ] - mean) * (numbers [ I ] - mean)); } var = varsum / ( length - 1.0 ); sd = Math.sqrt ( var );

System.out.println ("length: " + length); System.out.println ("mean: " + mean); System.out.println ("median: " + med); System.out.println ("variance: " + var); System.out.println ("standard deviation: " + sd);}1235468785Chemin sensibilis : exec(P, X) Principe : X sensibilise un unique chemin du GFC Df: squence de sommets du GFC, non ncessairement finie, emprunte lorsde lexcution de P avec X comme entre Exemples : exec(P, (0,0)) = a-b-d-f exec(P, (2,-1)) = a-b-c-b-d-e-f exec(P, (3,2)) = a-b-(c-b)-d-fw != 0z= z * xw= w-1yqpqpwDr Maamri Ramdane95Il est remarquer que cette suite de jeux de test ne couvre pas le cas o le prdicat global est interprt vrai et ne test donc pas linstruction de dcrmentation.

Couverture des conditionsDr Maamri Ramdane96Ce critre requiert la couverture des arcs et des conditionsDans lexemple prcdent, La suite de test JT={(1,2,4,3),(3,2,5,7),(3,3,7,5)}Couvre ce critre

Couverture des arcs et des conditionsDr Maamri Ramdane97Ce critre est similaire au critre de couverture des conditions sauf que cette fois, il est requis de couvrir toutes les combinaisons boolenne des prdicat atomiques interprts vrai et faux.

Par consquent, si un prdicat est de la forme :A et (B ou C) et que chacun des prdicats atomiques A , B et C peuvent calculs sparment les des autres vrai et faux on doit vrifier 23=8

Couverture des conditions combinesDr Maamri Ramdane98Dr Maamri Ramdane99

Couverture des PLCS (Portion Linaire de Code Suivie d'un Saut)PLCS : squence d'instructions entre deux branchementsPrincipes : 2 types de noeuds dans le graphe de flot de contrleType a (ou noeud saut) : lentre, la sortie et les noeuds qui constituent larrive dun branchementType b : les autres noeudsDfinition : On appelle PLCS un chemin partant dun noeud saut et aboutissant un noeud saut; lavant dernier et le dernier noeud doivent constituer le seul saut du chemin.Dr Maamri Ramdane100Soit le programme :

005 INPUT A, C010 B= 2*A020 A=A+1030 IF A Couverture de la totalit des PLCS

Dr Maamri Ramdane104Nb cyclomatiqueIl existe un chemin connectant deux nuds quelconquesdu grapheIl existe un ensemble de circuits indpendants CI, de sorte que de nimporte quel circuit du graphe puisse se traduire laidedes CIBase : ensemble des circuits indpendantsNbre max de circuits indpendants pour former la base, dans un graphe fortement connexe = nb darcs - nb de nuds + 1Nombre cyclomatique

La complexit cyclomatique est une mesure de la complexit logique dun programmeDans le contexte des tests, la complexit cyclomatique indique le nombre maximum des chemins complets indpendants, ce qui donne le nombre de cas de tests ncessaires pour assurer une bonne couverture du code (niveaux N1 et N2).

Diffrentes faons (quivalentes) de la calculer:V(G) = #Arcs - #Noeuds + 2 = 11-9+2 = 4V(G) = #Rgions = 4V(G) = #(Conditions)+1 = 3+1

106Graphe de flot de contrleLe nombre cyclomatiquecabdu4u5u3u1u2B1 = [u1, u2, u3]B2 = [u4, u5, u2]B = [u5, u2, u3, u1, u2, u4]= B1 + B2B111100B201011B12111u1u2u3u4u55-4+1 = 2Nbre cyclomatiquePour vrifier lindpendance entre chemin :calculer leur vecteurvoir si chaque chemin comprend au moins un arc nexistant pasChez les autresCas de test bass sur les chemins indpendantsSuivre le processus suivant:Construire le graphe de flot de contrle du programme.Calculer la complexit cyclomatique partir du graphe de flot de contrle rsultant.Identifier un ensemble chemins complets (du dbut la fin du programme) indpendants.Construire des cas de test qui vont forcer lexcution de chacun des chemins identifis.

109Circuits linairt indpendantsadbcu1u2u6u4u7u3u5c1 = [u3, u1, u4, u5, u6]c6 = [u2, u3]c4 = [u7, u3, u7, u3, u1]c5 = [u3, u1, u4, u7]u1u2u3u4u5u6u7011000010200021011001c6c4c5Circuits linairt- indpendantsCircuit 1 = [u1, u4] = (1, 0, 0, 1, 0, 0, 0)Circuit 2 = [u3, u7] = (0, 0, 1, 0, 0, 0, 1)(1, 0, 1, 1, 0, 0, 1)Laddition donne le circuit 5 qui se dfinit laidedes circuits circuit 1 et circuit 2circuit 5 = circuit 1 + circuit 2 oucircuit 2 = circuit 5 - circuit 1Circuit 7 = [u2, u3, u1] (1, 1, 1, 0, 0, 0, 0)est indpendant de circuit 1 et 2 puisque nenconstitue pas une combinaison linaireCritique N.B. : le fait quun chemin M sexprime laide dun cheminB ne signifie pas que M couvre Babcu1u2u3M= [u1, u2, u3]B =[u3, u1, u2](1, 1, 1)(1, 1, 1)Lexpression vectoriellene tient pas comptede lordre de visitedes nuds !Exemple didentification des chemins indpendants

On doit identifier quatre chemins indpendants, par exemple :Chemin 1: 1-11Chemin 2: 1-2,3-4,5-10-1-11Chemin 3: 1-2,3-6-8-9-10-1-11Chemin 4: 1-2,3-6-7-9-10-1-11

113114

Exemple tir de (Pressman,2001)115

Graphe de flot de contrle pour la procdure averageUn ensemble de chemins indpendantsEnsemble de chemins indpendants:1-2-10-11-131-2-10-12-131-2-3-10-11-131-2-3-4,5-8-9-2-3-1-2-3-4,5-6-8-9-2-3-1-2-3-4,5-6-7-8-9-2-3-116Cas de test du chemin 1 Spcification des entresValue (k) = entre valide, avec k < iValue (i) = -999 avec 2 i 100 Spcification des sorties: Rsultats attendusUne moyenne correctes des k valeurs ainsi que leur somme

Note:Le chemin 1 ne peut tre test tout seul: il sera test avec les chemins 4, 5, et 6.117Cas de test du chemin 2EntreValue (1) = -999Rsultats attendusaverage = -999; les autres champs de total restent leur valeur initiale118Cas de test du chemin 3EntreEssayer de traiter 101 valeurs ou plusLes premire 100 valeurs devraient tre validesRsultats attendusMoyenne correcte des 100 premires valeurs119Cas de test du chemin 4EntreValue (i) = entre valide, i < 100Value (k) < minimum avec k maximum avec k iRsultats attendusUne moyenne correcte des n valeurs ainsi que leur somme121Cas de test du chemin 6EntreValue (i) = entre valide avec i< 100Rsultats attendusUne moyenne correcte des n valeurs ainsi que leur somme122La hirarchie des critres de couvertureDr Maamri Ramdane123Le Graphe flot de donne PrincipeGFD=GFC + infos sur les dfinitions et utilisations des variablesDefinitionUn GFD est un CFC pour lequelChaque sommet j appartenant N est associ Def(j):{v Var(P)| v est dfinie en j }C-use(j):{v Var(P)| v est utilise en j dans un calcul et kj|vdef(k)}Si k est un sommet dcision:P_use(j):{vVar(P)| v est utilise dans la dcision(le prdicat) j}Dr Maamri Ramdane124Exemple flot de donne StatsDr Maamri Ramdane125public static void computeStats (int [ ] numbers){ int length = numbers.length; double med, var, sd, mean, sum, varsum; sum = 0; for (int i = 0; i < length; i++) { sum += numbers [ i ]; } med = numbers [ length / 2 ]; mean = sum / (double) length; varsum = 0; for (int i = 0; i < length; i++){ varsum = varsum + ((numbers [ I ] - mean) * (numbers [ I ] - mean));} var = varsum / ( length - 1.0 ); sd = Math.sqrt ( var ); System.out.println ("length: " + length); System.out.println ("mean: " + mean); System.out.println ("median: " + med); System.out.println ("variance: " + var); System.out.println ("standard deviation: " + sd);}125Le graphe de flot de donneDr Maamri Ramdane12681243567def (1) = { numbers, sum, length }def (2) = { i }def (5) = { med, mean, varsum, i }use (5) = { numbers, length, sum }def (8) = { var, sd }use (8) = { varsum, length, mean, med, var, sd }P-use (3) = { i, length }def (4) = { sum, i }use (4) = { sum, numbers, i }P-use (6) = { i, length }def (7) = { varsum, i }use (7) = { varsum, numbers, i, mean }Dr Maamri Ramdane127Chemin sans dfinition (def-clear path) i-n1--nm-j est un chemin sans df. de x de i j ssi k {1,..,m}, x def(nk)Soit i un sommet, x une var. tq x def(i), on dfinit :dcu(x,i): {j N | x c-use(j) et un chemin sans df. de x de i j}dpu(x,i): {j-k A | x p-use(j,k) et un chemin sans df. de x de i j}Dr Maamri Ramdane128dcu(x,j) et dpu(x,j) : exemplesdcu(x,1)= {3}, dpu(x,1)= dcu(y,1)= , dpu(y,1)= {4-5,4-6}dcu(w,1)= {3}, dpu(w,1)= {2-3,2-4}dcu(z,1)= {3,5,6}, dpu(z,1)= dcu(z,3)= {3,5,6}, dpu(z,3)= dcu(w,3)= {3}, dpu(w,3)= {2-3,2-4}dcu(z,5) = {6}, dpu(z,5) = 123456c-use(1) : def(1) : x,y,w,z c-use(3) : x,z,wdef(3) : z,wp-use(4) : yc-use(5) : zdef(5) : zc-use(6) : zp-use(2) : wDr Maamri Ramdane129Chemin dfinition/utilisation (du-path)Df: p = i-..-j-k est un chemin Dfinition/utilisation par rap. x ssi 1) x def(i) et 2a) soit x c-use(k) et p est un chemin sans df. de x de i k et sans boucle2b) soit x p-use(j) et p est un chemin sans df. de x de i j et sans boucle Dr Maamri Ramdane130123456c-use(1) : def(1) : x,y,w,z c-use(3) : x,z,wdef(3) : z,wc-use(5) : zdef(5) : zc-use(6) : zp-use(2) : wp-use(4) : yChemin dfinition/utilisation : exemplesdu_path w.r.t. x : 1-2-3du_paths w.r.t. y : 1-2-4-5, 1-2-4-6,1-2-3-2-4-5,1-2-3-2-4-6du_paths w.r.t. z :1-2-3,1-2-4-5,1-2-4-6,3-2-3,3-2-4-5,3-2-4-6,5-6du_paths w.r.t. w :1-2-3,1-2-4,3-2-3,3-2-4Dr Maamri Ramdane131Df : Un ensemble C de chemins du GFD (N,A)satisfait toutes_les_dfinitions ssi n N et x def(n), Ci C tq Ci inclut un chemin sans df. de x de n un lment de dcu(x,n) ou dpu(x,n) Critre structurel : Toutes_les_dfinitionsDr Maamri Ramdane132123456c-use(1) : def(1) : x,y,w,z p-use(2,4) : wc-use(3) : x,z,wdef(3) : z,wp-use(4,6) : yc-use(5) : zdef(5) : zc-use(6) : zp-use(2,3) : wp-use(4,5) : yCouverture de Toutes_les_dfinitionsIci, un seul chemin suffit !1-2-3-2-4-5-6Dr Maamri Ramdane133Df : C satisfait toutes_les_dfinitionsssi n N et x def(n), Ci Ctq Ci inclut un chemin sans df. de x de n tous les lments de dcu(x,n) et dpu(x,n) Exemple : Ici, deux chemins sont ncessaires ! Par exemple : 1-2-4-6 et 1-2-(3-2)2-4-5-6toutes_les_utilisations est plus fort que toutes_les_dfinitionsCritre structurel : toutes_les_utilisationsDr Maamri Ramdane134Df : C satisfait tous_les_chemins_du ssi n N et x def(n), C inclut tous les cheminsdfinition/utilisation par rapport x Ici, 4 chemins !1-2-4-6, 1-2-4-5-6,1-2-3-2-4-6,1-2-3-2-4-5-6Critre structurel : tous_les_chemins_du123456c-use(1) : def(1) : x,y,w,z p-use(2) : wc-use(3) : x,z,wdef(3) : z,wc-use(5) : zdef(5) : zc-use(6) : zp-use(4) : ytous_les_chemins_du est plus fort que toutes_les_utilisationsDr Maamri Ramdane135Df : C satisfait tous_les_chemins_du ssi n N et x def(n), C inclut tous les cheminsdfinition/utilisation par rapport x Ici, 4 chemins !1-2-4-6, 1-2-4-5-6,1-2-3-2-4-6,1-2-3-2-4-5-6Critre structurel : tous_les_chemins_du123456c-use(1) : def(1) : x,y,w,z p-use(2,4) : wc-use(3) : x,z,wdef(3) : z,wp-use(4,6) : yc-use(5) : zdef(5) : zc-use(6) : zp-use(2,3) : wp-use(4,5) : ytous_les_chemins_du est plus fort que toutes_les_utilisationsDr Maamri Ramdane136Relation entre les critres (est plus fort que)C1 subsume C2 (not C1 C2) : pour tout GDU, ensemble de chemins P qui satisfait C1, P satisfait aussi C2Proprits :- relation transitive ( C1 C2 et C2 C3 alors C1 C3 )- dfinit un ordre partiel entre les critresDr Maamri Ramdane137Critres structurels : ordre partieltous_les_cheminstous_les_chemins_dutoutes_les_utilisationstoutes_les_dfinitionstous_les_arcstous_les_sommetsCritres lis au GDU Critres lis au GFCDr Maamri Ramdane138Comparaison entre les criteres : indications de preuvetous_les_chemins tous_les_chemins_ducar un chemin dfinition/utilisation est un chemin (partiel) du CFG !toutes_les_utilisations tous_les_arcsutilisation des hypothses sur p-use pour les arcs lis des sommets de dcision du GDU toutes_les_dfinitions et tous_les_arcssont non comparables Test fonctionnel conformit par rapport la spcificationDr Maamri Ramdane139SpcificationprogrammeRsultats de testDonnes de testRsultats dexcutionOracleTest fonctionnelNe ncessite pas de connaitre la structure interne du systmeBas sur la spcification de linterface du systme et de ses fonctionnalits : pas trop grosPermet dassurer la conformance spc - code, mais aveugle aux dfauts fins de programmationPas trop de problme doracle pour le CT, mais problme de la concrtisationAppropri pour le test du systme mais galement pour le test unitaireDr Maamri Ramdane140Test fonctionnelMthodes de test BN : Combinatoire Partition des entres + analyse aux limites Graphes de cause-effet Test ad hoc (error guessing) Couverture de la specificationSDr Maamri Ramdane141Partition des entres : principePrincipe :diviser le domaine des entres en un nombre fini de classes tel que le programme ragisse pareil pour toutes valeurs dune classeconsquence : il ne faut tester quune valeur par classe ! vite des tests redondants (si classes bien identifies)Procdure :1. Identifier les classes dquivalence des entres Sur la base des conditions sur les entres/sorties En prenant des classes dentres valides et invalides2. Dfinir un ou quelques CT pour chaque classe Dr Maamri Ramdane142Lanalyse partitionnelleMthode : Trois phasesPour chaque donne d entre, calcul de classes dquivalence sur les domaines de valeurs,Choix dun reprsentant de chaque classe dquivalence,Composition par produit cartsien sur lensemble des donnes d entre pour tablir les DT.Dr Maamri Ramdane143Lanalyse partitionnelleRgles de partitionnement des domainesSi la valeur appartient un intervalle, construire :une classe pour les valeurs infrieures,une classe pour les valeurs suprieures,n classes valides.Si la donne est un ensemble de valeurs, construire :une classe avec l ensemble vide,une classe avec trop de valeurs,n classes valides.Si la donne est une obligation ou une contrainte (forme, sens, syntaxe), construire :une classe avec la contrainte respecte,une classe avec la contrainte non-respecteDr Maamri Ramdane144Lanalyse partitionnelle - ExemplesSoit F, fonction qui calcule la valeur absolue du produit des entres E1 et E2 de type INT.Deux donnes en entre : E1 et E2.Dr Maamri Ramdane145Lanalyse partitionnelle - ExempleE1E2[Min,-1][Min,-1][0,Max][0,Max]E1E2[Min,-1]-273[Min,-1]-1[Min,-1]-1[0,Max]0[0,Max]0[Min,-1]-390[0,Max]333[0,Max]987Dr Maamri Ramdane146Lanalyse partitionnelle - ExempleLe programme spcifier reoit en entre trois valeurs entires censes reprsenter les longueurs des cots dun triangle. Il doit vrifier si ces valeurs peuvent dfinir un triangle. Si la rponse est positive, le programme doit calculer le type du triangle :scalne, isocle, quilatral. Des valeurs entires x, y et z peuvent dfinir un triangle si et seulement si elles vrifient les ingalits suivantes :x < y + z && y < z + x && z < x + yDr Maamri Ramdane147Lanalyse partitionnelle - ExempleLinstruction FOR naccepte quun seul paramtre en tant que variable auxiliaire. Son nom ne doit pas dpasser 2 caractres non blancs. Une borne suprieure et une borne infrieure doivent tre prcises: la borne infrieure est prcde du mot-cl = et la borne suprieure est prcde par le mot-cl TO. Les bornes sont des entiers positifs.Dr Maamri Ramdane148Lanalyse partitionnelle - ExempleClasse dquivalence :Nombre de paramtresDT (0,1,2)Nombre de caractres du nomDT (A,AB,ABC)Borne InfrieureDT (prcde par = , non prcde par =)Borne SuprieureDT (prcde par To, non prcde par To)For A=1 to 10For =1 to 10For A,B =1 To 10For AB=1 to 10For ABC=1 to 10For A 1 to 10For a=1 10Dr Maamri Ramdane149Exemple 1 : Valeur absolueDr Maamri Ramdane150Exemple 2 : Calcul somme maxDr Maamri Ramdane151Test des partitions et multi-variablesDr Maamri Ramdane152Test des partitions et multi-variables (2)Approche 1 : union des partitionspartitions sur chaque variable, puis union des partitionsun test passe par plusieurs partitions (1 par variable)# P = #Pirisque = on test chaque Pi dans un seul contexterisque 2 = manquer des DT avec relations spcifiques (ex : x y)Dr Maamri Ramdane153Test des partitions et multi-variables (3)Approche 2 : partitionner le domaine totalpartition dfinies directement sur le produit cartsien des variablesrgle le risque 2#P souvent plus petit que #Pi#P peut tre plus grand que #Piclasses plus difficiles dfinir (cf graphes causes-effets)Dr Maamri Ramdane154Test des partitions et multi-variables (4)Approche 3 : combiner partitions + pairwisepartitions comme pour lapproche 1on essaie de couvrir les paires de classes dquivalencesrisque = manquer certaines combinaisons de partitionsrisque 2 = manquer des DT avec relations spcifiques (ex : x y)Dr Maamri Ramdane155Test des partitions et multi-variables (5)Pas forcment de meilleur solution, dpend du problmeavoir ces solutions en tte, et sadapter / innoverDans tous les cas, ne pas mixer les cas derreurs entre euxDr Maamri Ramdane156Tests des conditions limitesMotivation: trs souvent, les erreurs surviennent dans le traitement des cas limites (par exemple,erreur off-by-1 dans les boucles)Donc: il est important didentifier les cas limites, tant sur les entres que sur les rsultats, et de spcifier des cas de tests approprisNote: tester sur les sorties signifie tenter de produire un rsultat qui satisfait certaines conditions spcifiquesRemarque: les tests des conditions limites sont aussi applicables pour les tests de type bote blanche157Tests des conditions limitesValeurs numriques dfinies par un intervalle [a..b]: on teste avec a-1, a, a+1, b-1, b, b+1Chanes de caractres (avec au plus n caractres): chane vide, chane avec un seul caractre, chane avec n-1, n, n+1 (?) caractresTableaux: tableau vide, avec un seul lment, avec n-1 ou n lmentsFichiers: fichier vide, avec une seule ligne, etc.158Analyse des valeurs limitesExemples :soit N le plus petit/grand entier admissible : tester N 1, N,N + 1ensemble vide, ensemble trop gros, ensemble validefichier vide, fichier de taille maximale, fichier trop grosDr Maamri Ramdane159Graphes de cause-effet (1)La mthode des graphes cause-effets peut tre vue comme une mthode part ou comme une mthode pour crer des partitions relationnelles dans le cas multi-variableGain additionnel : rflexion sur les spec, trouver incohrences ou oublisEtapes: faire le graphe (difficile)(optionnel) simplifier / rduire le graphegnrer les DT pour le couvrir (plus systmatique)Dr Maamri Ramdane160GRAPHE CAUSE/EFFETAMELIORATION DE LA METHODE DES CLASSES D'EQUIVALENCEPOUR ANALYSER DES COMBINAISONS D'ENTREES SORTIESAPPLICABLE SUR UN SOUS-ENSEMBLEGraphes de cause-effet (2)Les causes C sont des entres possibles (variable dentre, actions utilisateurs, valeurs de lenvironnement, etc.)Les effets E sont les sorties du systme : variable de retour,modification DB, etc.La mthode consiste identifier les causes et effets du systme partir des spcifications, puis traduire la logique de la spcification dans un graphe liant causes et effets.noeuds : causes (roots), effets (feuilles), connecteurs ou (intermdiaire)arcs : normal ou ngationDr Maamri Ramdane162GRAPHE CAUSE/EFFETIDENTIFIER ET NUMEROTER LES CONDITIONS D'ENTREE, LES CAUSESIDENTIFIER ET NUMEROTER LES EFFETS EN SORTIEC1 X>10C2 y= 0 && 0.0001 < precision < 0.01 PRECONDITIONx precision