23
GEF 243B Programmation informatique appliquée Tests

Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Embed Size (px)

Citation preview

Page 1: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

GEF 243BProgrammation informatique

appliquée

Tests

Page 2: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Revue

• Quelle est la différence entre une abstraction, le masquage d’information et l’ encapsulation?

• Quelles sont les deux composantes d’un module?

Page 3: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Synopsis

• Tests – Le concept• Tests boîte blanche• Tests boîte noir

Page 4: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Plusieurs études ont été conduites et indiquent qu’entre 30 et 85 erreurs sont introduites pour chaque 1000 lignes de code produites.

• Même pour le logiciel qui est testé de façon intensive, tel que le logiciel à sécurité critique, 0.5 à 3 erreurs seront encore présentent dans 1000 lignes de code – Myers 1986 IEEE computer

• “Les bons tests sont aussi difficiles à produire que les bons designs.” – Hans Van Vliet

Page 5: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Pour que les tests soient efficaces, le testeur doit avoir une approche et attitude qui sont propices à exposer les erreurs

• La loi de Dijkstra pour les tests: “Les tests peuvent être utilisés pour montrer la présence des bogues, mais jamais leurs absences.” conférence de l’OTAN 1969

Page 6: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Ce que Dijkstra veut dire est que les tests doivent se concentrer sur la détection des erreurs et non sur la démonstration que le programme ne contient plus d’erreurs.

• Si vous voulez prouver que votre programme est correct, vous pouvez, et allez sûrement manquer des erreurs.

• Si vous retenez seulement une chose de ce cours ce doit être que vous devez croire que votre code contient des erreurs avant de le tester

Page 7: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Vos efforts pour les tests devraient toujours être axés pour essayer de faire planter votre codeEssayez des valeurs hors de la plage que vous avez

spécifiésEssayez des quantités d’information qui sont nuls, en

trop, et des quantités moyennes.Essayez des valeurs erronés (entrez une chaîne de char

au lieu d’un nombre)…

• Les tests doivent donc tester les bornes pour lesquelles le programme a été écrit.

Page 8: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Votre programme doit être dessiné pour être testableLes modules et les fonctions doivent être petites

et cohésivesSi vous écrivez des fonctions qui sont

complexes, vos tests vont être complexesVous devez toujours penser à vos tests quand

vous faites le design de vos programmes, car tôt ou tard vous allez avoir à tester ce que vous avez produit

Page 9: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Il y a des parties de votre code qui ne sont pas testables facilementLes tests de défaillances, le traitement des erreurs et

certaines conditions anormales:• Vous ne risqueriez pas une déflagration nucléaire pour tester le

logiciel de sécurité.• Vous devez parfois simuler, ou utiliser d’autres méthodes pour

vérifier votre codeLes fuites de mémoire ne peuvent pas être testées, vous

devez inspecter votre code et vérifier que les blocs de mémoires sont libérés quand vous n’en avez plus de besoin.

• Ceci est un des tests les plus difficile.

Page 10: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Quand vous allez décider quels tests vous allez exécuter, considérez le spectre des situations et comportements:

• Chaque comportement doit être spécifié en terme de l’état courrant, des entrées, des sorties et de l’état résultant

Suppositions Exceptions Cas normales

comportements contrôlés

situations normales

comportements non contrôlés

situations anormales

Page 11: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept• Les suppositions sont des situations qui sont anormales et

des comportements qui sont non-contrôlés; donc elles sont non-testées.

• Cependant les suppositions doivent être documentées• Les documents de requis et de design doivent contenir et

tracer toutes les suppositions• C’est une bonne pratique d’identifier toutes les

suppositions dans l’entête de chaque module et fonctions pour identifier les limitations du logiciel

• Ayez une suppositions seulement si vous ne pouvez pas observer, identifier ou contrôler le comportement

Page 12: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Les exceptions sont des situations qui sont anormales et que nous ne voulons pas qui se produisent

• Mais contrairement aux suppositions, nous pouvons détecter et contrôler le comportement des exceptions

