Test et couverture de code Java avec JUnit et SonarQube



Documents pareils
Environnements de développement (intégrés)

JOnAS Day 5.1. Outils de développements

SonarQube : une autre vision de votre logiciel

Clément DAVID, Pierrick KNECHT, Pierre LALLEMENT, Ronan PRESLE

Spring par la pratique

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

TP1 : Initiation à Java et Eclipse

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP - MAGENT O. 30 ans - 6 ans d'expérience

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

EXA1415 : Annotations

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

Bonnes Pratiques de Développement PHP. Pascal MARTIN SQLI Forum PHP 2009, Paris

La base de données XML exist. A. Belaïd

Java Licence professionnelle CISII,

Plateforme de capture et d analyse de sites Web AspirWeb

Squale Le portail qualimétrie open-source

L Intégration Continue & Agilité

Introduction à Eclipse

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

TP1 : Initiation à Java et Eclipse

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

GESTION DE L AUTOMATISATION DES TESTS DES SYSTÉMES ERP EN UTILISANT DES OUTILS COREJET. Tetiana KUSHCHYNSKA

1. Installation d'un serveur d'application JBoss:

Analyse de performance, monitoring

Création d un service web avec NetBeans 5.5 et SJAS 9

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Etude de cas : PGE JEE V2

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Tutoriel d installation de Hibernate avec Eclipse

J2EE in practice. Olivier Liechti Patrik Fuhrer. Department of Informatics. Computer Science Master Course - SH 2004/05

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?

Bases Java - Eclipse / Netbeans

RMI le langage Java XII-1 JMF

as Architecture des Systèmes d Information

TP1. Outils Java Eléments de correction

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

Président d Inotekk Gestion de la société, développement du portefeuille clients, gestion et réalisation des projets informatiques

Cours 1: Java et les objets

Programmer en JAVA. par Tama

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Plan. Tests. 1. Introduction. 1. Introduction

Java au cœur de la base de données Oracle

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

Processus. Intégration et Tests Nat. Approuvé par : Patrick Atlan Fonction : Directeur Général V isa :

CONFIGURATION DE LA LIBRAIRIE WEBUTIL (10g) Oracle Forms 10g

Conception des systèmes répartis

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

contact@nqicorp.com - Web :

Ingénierie des Modèles. Méta-modélisation

Département Génie Informatique

Environnement de Développement Outils Open-Source d'integration Continue. Exemple de Mise en Oeuvre

Programmation par les Objets en Java

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

COMPÉTENCES TECHNIQUES

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

TRAAM STI Acquisition et exploitations pédagogiques des données sur un système pédagogique

APIs de table pour SQL Server

Catalogue Formation «Vanilla»

Introduction à JDBC. Accès aux bases de données en Java

Intégration de l interface graphique de Ptidej dans Eclipse

Documentation de conception

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

XP DAY mai. Erwan Alliaume Nicolas Le Coz

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

Programmation Orientée Objet

contact@nqicorp.com - Web :

Remote Method Invocation en Java (RMI)

Qu'est-ce que le BPM?

Formation : Langues : Types d Intervention et Secteurs d Activité :

Tutorial pour une application simple

M Études et développement informatique

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Normes pour la mise en œuvre des objectifs de performances dans les cours interentreprises Polybâtisseuse CFC / polybâtisseur CFC

Plan du cours. Historique du langage Nouveautés de Java 7

CQP Développeur Nouvelles Technologies (DNT)

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

BIRT (Business Intelligence and Reporting Tools)

Remote Method Invocation (RMI)

Les systèmes de gestion de version

Guide d'installation. Release Management pour Visual Studio 2013

TD/TP PAC - Programmation n 3

Génération de code binaire pour application multimedia : une approche au vol

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - Android. 29 ans - 5 ans d'expérience

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Initiation à JAVA et à la programmation objet.

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

Industrialisation de la chaîne de production : validation, intégration, tests

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité.

Programmation par composants (1/3) Programmation par composants (2/3)

Refonte front-office / back-office - Architecture & Conception -

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

Auto-évaluation Programmation en Java

Test de logiciel dans les méthodes agiles

Transcription:

avec JUnit et SonarQube

Test en Java avec JUnit 4.x Application au programme Graphab Intégration dans la chaîne de développement Couverture de code avec JaCoCo et SonarQube

