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

Dimension: px
Commencer à balayer dès la page:

Download "Quatrième partie IV. Test. Test 15 février 2008 1 / 71"

Transcription

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

2 Outline Introduction 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

3 Test Introduction Le test n est pas une étape du codage la preuve que le programme est correct montrer que le programme est correct la mise au point Test exécuter un programme pour y trouver des erreurs Examiner : lire, faire lire, ou traîter par un outil d analyse Analyse statique (a.k.a. Test statique) Exécuter : fournir des données au programme, et obtenir le résultat (oracle, boîte noire), comparer au résultat attendu Test dynamique Test 15 février / 71

4 Exemple du triangle Introduction Soit trois entiers représentant les longueurs des cotés d un triangle. Le programme lit ces trois entiers et détermine s il s agit d un triangle scalène (quelconque), isocèle ou équilatéral. Donner les différents cas de tests permettant de tester le programme correspondant (G. J. Myers, The Art of Software Testing, 1979) Test 15 février / 71

5 Exemple du triangle Rappel de géométrie Introduction Etant donnés trois nombres réels positifs a, b et c, il existe un triangle dont les côtés mesurent a, b et c si les trois inégalités suivantes sont vérifiées : a < b + c, b < a + c et c < a + b Il suffit en pratique de vérifier une seule des trois inégalités, celle où le plus long côté est est à gauche de l inégalité, i.e. si max(a, b, c) = a, la seule inégalité à vérifier est a < b + c. Test 15 février / 71

6 Exemple du triangle Cas de tests (1) Introduction Cas scalène valide : 2,4,3 (1,2,3 et 2,5,10 ne sont pas valides) Cas équilatéral valide : 5,5,5 Cas isocèle valide : 6,6,7 (2,2,4 n est pas valide) Cas isocèle valide avec les trois permutations (3,3,4 ; 3,4,3 ; 4,3,3) Cas avec une valeur à 0 Cas avec une valeur négative Test 15 février / 71

7 Exemple du triangle Cas de tests (2) Introduction Cas ou la somme de deux entrées est égale à la troisième entrée Trois cas pour le test 7 avec les trois permutations (1,2,3 ; 2,4,2 ; 5,3,2) Cas ou la somme de deux entrées est inférieure à la troisième entrée Trois cas pour le test 9 avec les trois permutations Cas avec les trois entrées à 0 Cas avec une entrée non entière Cas avec un nombre erroné de valeurs (0, 1, 2, 4,...entrées) Test 15 février / 71

8 Exemple du triangle Analyse Introduction Chaque cas correspond à un défaut constaté dans des implantations Moyenne des résultats obtenus par développeurs expérimentés : 7.8 sur 13 Conception de jeux de tests = activité complexe, a fortiori sur de grandes applications Test 15 février / 71

9 Cycle en V Introduction Modèle de développement normalisé par la RFA. Exigences \ \ Recette Spéc. / fonctionnelles / \ \ Test système Architecture --- / \ \---- Test intégration Conception -- / \ \---- Test unitaire \ / / Code / Test 15 février / 71

10 Types de tests Introduction unitaires : procédures, modules, composants intégration : composition de procédures et de modules conformité : adéquation aux spécifications non-régression (après modifications) : correction et évolution ne créent pas d anomalies nouvelles nominal, bon fonctionnement : cas de tests correspondant à des entrées valides robustesse : cas de tests correspondant à des entrées non valides Et les tests de performance load testing : résistance à la montée en charge stress testing : résistance aux demandes de ressources anormales Test 15 février / 71

11 Test unitaire Introduction test d une unité logicielle, d un «module» ; pour détecter des fautes dans son comportement individuel ; on ne teste pas les comportements dépendants d autres unités ; avant de tester le mur, tester ses briques ; notion d unité : dépend du paradigme de programmation utilisé : fonction, procédure, sous-programme, classe, composant, etc. Test 15 février / 71

12 Test d intégration Introduction vérifier qu un ensemble d unités coopérent correctement ; pour détecter des erreurs dans leur inter-opérabilité, la mauvaise utilisation d une interface (surtout si interface floue) ; basé sur l architecture de conception ; plusieurs approches pour l intégration : non-incrémentale ou big-bang : les modules sont testés unitairement chacun de leur côté ; puis on les assemble et on teste le tout d un coup ; incrémentale : on assemble un module déjà testé avec un module pas encore testé, puis on teste leur combinaison. Encore deux approches : bottom-up et top-down. pour simuler les modules non encore testés ou non disponibles : «bouchons» ou stubs. Test 15 février / 71

13 Test système Introduction Sur une application complètement intégrée ds son environnement. test de montée en charge ; stress de l application ;... Et aussi... test de régression (ou non-régression) : nouveau test du système après une modification pour vérifier qu elle n a pas apporté d autres fautes. En pratique, les tests fonctionnels d une version n sont des tests de non-régression pour la version n+1 ; Test 15 février / 71

14 Test de recette Introduction Ou test d acceptation, (ou User Acceptance Testing, ou simplement recette) : effectué avec l utilisateur final pour valider le système produit par rapport aux exigences, pour obtenir son approbation avant la livraison. Test 15 février / 71

15 Introduction Analyse statique et test (dynamique) Analyse statique Traitement du code source sans exécution Lectures croisées, inspection Analyse d anomalies : typage impropre, incohérence des interfaces de modules,... Evaluation symbolique : simulation de l exécution sur données symboliques Test dynamique exécution du logiciel sur des entrées choisies (cas de test) sélection de jeux de tests soumission des jeux de test dépouillement des résultats (comparaison avec résultats fournis par l oracle) évaluation de la qualité, de la couverture. Décision d arrêt du test Test 15 février / 71

16 Introduction Considérations générales Connaissance du fonctionnement interne boîte noire (black-box) : aucun accès au code, architecture... boîte transparente (white-box, glass-box) : connaissance du code Debugging vs. testing testing : trouver des bugs debugging : analyser les bugs, et les retirer Test 15 février / 71

17 Introduction Coût / efficacité du test Coût dans la litérature : ± 50 % du temps pris par le test en fait : 50 % du temps pris par le test et le debugging Efficacité développement collaboratif trouve plus d erreur, et coûte moitié moins par erreur le test débusque moins de la moitié des bugs (Source : Code Complete) Test 15 février / 71