• Donc les exceptions sont des comportements contrôlés

• Les trois étapes pour traiter les exceptions sont:Détecter,Traiter, etRapporter.

Page 13: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• La détection d’une exception entraîne la capacité de reconnaître les états qui ne sont pas correctsReconnaître quand il ne reste plus de mémoire quand

on utilise malloc Vérifier le dénominateur avant chaque opération de

divisionVérification pour savoir si une fonction retourne un

code d’erreurVérification pour savoir si un pointeur est non NULL,

• Donc une exception est observable

Page 14: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept• Les situations normales doivent toujours être détectables et

prédictibles à partir d’un état connu et un ensemble d’entrées, donc ces situations sont des comportements contrôlés

• La plus part des requis sont toujours énoncés de façon positive: Le logiciel doit …

• Les requis doivent aussi inclure tout comportement qui est contre indiqué Le logiciel ne doit pas …

Page 15: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests – Le concept

• Les deux types de comportement, positif et contra doivent être le sujet de tests

• Quand vous écrivez un plan de test, vous devriez toujours considérer les comportements normaux et anormaux

• Les suppositions devraient toujours être révisées et justifiées pour s’assurer que la situation est vraiment non détectable et non contrôlable

Page 16: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests boîte blanche

void main(void)

{

CATALOGUE *pNew = NULL;

pNew = (CATALOGUE *)malloc(sizeof(CATALOGUE));

if (pNew == NULL) exit(0);

strcpy(pNew->product, "Millennium Falcon");

pNew->price = 101.50;

pNew->pNextProduct = NULL;

pProductsList->pNextProduct = pNew;

}

Page 17: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests boîte blanche

• Il y a deux types de tests: boîte blanche et boîte noir

• Les tests boîte blanche teste le code et l’état des variables dans une fonction ou un module

• Les tests boîte blanche vérifie donc la structure du code, les flots logiques et les détails d’implémentation

• Les tests boîte blanche sont donc appelé test structurels

Page 18: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests boîte blanche

• Dans les tests boîte blanche chaque condition et chaque mécanisme de flot doit être testéChaque condition doit être testé pour les cas normales:

• Valeurs moyennes (en dedans des bornes)

• Valeurs maximums et minimums pour être certain que les bornes sont respectées (nombre d’itérations, plus grand que, plus petit que,… )

Chaque condition doit aussi être testée pour les exceptions:

• Valeurs qui devraient générer des erreurs

• Access aux tableaux hors des bornes …

Page 19: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests boîte blanche

• Donc les tests boîte blanche traitent les contrôles de flots, les aspects du langages de l’ implémentation d’un algorithme

• Chaque algorithme doit être testé pour assurer que chaque ligne de code est couverte

• Chaque condition qui fait partie d’une structure de décision est testé au moins une fois pour chaque valeur VRAI et FAUX

Page 20: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests boîte noir

Page 21: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests boîte noir

• Les tests boîte noir sont des tests pour lesquels nous ne regardons pas le code comme tel

• Nous savons ce qu’une fonction donne comme sortie pour une entrée donnée et c’est tout ce qui nous concerne pour ces tests

• Nous nous ne préoccupons pas des détails internes de la fonction ou du module

• Nous testons les fonctions comme des mécanismes de transformations opaques

• Les tests boîte noir sont aussi connu comme des tests fonctionnels car ils tests les fonctions en entiers

Page 22: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Tests boîte noir

• Encore ici nous testons les situations normales et anormales

• Quand nous testons les modules et les fonctions, nous donnons des paramètres qui peuvent engendrer les deux types de situations

• Les outils de couverture devraient être utilisés durant les tests boîte noir pour mesurer l’efficacité des tests

Page 23: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests

Quiz Time

• Que veut dire Dijkstra avec sa loi pour les tests?• Quelles sont les trois type de cas dans les tests?• Quelles sont les différences entre les tests boîtes

blanche et noir?