Les assertions en Java.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Spécification et qualité du logiciel
Introduction à l’Algorithmique
Algorithmique Résume.
CONTINUOUS TESTING Hakima Zidouri Informatique Réseau 3
Page 1 Déboguer un programme Java Jacques Lonchamp.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
Système formel Nous avons introduit : signes de variables (x, y, z, …), de constantes (0, 1), d’opérations (+, ), de relations (=, ) Axiomes : ce sont.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Introduction : Compilation et Traduction
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Les bases de l’Algorithmique
Principes de programmation (suite)
Tests Programmation par contrats
Outils de tests, logs et documentation Frédéric Moalannée 2010/2011 POO.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Démarche de résolution de problèmes
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Algorithmique et Programmation
Algorithmique et Programmation
Introduction à la programmation (Java)
Complément Le diagramme des classes
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Points importants de la semaine Les constantes de compilation. Les fonctions.
CSI3525: Concepts des Languages de Programmation
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Partie II Sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Le GRAFCET GRAphe Fonctionnel de Commande par Etapes et Transitions
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures alternative et répétitive
Introduction Un test sur les tests Ce que n’est pas le test
La librairie assert.h.
Animateur : Med HAIJOUBI
Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661.
GDB: Debogueur GNU Multi-langage Permet l’inspection du source pendant l’exécution Permet le débogage post-mortem Bogue (de châtaigne), terme recommandé.
Paradigmes des Langages de Programmation
Présenté par : Attia Hamza Merzouk Abdelkrim 2003/2004
Annexe 1 Tests unitaires d'applications Java avec JUNIT
B.Shishedjiev -Débogueur1 Déboguer? Comment trouver et corriger les erreurs?
Paradigmes des Langages de Programmation
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
JavaScript.
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
GESTION ET TRAITEMENT DES ERREURS
Algorithmique et programmation (1)‏
Programmation objet La base.
Autres éléments du langage
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Introduction à Visual Studio C++ (VC++)
Les tests.
 Syntaxe du langage PHP
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
1 Complément JAVA les assertions. 2 lan Tests et erreurs Assertions en Java Utilisation Bonne pratique des assertions.
1 Cpt JAVA : Eclipse (bis) Debogage. 2 Code à tester public class siecle { int t; public siecle() { super(); t=1; } static public boolean vrai() { return(false);
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

Les assertions en Java

Introduction aux assertions Définition textuelle: Proposition que l'on avance comme vraie Assert = Confirmer Instruction assert Permet de tester des suppositions sur le comportement du code Java Contient une expression booléenne supposée être vraie A l’exécution Par défaut les assertions ne sont pas activées, instruction sans effet Possibilité des les activer pour débogage et tests Evaluation de l’expression booléenne Si vraie, assert est sans effet Si fausse, une erreur est lancée Intérêt Moyen rapide et efficace de détecter les erreurs de programmation Facilite la maintenance du code en documentant le fonctionnement interne du programme Effectuer une interprétation rapide de nos certitudes par la machine (pré-conditions, post-conditions, variant, et invariant) Rappel: Un invariant est quelque chose qui est toujours vrai dans notre classe

La syntaxe A l’exécution Dans sa forme la plus élaborée, une assertion s’écrit: assert expression1 : expression2; Où expression1 est une expression booléenne, conditionnelle expression2 est une expression quelconque ou plus précisément un objet contenant les informations concernant l'échec de l'assertion Exemple:assert isMaConditionVraie() :"Ma condition doit être vérifiée"; A l’exécution expression1 est évaluée Si elle est fausse, une erreur de type AssertionError est lancée La valeur de l’expression2 (transformée en chaîne de caractères) est utilisée comme message dans l’objet AssertionError Package: Object  Throwable  Error  AssertionError

Compilation/Activation Par défaut, le compilateur ne reconnaît pas l’instruction assert Assert a pu être utilisé comme identificateur depuis la version 1.4 de Java Pour compiler du code Java utilisant les assertions  javac –source 1.4 ClasseAssertion.java Par défaut, les assertions ne sont pas testées à l’exécution Les prédicats définis par les instructions assert étant supposés être toujours vrais, il serait inefficace de les tester à chaque exécution Elles peuvent être activer à tout moment pour tester du code, diagnostiquer des erreurs, débuguer Au moment de lancer l’application, il faut spécifier à la JVM d’utiliser (ou non) les assertions à l’aide de l’argument en ligne de commande: -ea ou –enableassertions pour l’activation; -da ou –disableassertions pour la désactivation des assertions Utilisation du framework JUnit

Un aperçu des méthodes assert

Utilisation des assertions Pour documenter toutes les suppositions, il est préférable de le faire en même temps que notre développement Exemple: écriture d’une méthode manipulant une variable x pouvant prendre comme valeur soit 0, soit 1: Avant les assertions Après les assertions Assertion informelle Assertion formelle  Possibilité de bugs n’apparaissant pas tout de suite et difficile à localiser  Lancement d’une AssertionError, le bug apparaît immédiatement

Utilisation des assertions Pour tester une précondition d’une méthode privée Le programmeur fait la supposition que toutes les méthodes qui invoquent cette méthode respectent cette précondition Cette supposition est possible car la méthode étant privée, il a le contrôle sur tous ces appels Il peut vérifier que cette supposition est juste en activant les assertions Ne pas utiliser assert pour tester les préconditions d’une classe publique  Le programmeur ne peut garantir que la méthode sera toujours appelé correctement

Utilisation des assertions Pour tester un invariant de classe Exemple: écriture d’une classe permettant d’insérer des objets dans une liste, tout en s’assurant que cette liste est toujours triée Méthode testant si la liste est correctement triée