18 Introduction Difficultés et limites du test Espace d état gigantesque (exemple : fiche client) : le test n est généralement pas complet Comment choisir les cas de test? Difficulté pour le développeur Buts du test : casser le système But du développeur : éviter que le système se casse Buts opposés ( équipes différentes) Le test n est jamais complet 1000 erreurs trouvées : bonne ou mauvaise nouvelle? aucune erreur trouvée : test insuffisant ou logiciel robuste? Le test n augmente pas la qualité du système, mais mesure la qualité. Augmenter la qualité d un logiciel par l augmentation du test est abérrant. Les procédures de développement déterminent la qualité. Les a priori laissent passer les signes d erreur. Test 15 février / 71

19 Buts du test Introduction Test exécuter un programme pour y trouver des erreurs ou, autrement dit Test Exécuter le logiciel (sur des données choisies) pour évaluer sa qualité Test 15 février / 71

20 Outline Analyse statique 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

21 Analyse statique Lecture croisée, inspection Lecture croisée binôme programmeur, lecteur voir Extreme Programming Inspection relecture en groupe, après préparation individuelle règles et protocole précis Test 15 février / 71

22 Analyse statique Analyse d anomalies règles de typages utilisation de pointeurs expressions abérrantes défauts de portabilité déclaration d arguments non utilisés... de plus en plus intégrée dans les compilateurs (c.f. -Wall) La présence d anomalies révèle souvent des erreurs de logique L analyse statique rejoint les méthodes formelles Test 15 février / 71

23 Outline Test dynamique 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

24 Test dynamique Comment trouver les cas de test? Programme boîte noire aucun accès au code, à l architecture... avantage : beaucoup plus proche de l utilisation normale inconvénient : moins de connaissance pour guider les choix Programme boîte transparente (white-box, glass-box) connaissance du code avantage : se concentrer sur les détails désavantage : être omnubilé par les détails, ne pas agir comme l utilisateur Éviter les tests trop semblables Test 15 février / 71

25 Outline Test dynamique Test fonctionnel et structurel 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

26 Test dynamique Test fonctionnel et structurel Test fonctionnel et structurel Test fonctionnel boîte noire (black-box) données de test engendrées par la spécification Test structurel boîte transparente (glass-box) données de test engendrées par l analyse du code source Test 15 février / 71

27 Test fonctionnel Test dynamique Test fonctionnel et structurel boîte noire données de test engendrées par la spécification Spécification Données de test Oracle Programme Résultat attendu Résultat obtenu Test 15 février / 71

28 Test structurel Test dynamique Test fonctionnel et structurel boîte en verre analyse du code pour produire les Données de Test (DT) Principalement basé sur différents critères de couvertures : tous les chemins toutes les branches toutes les instructions Point d entrée Point de sortie Test 15 février / 71

29 Test dynamique Test fonctionnel et structurel Test fonctionnel et structurel Approche complémentaire : le test fonctionnel détecte les écarts par rapport aux spécifications certaines erreurs ne sont détectées que par le test structurel int sum (int x, int y) { if (x==600 && y==500) return x-y; return x+y; } Test 15 février / 71

30 Test dynamique Difficultés du test dynamique Test fonctionnel et structurel test fonctionnel : entrées dans un ensemble infini (ou de très grande taille) test structurel : graphe très grand oracle : nécessaire pour obtenir le résultat attendu (pour comparaison) En définitive test : méthode de vérification partielle qualité dépendant du choix des jeux de test (couverture) Test 15 février / 71

31 Outline Test dynamique Test structurel 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

32 Test structurel Test dynamique Test structurel Analyse du code source pour produire des Données de Test (DT) Comportement du programme = chemin dans le graphe de contrôle Tests fonction de critères de couverture ( tous les chemins, toutes les branches, toutes les instructions) Test 15 février / 71

33 Graphe de contrôle Test dynamique Test structurel if (x<=0) x = -x; else x= 1 - x; if (x == -1) x = 1; else x++; Entrée : a Sortie : g Chemin correct : acdeg b x = x x == 1 e x = 1 x 0 a d g x > 0 c x = 1 x x 1 f x = x + 1 Test 15 février / 71

34 Graphe de contrôle Chemins de contrôle Test dynamique Test structurel Exécutions possible du code ch1 = abdeg ch2 = acdeg ch3 = abdfg ch4 = acdfg b x = x x == 1 e x = 1 x 0 a x > 0 c x = 1 x d x 1 f x = x + 1 g Sous forme algébrique abdfg + abdeg + acdfg + acdeg ( + désigne le ou logique) a(bdf + bde + cdf + cde)g a(b + c)d(f + e)g (expression factorisée des chemins de contrôle) Test 15 février / 71

35 Graphe de contrôle Chemins de contrôle (2) Test dynamique Test structurel Composants : ab : séquence a puis b a a+(b+c)d : choix entre b et c a b b c d ab(cb) d : itération a b c d Test 15 février / 71

36 Graphe de contrôle Exercice Test dynamique Test structurel i = 1; found = 0; while (!found) { if (a[i] == E) { found = 1; s = i; } i++; } Test 15 février / 71

37 Graphe de contrôle Exercice Test dynamique Test structurel i = 1; found = 0; while (!found) { if (a[i] == E) { found = 1; s = i; } i++; } i + + a i = 1; found = 0; found b f!found c a[i] == E a[i]! = E found = 1; s = i; d e Test 15 février / 71

38 Graphe de contrôle Exercice (2) Test dynamique Test structurel if (n<=0) n = 1 - n; if ( n % 2 == 0) n = n / 2; else n = 3 * n + 1; Test 15 février / 71

39 Graphe de contrôle Exercice (2) Test dynamique Test structurel if (n<=0) n = 1 - n; if ( n % 2 == 0) n = n / 2; else n = 3 * n + 1; a(1+b)c(e+d)f n > 0 a n 0 b n%2! = 0 c n = 1 n n%2 == 0 e d n = 3 n + 1 f n = n/2 Test 15 février / 71

40 Chemins exécutables Test dynamique Test structurel Sensibiliser un chemin On dit qu une DT sensibilise un chemin, car pour ces valeurs, le code suit le chemin de contrôle en visitant consécutivement ces noeuds Chemin exécutable Un chemin de contrôle est exécutable si il existe une DT qui le sensibilise Test 15 février / 71

41 Chemins exécutables Test dynamique Test structurel ch1 = abdeg ch2 = acdeg ch3 = abdfg ch4 = acdfg DT = {x = 2} sensibilise ch3 DT = {x = 3} sensibilise ch4 DT = {x = 2} sensiblise ch2 b x = x x == 1 e x = 1 x 0 a x > 0 c x = 1 x d x 1 g f x = x + 1 Aucune valeur de x ne sensibilise ch1 chemin non-exécutable Test 15 février / 71