Test en Java avec JUnit 4.x JUnit : un standard de facto pour Java très utilisé bien intégré dans les IDE beaucoup d'extensions disponibles Autre solution répandue : TestNG

Test en Java avec JUnit 4.x Le code des tests est placé dans un répertoire distinct du code de l'application Avec Maven : code source src/main/java/ code des tests src/test/java/ Eclipse & Netbeans : code source src/ code des tests test/

Test en Java avec JUnit 4.x Aucune obligation de nommage pour les classes et les méthodes de test tout est défini par les annotations @Test : méthode de test @Before : avant chaque test @After : après chaque test @BeforeClass : initialisation des tests @AfterClass : finalisation des tests

Test en Java avec JUnit 4.x public class ProjectTest { @BeforeClass public static void setupclass() { // exécuté une fois avant tous les tests de cette classe } @AfterClass public static void teardownclass() { // exécuté une fois après tous les tests de cette classe } @Before public void setup() { // exécuté avant chaque test de cette classe } @After public void teardown() { // exécuté après chaque test de cette classe } @Test public void testconstructor() { // teste le constructeur } @Test public void testmethod1() { // teste une méthode } @Test public void testmethod2() { // teste une autre méthode } }

Test en Java avec JUnit 4.x Number.java : public class Number { public double value;... public Number multiply(number n) { return new Number(value * n.value); } } NumberTest.java : import static org.junit.assert.*; public class NumberTest { @Test public void testmultiply() { // vérifie que 5*0.2 = 1 assertequals(new Number(5).multiply(new Number(0.2)).value, 1); asserttrue(new Number(5).multiply(new Number(0.2)).value == 1); // vérifie que 0.33*3=1 à une précision de 0.01 assertequals(new Number(0.33).multiply(new Number(3)).value, 1, 0.01); } }

Application des tests au logiciel Graphab Graphab : logiciel de modélisation des réseaux écologiques par les graphes paysagers. Développé au laboratoire ThéMA depuis 2009 http://thema.univ-fcomte.fr/productions/graphab

Application au programme Graphab

Application au programme Graphab

Application au programme Graphab

Application au programme Graphab Entre test unitaire et test d'intégration Objectif : tester les grandes phases de traitement lancé par l'utilisateur sur un jeu de données réel Traitements testés : - création d'un projet - création de plusieurs jeu de liens - création de plusieurs graphes sur les jeux de liens - calcul de toutes les métriques existantes sur tous les graphes

Application au programme Graphab On ne vérifie pas si le résultat est correct mais seulement s'il est toujours le même test de non régression Suppose une première phase manuelle de vérification de la justesse du résultat

Application au programme Graphab Oblige une exactitude des résultats ou bien une mesure de l'imprécision modification du code pour enlever les aléas en cas d'égalité aléa de la parallélisation Demande des corrections en cas de modifications du code L'exécution des tests peut vite devenir très longue

Intégration dans la chaîne de développement Serveur de développement : - code source : Mercurial - intégration : Jenkins - construction : Maven - qualité du code : SonarQube

Intégration des tests Développeur commit/push Mercurial url trigger Jenkins Maven build + test + deploy test results SonarQube Si un des tests échoue l'archive ne sera pas déployé et Jenkins mettra le projet en erreur.

Intégration des tests lancés par maven sont instrumentés par JaCoCo qui trace l'exécution de chaque instruction et chaque condition. SonarQube récupère le résultat de JaCoCo et l'intègre dans sa base. maven sonar:sonar JaCoCo peut être suffisant pour une utilisation en local avec Netbeans ou Eclipse

Intégration des tests

Couverture du code Code coverage : part de code source exécuté par les tests statement coverage : couverture des instructions branch (condition) coverage : couverture des conditions

Couverture du code Couverture des instructions

Couverture du code Couverture des conditions

Couverture du code SonarQube - vue agrégée en graphique ou tableau multi niveaux : projet, module, package, class - vue détaillée sur le code source - intègre beaucoup d'autres indicateurs : documentation, complexité, cycle...

Projets Packages Classes

Mon expérience : - demande un temps non négligeable à développer et à maintenir - temps d'exécution à optimiser - en 6 mois et 22 changements de code, aucune régression détectée. Mais très important, le développeur est beaucoup plus serein!