Utilisation des tests dans le cadre du développement de la plateforme Claude Niederlender INIST-CNRS Pôle Système d'information Service Ingénierie de Projets DevelopR6 / Les tests 05/06/2014 1 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX ISTEX : Cadre général Lancé en 2012 dans le cadre des Investissements d'avenir (IDEX) 4 partenaires (COUPERIN, ABES, CNRS, UL) 2 objectifs principaux : Un vaste programme d acquisition de ressources scientifiques La mise en place d'une architecture matériel et logicielle permettant une large diffusion des ressources dans des formats standards et unifiés (MODS/TEI) Budget : 60 M (55M pour les acquisitions + 5M pour infrastructure, diffusion et services avancées) Durée : 4 ans Journée DevelopR6 05/06/2014 2 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX ISTEX : Plateforme de base Héberger, traiter et donner accès aux ressources acquises (Volumes / Diversité) Normaliser et enrichir les données Garantir des accès contrôlés, pérennes et multiples Entrepôt central, unique, normalisé des ressources électroniques accessibles par tous (ESR) en permanence Journée DevelopR6 05/06/2014 3 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX La plateforme de base ISTEX INPUT TRAITEMENTS INTERNES (données éditeur) DIFFUSION / SERVICES Services Types d'accès LoadISTEX Discovery tool ElasticSearch EEBO Elsevier RSC Stockage (Mods+TEI) Indexation ISTEX-R API Web REST/JSON Portails, ENT, etc. Enrichissment sémantique Utilisateurs fnaux ECCO ( Conversion ) SPRINGER OAI PMH SPARQL ENDPOINT WIDGETS Outils? Thesaurii / Terminologies METS, DC, PREMIS Archivage pérenne... Journée DevelopR6 05/06/2014 Données de gestion Contrôle d'accès, monitoring et statistiques 4 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Briques logicielles Chaîne d'ingestion "Loadistex" Bash Outils linux (parallel, imagemagick, xmlstarlet...) NodeJS PHP Java Elasticsearch Outil d'analyse rapide "fsmap" NodeJS Journée DevelopR6 05/06/2014 5 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Briques logicielles API Rest HTTP NodeJS / Express Démonstrateur Web + Widgets AngularJS Bootstrap (Twitter) jquery Journée DevelopR6 05/06/2014 6 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX TDD et méthodologie Scrum et XP TDD "inscrit dans notre process" Pas de distinction TDD / BDD Journée DevelopR6 05/06/2014 7 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Outils utilisés Principe de base : ne pas multiplier les langages et outils de test 1 framework : Mocha 1 bibliothèque d'assertions : Chai / Expect 1 serveur d'intégration continue : Jenkins Journée DevelopR6 05/06/2014 8 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Mocha Framework de test Javascript «NodeJS and the browser» Support de l'asynchronisme Largement paramétrable Style TDD ou BDD Choix de la bibliothèque d'assertion Choix du "reporter" Possibilité d'utiliser des timeouts Journée DevelopR6 05/06/2014 9 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Mocha Style BDD : Describe... It... Style TDD : Suite Test... Journée DevelopR6 05/06/2014 10 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Mocha Style BDD : Describe... It... Style TDD : Suite Test... Journée DevelopR6 05/06/2014 11 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Mocha Before After Journée DevelopR6 05/06/2014 12 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Chai Bibliothèques d'assertions Javascript «NodeJS and the browser» Améliore la lisibilité et l'expressivité Intégration avec Mocha Nombreux plugins Support natif de plusieurs styles d'assertions Journée DevelopR6 05/06/2014 13 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Chai Bibliothèques d'assertions Javascript «NodeJS and the browser» Améliore la lisibilité et l'expressivité Intégration avec Mocha Nombreux plugins Support natif de plusieurs styles d'assertions Assert Journée DevelopR6 05/06/2014 14 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Chai Bibliothèques d'assertions Javascript «NodeJS and the browser» Améliore la lisibilité et l'expressivité Intégration avec Mocha Nombreux plugins Support natif de plusieurs styles d'assertions Assert Should Journée DevelopR6 05/06/2014 15 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Chai Bibliothèques d'assertions Javascript «NodeJS and the browser» Améliore la lisibilité et l'expressivité Intégration avec Mocha Nombreux plugins Support natif de plusieurs styles d'assertions Assert Should Expect Journée DevelopR6 05/06/2014 16 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Exemple de test Journée DevelopR6 05/06/2014 17 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Exécution des tests Unitairement : mocha <fichier_test.js> Via npm : npm test Fichier «package.json» Appel npm via makefile Journée DevelopR6 05/06/2014 18 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Exemple de sortie Journée DevelopR6 05/06/2014 19 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Jenkins Briques testées Loadistex Fsmap API Plugin Git Avertissements sonores Envois de mails Journée DevelopR6 05/06/2014 20 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Journée DevelopR6 05/06/2014 21 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Journée DevelopR6 05/06/2014 22 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Journée DevelopR6 05/06/2014 23 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Journée DevelopR6 05/06/2014 24 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Pistes d'amélioration Mesure de la "qualité" du code (ex : automatisation jshint) Mesure de la couverture des tests (ex : Sonar) Test des IHM (démonstrateur Web + widget) (ex : Selenium) Idées bienvenues! Journée DevelopR6 05/06/2014 25 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Merci pour votre attention A vous la parole... Journée DevelopR6 05/06/2014 26 / 27
C. Niederlender Utilisation des tests dans le développement de la plateforme ISTEX Références Mocha : http://visionmedia.github.io/mocha/ Chai : http://chaijs.com/ Jenkins : http://jenkins-ci.org/ NodeJS : http://nodejs.org/ ISTEX : http://www.istex.fr/ Twitter @istex-dev Journée DevelopR6 05/06/2014 27 / 27