42 Chemins exécutables Test dynamique Test structurel ch1 = abdeg ch2 = acdeg ch3 = abdfg ch4 = acdfg DT = {x = 2} sensibilise ch3 DT = {x = 3} sensibilise ch4 DT = {x = 2} sensiblise ch2 b x = x x == 1 e x = 1 x 0 a x > 0 c x = 1 x d x 1 g f x = x + 1 Aucune valeur de x ne sensibilise ch1 chemin non-exécutable Test 15 février / 71

43 Chemins exécutables Test dynamique Test structurel ch1 = abdeg ch2 = acdeg ch3 = abdfg ch4 = acdfg DT = {x = 2} sensibilise ch3 DT = {x = 3} sensibilise ch4 DT = {x = 2} sensiblise ch2 b x = x x == 1 e x = 1 x 0 a x > 0 c x = 1 x d x 1 g f x = x + 1 Aucune valeur de x ne sensibilise ch1 chemin non-exécutable Test 15 février / 71

44 Chemins exécutables Test dynamique Test structurel ch1 = abdeg ch2 = acdeg ch3 = abdfg ch4 = acdfg DT = {x = 2} sensibilise ch3 DT = {x = 3} sensibilise ch4 DT = {x = 2} sensiblise ch2 b x = x x == 1 e x = 1 x 0 a x > 0 c x = 1 x d x 1 g f x = x + 1 Aucune valeur de x ne sensibilise ch1 chemin non-exécutable Test 15 février / 71

45 Chemins exécutables Test dynamique Test structurel ch1 = abdeg ch2 = acdeg ch3 = abdfg ch4 = acdfg DT = {x = 2} sensibilise ch3 DT = {x = 3} sensibilise ch4 DT = {x = 2} sensiblise ch2 b x = x x == 1 e x = 1 x 0 a x > 0 c x = 1 x d x 1 g f x = x + 1 Aucune valeur de x ne sensibilise ch1 chemin non-exécutable Test 15 février / 71

46 Test dynamique Chemins non exécutables Test structurel Tous les chemins d un graphe de contrôle ne sont pas exécutables L ensemble des chemins de contrôle contient les chemins exécutables et les chemins non-exécutables Détecter les chemins non-exécutables est un problème indécidable Etant donné un chemin, trouver une DT qui exécute ce chemin? problème très difficile Chemins non-exécutables : casse-tête pour le testeur une erreur de codage du code mort un code pas optimisé du tout Test 15 février / 71

47 Critère de couverture Test dynamique Test structurel Critère Un critère C est une méthode de sélection qui fournit un ensemble de chemins de contrôle à couvrir, ou plus généralement, un ensemble d objets à couvrir. A tout critère C est associé un taux de couverture, exprimant le degré τ de satisfaction de C : τ = nombre d objets dénotés par C nombre d objets effectivement couverts Le problème du testeur est de trouver un ensemble de DT (le plus petit possible) qui satisfont le critère C Test 15 février / 71

48 Test dynamique Hiérarchie des critères Test structurel Nombreux critères : tous les noeuds tous les arcs tous les chemins indépendants basés sur les passages dans les boucles basés sur le flot de données... Ces critères ne sont pas équivalents demandent plus de DT détectent plus d erreurs On dit que le critère C1 est plus fort que le critère C2 si : toute faute détectée par C2 l est par C1 ; toute suite de test qui passe pour C1 passe pour C2 ; un taux de couverture de X pour C1 implique un taux au moins égal à X pour C2 Test 15 février / 71

49 Test dynamique Critère tous les noeuds Test structurel Critère le plus faible, ausi appelé TER1 (Test effectiveness ratio). consiste à couvrir l ensemble des noeuds du graphe. but du testeur : proposer un ensemble de DT qui couvrent l ensemble des noeuds. τ = nombre de noeuds couverts nombre total de noeuds Signifie que toutes les instructions sont été exécutées au moins une fois. Mise en oeuvre directe : compteurs d instructions. Test 15 février / 71

50 Test dynamique Critère tous les noeuds Exemple Test structurel int sum(int x, int y) { (a) int res = 0; (a) if (x == 0) (b) (b) res = x // erreur! (c) x=0 / \ x!= 0 else (c) (d) res = x+y; (d) \ / return res; (e) (e) } {abce, abde} donne un taux de couverture de 100% (= satisfait le critère) + détecte l erreur, avec DT = {{x=2,y=5},{x=0,y=4}} Test 15 février / 71

51 Test dynamique Critère tous les noeuds Exemple Test structurel int sum(int x, int y) { (a) int res = 0; (a) if (x == 0) (b) (b) res = x // erreur! (c) x=0 / \ x!= 0 else (c) (d) res = x+y; (d) \ / return res; (e) (e) } {abce, abde} donne un taux de couverture de 100% (= satisfait le critère) + détecte l erreur, avec DT = {{x=2,y=5},{x=0,y=4}} Test 15 février / 71

52 Test dynamique Critère tous les noeuds Exemple (2) Test structurel } int div(x) { int res = 0 ; (i) (i)--(a) if (x!= 0) (a) \ x = 1; (b) (b) res = 1 / x; (c) / return res; (d) (c)---(d) DT = {x=2} satisfait le critère tous les noeuds : {iabcd} Erreur non détectée, chemin révélélateur : {iacd} Il aurait fallu couvrir les deux branches du if : critère tous les arcs. Test 15 février / 71

53 Test dynamique Critère tous les noeuds Exemple (2) Test structurel } int div(x) { int res = 0 ; (i) (i)--(a) if (x!= 0) (a) \ x = 1; (b) (b) res = 1 / x; (c) / return res; (d) (c)---(d) DT = {x=2} satisfait le critère tous les noeuds : {iabcd} Erreur non détectée, chemin révélélateur : {iacd} Il aurait fallu couvrir les deux branches du if : critère tous les arcs. Test 15 février / 71

54 Test dynamique Critère tous les noeuds Exemple (2) Test structurel } int div(x) { int res = 0 ; (i) (i)--(a) if (x!= 0) (a) \ x = 1; (b) (b) res = 1 / x; (c) / return res; (d) (c)---(d) DT = {x=2} satisfait le critère tous les noeuds : {iabcd} Erreur non détectée, chemin révélélateur : {iacd} Il aurait fallu couvrir les deux branches du if : critère tous les arcs. Test 15 février / 71

55 Critère tous les arcs Test dynamique Test structurel ou TER2 : tous les arcs du graphe de contrôle sont couverts toutes les branches conditionnelles ont été couvertes τ = nombre des arcs couverts nombre total des arcs chaque prédicat a pris au moins une fois la valeur vrai et la valeur faux ; attention aux prédicats composés. Tous les arcs tous les noeuds. L inverse n est pas vrai. Test 15 février / 71

56 Critère tous les arcs Exemple Test dynamique Test structurel } int div(x) { int res = 0 ; (i) (i)--(a) if (x!= 0) (a) \ x = 1; (b) (b) res = 1 / x; (c) / return res; (d) (c)---(d) DT = {{x=0},{x=2}} satisfait le critère tous les arcs Test 15 février / 71

57 Critère tous les arcs Exemple Test dynamique Test structurel } int div(x) { int res = 0 ; (i) (i)--(a) if (x!= 0) (a) \ x = 1; (b) (b) res = 1 / x; (c) / return res; (d) (c)---(d) DT = {{x=0},{x=2}} satisfait le critère tous les arcs Test 15 février / 71

58 Critère tous les arcs Exemple Test dynamique Test structurel if ((a < 2) && (b == a)) (a) (a) x = 2 - a; (b) / \ else / \ x = a - 2; (c) (b) (c) DT = {{a = 1, b = 1}, {a = 3, b = 3}} Test 15 février / 71

59 Critère tous les arcs Exemple Test dynamique Test structurel if ((a < 2) && (b == a)) (a) (a) x = 2 - a; (b) / \ else / \ x = a - 2; (c) (b) (c) DT = {{a = 1, b = 1}, {a = 3, b = 3}} Test 15 février / 71

60 Test dynamique Critère tous les chemins (1) Test structurel Tous les chemins tous les arcs tous les noeuds Problème des boucles : Chemin limite : traversée de la boucle sans itération Chemin intérieur : itération de la boucle une seule fois Impossible à obtenir en général test exhaustif = tous les chemins avec toutes les valeurs possibles. Test 15 février / 71

61 Test dynamique Test structurel : exercice (1) Test structurel /* Input: n */ if (n<=0) n = 1 - n; if (n%2 == 0) n /= 2; else n = 3 * n + 1; /* Output: n */ Donnez des DT pour atteindre le critère tous les noeuds tous les arcs tous les chemins Test 15 février / 71

62 Test dynamique Test structurel : exercice (2) Test structurel /* Entrée: E, a[0],..., a[4] */ int found = 0; int i = 0; while (i < 5) { if (a[i]==e) found = 1; else found = 0; i++; } /* Sortie: found */ Donnez des DT pour atteindre le critère tous les noeuds tous les arcs tous les chemins Test 15 février / 71

63 Outline Test dynamique Test fonctionnel 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

64 Test fonctionnel Test dynamique Test fonctionnel Test fonctionnel Tester le comportement fonctionnel du logiciel et la conformité avec sa spécification boîte noire données de test engendrées par la spécification Spécification Données de test Oracle Programme Résultat attendu Résultat obtenu Test 15 février / 71

65 Test dynamique Test fonctionnel : methodes Test fonctionnel Analyse partition des domaines des données d entrée test aux limites Test combinatoire (algorithmes pairwise) Test aléatoire Génération automatique de test (à partir des spécifications) Test 15 février / 71

66 Test dynamique Test fonctionnel Partition des domaines des données Critères pour guider le choix de valeurs pertinentes. Les erreurs sont souvent dûes aux opérateurs de comparaison ou de tests aux limites < et modification de comportement pour certains domaines de valeurs Mauvaise détermination d une condition limite Comportement dépend d une partition de domaine des données Changement de omportement est fonction de classes de valeurs Classe d équivalences Test 15 février / 71

67 Classe d équivalence Test dynamique Test fonctionnel Classe d équivalence Ensemble de données de tests, impliquant le même comportement du logiciel Les classes d équivalences partitionnent les domaines des données à tester. Test 15 février / 71

68 Test dynamique Conception d un jeu de test Test fonctionnel Trois phases Pour chaque entrée, calcul de classes d équivalence sur les domaines de valeur Choix d un représentant par classe Composition par produit cartésien sur l ensemble des représentants Test 15 février / 71

69 Test dynamique Test fonctionnel Classe d équivalence Exemple trois nombres réels correspondant à la longueur des cotés d un triangle en entrée si cela ne correspond pas à un triangle, imprimer un message approprié sinon, vérifier s il s agit d un triangle isocèle, équilatéral ou scalène de plus, vérifier si son plus grand angle est aigu, droit ou obtus Classes d équivalence et Données de Test : Aigu Obtus Droit Scalène 6,5,3 5,6,10 3,4,5 Isocèle 6,1,6 7,4,4 2, 2, 2 Équilatéral 4,4,4 impossible impossible cas ne correspondant pas à un triangle : - 1,2,8 Test 15 février / 71

70 Test dynamique Partition des domaines (2) Test fonctionnel Si la valeur à tester appartient à un intervalle, construire une classe pour les valeurs inférieures une classe pour les valeurs supérieures n classes valides Si la donnée est un ensemble de valeurs, construire une classe avec l ensemble vide une classe avec trop de valeurs n classes valides Si la donnée est une contrainte/condition, construire une classe avec la contrainte respectée une classe avec la contrainte non-respectée Test 15 février / 71

71 Test aux limites Test dynamique Test fonctionnel Test aux limites Utilisation des valeurs extrêmes du domaine dans les données de test Si x appartient à un intervalle [a, b], prendre les deux valeurs aux limites (a, b) les quatre valeurs a ± ε, b ± ε, où ε est le plus petit écart possible (Ex : 1 pour les entiers) une valeur dans l intervalle Par exemple : x [3..15] valeurs aux limites : 3, 15 limites ±ε : 2, 4, 14, 16 valeur dans l intervalle : 7 Test 15 février / 71

72 Test aux limites Test dynamique Test fonctionnel Test aux limites Utilisation des valeurs extrêmes du domaine dans les données de test Si x appartient à un intervalle [a, b], prendre les deux valeurs aux limites (a, b) les quatre valeurs a ± ε, b ± ε, où ε est le plus petit écart possible (Ex : 1 pour les entiers) une valeur dans l intervalle Par exemple : x [3..15] valeurs aux limites : 3, 15 limites ±ε : 2, 4, 14, 16 valeur dans l intervalle : 7 Test 15 février / 71

73 Test aux limites (2) Test dynamique Test fonctionnel Si x appartient à un ensemble ordonné de valeurs, prendre les première, deuxième, avant-dernière, et dernière valeurs Si un certain nombre de valeurs doivent être rentrées, prendre le nombre minimum acceptable le nombre maximum acceptable des cas pour des nombres hors limites Par exemple : un fichier d entrée pouvant contenir jusqu à 255 enregistrements nombre maximum : 255 nombre minimum : 0-1 hors limites : (0), 256 Test 15 février / 71

74 Test aux limites (2) Test dynamique Test fonctionnel Si x appartient à un ensemble ordonné de valeurs, prendre les première, deuxième, avant-dernière, et dernière valeurs Si un certain nombre de valeurs doivent être rentrées, prendre le nombre minimum acceptable le nombre maximum acceptable des cas pour des nombres hors limites Par exemple : un fichier d entrée pouvant contenir jusqu à 255 enregistrements nombre maximum : 255 nombre minimum : 0-1 hors limites : (0), 256 Test 15 février / 71

75 Reflexion... Test dynamique Test fonctionnel Classes d équivalence? diminuer le nombre de cas de tests? méthodes heuristiques Partition des domaines Test aux limites le choix des classes est critique l identification des problèmes dépend de ce choix classes hors limites : tests de robustesse classes dans limites : tests nominaux Test 15 février / 71

76 Reflexion...(2) Test dynamique Test fonctionnel Soit n données d entrées, et 5 classes (tests aux limites). Test 15 février / 71

77 Reflexion...(2) Test dynamique Test fonctionnel Soit n données d entrées, et 5 classes (tests aux limites). 5 n cas de tests Test 15 février / 71

78 Test combinatoire Test dynamique Test fonctionnel Explosion combinatoire dûe à la combinaison des valeurs Défauts dépendent de l interaction d au plus 2 paramètres, pas de la combinaison de tous les paramètres Exemple (simplifié) : OS Résolution Application Affichage Windows x600 WMP 2 Ecrans Windows x768 Doom LCD Windows XP 1280x1024 IE CRT 3 4 = 81 combinaisons 9 paires Test 15 février / 71

79 Test combinatoire (2) Test dynamique Test fonctionnel 75 options binaires : Windows x600 WMP 2 écrans Windows x768 Doom LCD Windows x1024 IE CRT Windows x600 IE LCD Windows x768 WMP CRT Windows x1024 Doom 2 écrans Windows XP 800x600 Doom CRT Windows XP 1024x768 IE 2 écrans Windows XP 1280x1024 WMP LCD 2 75 cas ( ) 28 cas pour toutes les paires! Test 15 février / 71

80 Test dynamique Test combinatoire - Outils Test fonctionnel -n a 2a 3c 1a 2b 3a 1a 2c 3b 1b 2a 3b 1b 2b 3c 1b 2c 3a 1c 2a 3a 1c 2b 3b 1c 2c 3c tous les triplets, quadruplets Test 15 février / 71

81 Test dynamique Test aléatoire ou statistique Test fonctionnel Fonction de calcul pour selection des données de test fonction aléatoire dans le domaine de la donnée d entrée loi statistique sur le domaine (Ex. loi de Gauss) Avantages génération automatique des cas de test objectivité Inconvénients fonctionnement en aveugle comportements spécifiques oracle? Test 15 février / 71

82 Outline Conclusion 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

83 Réflexions (1) Conclusion Test-first vs. test-last : conception des test avant le code n est pas plus onéreux détection des défauts plus rapidement, correction précoce test-first implique réflexion approfondie sur les besoins et le design. Détection des problèmes dans l expression des besoins. test-first et test-last Tests propres et sales : test propre : le code fonctionne-t-il? test sale : le code est-il robuste observation : 5 tests sales pour un test propre Test 15 février / 71

84 Réflexions (2) Conclusion Développeur et test il pense atteindre 95% de la couverture il atteint 60% en moyenne au pire : 30% il pense que 100% du code testé est bien en fait, il faudrait 100% des branches Test 15 février / 71

85 Outline JUnit 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion 5 JUnit Test 15 février / 71

Statique / Dynamique

Statique / Dynamique Statique / Dynamique Analyse dynamique : nécessite l exécution du code binaire Principe : à partir du code source (ou d un modèle) et spécification, produire des DT qui exécuteront un ensemble de comportements,

Plus en détail

Méthodes de test. Mihaela Sighireanu

Méthodes de test. Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/methtest/ Partie I 1 Propriétés 2 Un peu de génie logiciel de test 3 Eléments Problèmes Point

Plus en détail

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel Introduction Notre contexte : pas possible d exprimer toutes les combinaisons de DT. Le test fonctionnel est basé sur la spécification/interface

Plus en détail

Tests & Preuves Michel Rueher

Tests & Preuves Michel Rueher Tests & Preuves Michel Rueher http://users.polytech.unice.fr/~rueher/cours/test/cours1testetpreuve_si4.pdf 1 Plan du cours 1. Le Test 2. Aperçu du BMC (Bounded-model checking) 3. Présentation de Event-B

Plus en détail

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel

Ioannis Parissis UFR IMA Laboratoire LIG. Test logiciel Test logiciel Objectif et plan du du cours Présenter les concepts de base sur le test logiciel Introduire des techniques simples pour construire des tests A partir de la spécification informelle du programme

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

Test et cycle logiciel

Test et cycle logiciel Test et cycle logiciel Fabrice Bouquet JDEV 2013 5 septembre 2013 INRIA / CNRS Université de Franche-Comté Fabrice Bouquet Test 1 / 59 Plan 1 Test 2 Test Structurel 3 Test fonctionnel 4 Calcul de données

Plus en détail

Cours de Test Logiciel

Cours de Test Logiciel S.Bardin Test Logiciel 1/ 41 Cours de Test Logiciel Leçon 2 : Sélection de Tests Sébastien Bardin CEA-LIST, Laboratoire de Sûreté Logicielle Rappels S.Bardin Test Logiciel 2/ 41 Vérification et Validation

Plus en détail

Eléments pratiques de test des Hiérarchies et Frameworks

Eléments pratiques de test des Hiérarchies et Frameworks Eléments pratiques de test des Hiérarchies et Frameworks Notes de cours Christophe Dony Master Info Pro - Université Montpellier-II 1 Introduction 1.1 Définitions Génie Logiciel No 18, Mars 1990. EC2.

Plus en détail

Test de logiciel dans les méthodes agiles

Test de logiciel dans les méthodes agiles Test de logiciel dans les méthodes agiles Appliqué au contexte objet (Java) 1 Aspects «théoriques» 2 Aspects pratiques le développement dirigé par les tests en partie inspiré d un cours de Laurie Williams

Plus en détail

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?

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? Validation par le test Objectifs du cours d'aujourd'hui Donner des réponses aux questions suivantes : Lydie du Bousquet 2 Qu est-ce que tester un programme? Exercice 1 : Inscrivez sur une feuille ce que

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Pourquoi et comment tester aujourd hui?

Pourquoi et comment tester aujourd hui? Pourquoi et comment tester aujourd hui??"?"?" ("?"?" Fabrice Bouquet Séminaire "Informatique Scientifique de Besançon" 3 Décembre 2015 INRIA / CNRS Université de Franche-Comté Fabrice Bouquet Test 1 /

Plus en détail

CTE Éditeur de classification arborescente pour spécifications du cas de test

CTE Éditeur de classification arborescente pour spécifications du cas de test Tessy Test d intégration et unitaire dynamique automatisé pour des applications embarquées CTE Éditeur de classification arborescente pour spécifications du cas de test Le meilleur outil de test unitaire

Plus en détail

Qualité logicielle, tests, débogage

Qualité logicielle, tests, débogage Qualité logicielle, tests, débogage A. Accro aux tests? Une introduction au test logiciel................ 4 Pourquoi le test logiciel? Des tests, pour gagner du temps! Pour aller plus loin Les objectifs

Plus en détail

Cours de Test Logiciel

Cours de Test Logiciel S.Bardin Test Logiciel 1/ 22 Cours de Test Logiciel Leçon 3 : Sélection de tests boîte blanche Sébastien Bardin CEA-LIST, Laboratoire de Sûreté Logicielle Méthodes de sélection Boite Blanche S.Bardin Test

Plus en détail

Céline LAURENT Responsable Recette Décisionnel / SI. 28/02/07 Céline LAURENT Décisionnel Projet TEST Page 1 sur 27

Céline LAURENT Responsable Recette Décisionnel / SI. 28/02/07 Céline LAURENT Décisionnel Projet TEST Page 1 sur 27 Céline LAURENT Responsable Recette Décisionnel / SI 28/02/07 Céline LAURENT Décisionnel Projet TEST Page 1 sur 27 LES TESTS Définitions Intérêt Difficultés Les différents tests dans le cycle de vie du

Plus en détail

Automatisation du Test Logiciel

Automatisation du Test Logiciel S.Bardin Test Logiciel 1/ 54 Automatisation du Test Logiciel Sébastien Bardin CEA-LIST, Laboratoire de Sûreté Logicielle sebastien.bardin@cea.fr http://sebastien.bardin.free.fr Plan S.Bardin Test Logiciel

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Vérification et Validation

Vérification et Validation Vérification et Validation Génie Logiciel Master 1 II Mihaela Sighireanu Objectifs I. Introduire la vérification et la validation (V&V) du logiciel et comprendre leurs différences. II.Définir le plan de

Plus en détail

Rapport du Jury du Concours 2010 Épreuve Pratique d Algorithmique et de Programmation (EPAP)

Rapport du Jury du Concours 2010 Épreuve Pratique d Algorithmique et de Programmation (EPAP) Rapport du Jury du Concours 2010 Épreuve Pratique d Algorithmique et de Programmation (EPAP) Loris Marchal, Guillaume Melquion, Frédéric Tronel 21 juin 2011 Remarques générales à propos de l épreuve Organisation

Plus en détail

Département Informatique L3 Mention Informatique Jean-Michel Richer Architecture des Ordinateurs jean-michel.richer@univ-angers.

Département Informatique L3 Mention Informatique Jean-Michel Richer Architecture des Ordinateurs jean-michel.richer@univ-angers. Département Informatique L3 Mention Informatique Jean-Michel Richer Architecture des Ordinateurs jean-michel.richer@univ-angers.fr 2015/2016 Travaux Dirigés 1 Représentation de l information En informatique,

Plus en détail

Analyse statique de programmes et interprétation abstraite. Olivier Bouissou

Analyse statique de programmes et interprétation abstraite. Olivier Bouissou Analyse statique de programmes et interprétation abstraite Olivier Bouissou Organisation du cours. Intervenants : cours et TP assurés par Olivier Bouissou (olivier.bouissou@cea.fr) - CEA LIST. Déroulement

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Présentation du logiciel Xcas

Présentation du logiciel Xcas Présentation du logiciel Xcas Xcas est un logiciel très complet qui permet d effectuer : Du calcul numérique, valeur exactes ou approchées ; Du calcul formel, du plus simple, développer factoriser jusqu

Plus en détail

Tableaux et pointeurs (corrigé)

Tableaux et pointeurs (corrigé) Tableaux et pointeurs (corrigé) Tous les exercices sont à faire. 1 Tableaux Exercice 1. Moyenne (*) Écrivez une fonction qui calcule la moyenne de n nombres stockés dans un tableau de double. Prototype

Plus en détail

6761 Validation de la conformité 21.03.2007

6761 Validation de la conformité 21.03.2007 6761 Validation de la conformité 21.03.2007 Peter DAEHNE 1 Tests de stress Les tests de stress permettent d étudier le comportement du logiciel lorsque celui-ci est mis dans des situations extrêmes, aux

Plus en détail

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

Approche de modélisation des tests de logiciels complexes par un système multi-agents 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

Plus en détail

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007 Vision industrielle et télédétection - Détection d ellipses Guillaume Martinez 17 décembre 2007 1 Table des matières 1 Le projet 3 1.1 Objectif................................ 3 1.2 Les choix techniques.........................

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Java & Algorithme Corrigé du test final

Java & Algorithme Corrigé du test final Java & Algorithme Corrigé du test final 1 QUESTIONS EN JAVA Chaque question est sur un point, sauf certaines sur deux points. En tout, le QCM est noté sur 24 : la note est divisée par 6 pour revenir entre

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

TD n 1 - Tests de couverture en langage C

TD n 1 - Tests de couverture en langage C ENSEIRB Année 201-2014 ème année IT06 TD n 1 - Tests de couverture en langage C Résumé : Cette feuille compare les différentes techniques de test structurel et fonctionnel, ainsi que les aspects du test

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Analyse Statique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 12 mai 2007 1 / 38 Indécidabilité de la Terminaison

Plus en détail

Génération aléatoire de structures ordonnées

Génération aléatoire de structures ordonnées Génération aléatoire de structures ordonnées Olivier Roussel Équipe APR Laboratoire d Informatique de Paris 6 Université Pierre et Marie Curie ALÉA 2011 7 mars 2011 Olivier Roussel (LIP6) Génération de

Plus en détail

Modélisation des Systèmes d Information Jean-Yves Antoine

Modélisation des Systèmes d Information Jean-Yves Antoine Modélisation des Systèmes d Information Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine Processus de développement logiciel Jean-Yves Antoine U. Bretagne Sud - UFR SSI - IUP Vannes année 2001-2002

Plus en détail

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

Epidémiologie, l urne de Pólya, partie II

Epidémiologie, l urne de Pólya, partie II Epidémiologie, l urne de Pólya, partie II Se mettre par groupe de deux. Traiter la fiche dans l ordre. Un compte de rendu de TP devra être rendu avec les réponses écrites aux questions, les recherches

Plus en détail

Algorithmique. De la seconde à la terminale

Algorithmique. De la seconde à la terminale Algorithmique De la seconde à la terminale Le calendrier Rentrée 2009 : o En seconde : nouveau programme pour tous Rentrée 2010 : o En première : aménagements en ES et S Rentrée 2011 : o En première :

Plus en détail

Premier programme VBA : syntaxe, édition, compilation

Premier programme VBA : syntaxe, édition, compilation 1 Premier programme VBA : syntaxe, édition, compilation Le langage VBA (Visual Basic for Applications) permet de concevoir des programmes selon une syntaxe qui lui est propre, puis d éditer et d exécuter

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013»

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» I Objectifs Niveau fondamental : «on se fixe pour objectif la

Plus en détail

Licence STIC, Semestre 1 Algorithmique & Programmation 1

Licence STIC, Semestre 1 Algorithmique & Programmation 1 Licence STIC, Semestre 1 Algorithmique & Programmation 1 Exercices Alexandre Tessier 1 Introduction 2 instruction de sortie 3 expressions 4 variable informatique 5 séquence d instructions, trace Exercice

Plus en détail

Algorithmique. Mode d application

Algorithmique. Mode d application I - Généralités Algorithmique T ale S Définition: Un algorithme est une suite finie d instructions permettant la résolution systématique d un problème donné. Un algorithme peut-être utilisé pour décrire

Plus en détail

Introduction Basé sur la spécification ou l'interface du programme P On peut appliquer le critère de couverture complète du domaine

Introduction Basé sur la spécification ou l'interface du programme P On peut appliquer le critère de couverture complète du domaine Le test ''boîte noire'' LOG4500 Validation et tests de logiciels Professeur: John MULLINS Introduction asé sur la spécification ou l'interface du programme P On peut appliquer le critère de couverture

Plus en détail

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 Pour me contacter : irene.rougier@ac-clermont.fr 1. Introduction ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 De nombreux documents et informations

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu SNAKE Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp Copie d écran du jeu Principe de fonctionnement du jeu : le serpent avance automatiquement, le joueur ne peut agir que sur

Plus en détail

Algorithmique et structures de données I

Algorithmique et structures de données I Algorithmique et structures de données I Riadh Ben Messaoud Université 7 novembre à Carthage Faculté des Sciences Économiques et de Gestion de Nabeul 1ère année Licence Fondamentale IAG 1ère année Licence

Plus en détail

Introduction aux tests du logiciel

Introduction aux tests du logiciel Introduction aux tests du logiciel F.X. Fornari xavier.fornari@esterel-technologies.com P. Manoury pascal.manoury@pps.jussieu.fr 2011 Contents 1 Présentation du cours 3 2 Introduction aux tests logiciels

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

Analyse de programme

Analyse de programme Analyse de programme À quoi ça sert? Comment ça marche? Bertrand Jeannet et Alain Girault INRIA Rhône-Alpes 25 janvier 2012 A. Girault et B. Jeannet (INRIA) Analyse de programme 25 janvier 2012 1 / 41

Plus en détail

B03. Ensembles, applications, relations, groupes

B03. Ensembles, applications, relations, groupes B03. Ensembles, applications, relations, groupes Bernard Le Stum Université de Rennes 1 Version du 6 janvier 2006 Table des matières 1 Calcul propositionnel 2 2 Ensembles 5 3 Relations 7 4 Fonctions, applications

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Multiplication par une constante entière

Multiplication par une constante entière Multiplication par une constante entière Vincent Lefèvre Juin 2001 Introduction But : générer du code optimal à l aide d opérations élémentaires (décalages vers la gauche, additions, soustractions). Utile

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

INF121: Algorithmique et Programmation Fonctionnelle

INF121: Algorithmique et Programmation Fonctionnelle INF121: Algorithmique et Programmation Fonctionnelle Cours 1: Identificateurs, types de base et fonctions Année 2013-2014 Identificateurs La notion d identificateur Un concept fondamental dans les langages

Plus en détail

Test et Validation du Logiciel

Test et Validation du Logiciel Test et Validation du Logiciel McInfo4_ASR Tests Janvier 2009 Patrick FELIX patrick.felix@labri.fr IUT Bordeaux 1 Plan Introduction : Pourquoi de la VVT? 1 Introduction au test de logiciels 2 Le test fonctionnel

Plus en détail

Utilisation de l'outil GATeL pour l'évaluation des tests de logiciels critiques à l'irsn

Utilisation de l'outil GATeL pour l'évaluation des tests de logiciels critiques à l'irsn Journée SEE "Certification et méthodes formelles" Utilisation de l'outil GATeL pour l'évaluation des tests de logiciels critiques à l'irsn ONERA Toulouse, 3 février 2004 Jean Gassino (jean.gassino@irsn.fr).

Plus en détail

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année UFR Sciences et Techniques Licence S&T 1ère année Informatique UE 102 Architecture des ordinateurs et Algorithmique de base Jean-Yves Antoine http://www.intro.univ-tours.fr/~antoine/ UFR Sciences et Techniques

Plus en détail

Typage et Analyse Statique

Typage et Analyse Statique Typage et Analyse Statique Cours 1 Emmanuel Chailloux Spécialité Science et Technologie du Logiciel Master mention Informatique Université Pierre et Marie Curie année 2015-2016 Cours 1 - Typage et Analyse

Plus en détail

Chap. VII : arbres binaires

Chap. VII : arbres binaires Chap. VII : arbres binaires 1. Introduction Arbre : collection d objets avec une structure hiérarchique Structure intrinsèque descendants d une personne (elle incluse) A ascendant connus d une personne

Plus en détail

Algorithmique avancée en Python TDs

Algorithmique avancée en Python TDs Algorithmique avancée en Python TDs Denis Robilliard sept. 2014 1 TD 1 Révisions 1. Ecrire un programme qui saisit un entier, et détermine puis affiche si l entier est pair où impair. 2. Ecrire un programme

Plus en détail

Correction de programmes : Logique de Hoare

Correction de programmes : Logique de Hoare 16 juillet 2009 Logique et informatique Vis-à-vis de l informatique la logique a au moins 2 rôles : 1 Externe et théorique (fondements de l informatique - Électif en S4) : Logique comme méta-informatique

Plus en détail

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de

Plus en détail

Que faire en algorithmique en classe de seconde? ElHassan FADILI Lycée Salvador Allende

Que faire en algorithmique en classe de seconde? ElHassan FADILI Lycée Salvador Allende Que faire en algorithmique en classe de seconde? BEGIN Que dit le programme? Algorithmique (objectifs pour le lycée) La démarche algorithmique est, depuis les origines, une composante essentielle de l

Plus en détail

Analyse Statique de Programmes

Analyse Statique de Programmes Analyse statique et application. Typage. Analyse de flots de données. Exemples de transformations simples de programmes au niveau source. Prépa Agreg de Maths, option Info - ENS Cachan-Bretagne Thomas

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Algorithmique et programmation : introduction

Algorithmique et programmation : introduction PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours, Semaine 0 avril mai 2013 Algorithmique et programmation : introduction Résumé Ce document décrit le module «Algorithmique et Programmation 1». Il introduit

Plus en détail

6. Des objets bien conçus

6. Des objets bien conçus Conception objet en Java avec BlueJ une approche interactive 6. Des objets bien conçus David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Conception objet en Java avec

Plus en détail

Processus d Informatisation

Processus d Informatisation Processus d Informatisation Cheminement de la naissance d un projet jusqu à son terme, deux grandes étapes : Recherche ou étude de faisabilité (en amont) L utilisateur a une idée (plus ou moins) floue

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

Projet individuel d algorithmique-programmation AP1 : groupe 1.1 - complément bibliothèque graphique

Projet individuel d algorithmique-programmation AP1 : groupe 1.1 - complément bibliothèque graphique Projet individuel d algorithmique-programmation AP1 : groupe 1.1 - complément bibliothèque graphique octobre 2010 1 Affichage graphique statique Il en existe trois bibliothèques graphiques en Ocaml : la

Plus en détail

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2 Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html 1 Généralités sur la programmation ALGORITHMIE - PROGRAMMATION 2 Algorithmie vs. Programmation Algorithmie Programme

Plus en détail

Développement spécifique d'un système d information

Développement spécifique d'un système d information Centre national de la recherche scientifique Direction des systèmes d'information REFERENTIEL QUALITE Procédure Qualité Développement spécifique d'un système d information Référence : CNRS/DSI/conduite-proj/developpement/proc-developpement-si

Plus en détail

Mathématique - Cours Filière STAV 2014-2015 Centre de Formation aux Métier de la Montagne Marine Estorge

Mathématique - Cours Filière STAV 2014-2015 Centre de Formation aux Métier de la Montagne Marine Estorge Mathématique - Cours Filière STAV 2014-2015 Centre de Formation aux Métier de la Montagne Marine Estorge Le programme se compose ainsi : Rappels collège/seconde Partie STAV 1/3 Partie STAV 2/3 Partie STAV

Plus en détail

Importance des cas tests. Qualification de code

Importance des cas tests. Qualification de code Comment s assurer de la qualité? Revue de code Règles d intégration Importance des cas tests Qualification de code 1 Comment s assurer de la qualité? Validation élémentaire - revue de code : En continu

Plus en détail

Cours de Master Recherche

Cours de Master Recherche Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction

Plus en détail

Cycle de vie Définitions Recette Efficacité Rubik s cube Pourquoi Algo simple Les briques De l algorithme au programme Py

Cycle de vie Définitions Recette Efficacité Rubik s cube Pourquoi Algo simple Les briques De l algorithme au programme Py Cycle de vie Définitions Recette Efficacité Rubik s cube Pourquoi Algo simple Les briques De l algorithme au programme Py M1204 - Algorithmique et informatique Chapitre 1 : présentation Ludovic Grossard

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Arbres de décision. Intelligence Artificielle et Systèmes Formels Master 1 I2L

Arbres de décision. Intelligence Artificielle et Systèmes Formels Master 1 I2L Arbres de décision Intelligence Artificielle et Systèmes Formels Master 1 I2L Sébastien Verel verel@lisic.univ-littoral.fr http://www-lisic.univ-littoral.fr/ verel Université du Littoral Côte d Opale Laboratoire

Plus en détail

Licence E.E.A. TD N 2 de Langage C/C++

Licence E.E.A. TD N 2 de Langage C/C++ TD N 2 de Langage C/C++ 1 Licence E.E.A. TD N 2 de Langage C/C++ Ce TD a pour objectif de vous faire découvrir et utiliser le langage C et peut être C++. Il s agira de transcrire sous la forme d un programme

Plus en détail

Techniques et outils de test pour les logiciels réactifs synchrones

Techniques et outils de test pour les logiciels réactifs synchrones Journées Systèmes et Logiciels Critiques Institut IMAG ; 14-16 nombre 2000 Techniques et outils de test pour les logiciels réactifs synchrones Farid Ouabdesselam 1 Méthodes de test : classification générale

Plus en détail

Informatique. Programmation en Python.

Informatique. Programmation en Python. BCPST 1 B 13 septembre 2015 Informatique. Programmation en Python. Ce document est un support de cours, il vous permet d avoir sa structure et ses éléments les plus importants. Au cours des séances en

Plus en détail

Paradigme de programmation Impératif

Paradigme de programmation Impératif Paradigme de programmation Impératif La programmation impérative est caractérisée par, la programmation avec un état et des commandes qui modifient l état : Programmation impérative Procédurale = Programmation

Plus en détail

INF-130 Travail Pratique #2

INF-130 Travail Pratique #2 École de technologie supérieure INF-30 Travail Pratique #2 Travail individuel Tracé d un métro Francis Bourdeau, Frédérick Henri et Patrick Salois Remise à la 0 e semaine. Objectifs - Amener l étudiant

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Domaines réalistes pour la génération de tests unitaires dirigés par les contrats

Domaines réalistes pour la génération de tests unitaires dirigés par les contrats Université de Franche-Comté Mémoire, Master 2 Recherche Domaines réalistes pour la génération de tests unitaires dirigés par les contrats par Ivan Enderlin encadré par Frédéric Dadeau Maître de conférences

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

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

Vérifier la qualité de vos applications logicielle de manière continue IBM Software Group Vérifier la qualité de vos applications logicielle de manière continue Arnaud Bouzy Kamel Moulaoui 2004 IBM Corporation Agenda Analyse de code Test Fonctionnel Test de Performance Questions

Plus en détail

Cours de Test Logiciel

Cours de Test Logiciel S.Bardin Test Logiciel 1/ 31 Cours de Test Logiciel Leçon 4 : Tests de régression Sébastien Bardin CEA-LIST, Laboratoire de Sûreté Logicielle sebastien.bardin@cea.fr http://sebastien.bardin.free.fr Tests

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages Automates Claude Moulin Université de Technologie de Compiègne Printemps 2013 Sommaire 1 Automate fini 2 Automate et langages réguliers 3 Automate à pile Automate fini déterministe

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail