Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Qualité Logiciel - Outils Open Source pour Java et Web

458 vues

Publié le

Formation généraliste rédigée en Juin 2009

Gestion de configuration
Gestion des tests
Gestion des anomalies
Gestion de la documentation

Publié dans : Ingénierie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Qualité Logiciel - Outils Open Source pour Java et Web

  1. 1. Qualité Logiciel Outils Open Source pour Java & Web @crochefolle Juin 2009 1
  2. 2. @crochefolle  Gestion de configuration  Gestion des tests  Gestion des anomalies  Gestion de la documentation Présentation 2
  3. 3. @crochefolle GESTION DE CONFIGURATION 3
  4. 4. @crochefolle  CVS (Concurrent Versions System) est un système de contrôle de versions client-serveur permettant à plusieurs personnes de travailler simultanément sur un même ensemble de fichiers. Les gros projets de développement (en particulier les projets Open Source) s'appuient généralement sur ce type de système afin de permettre à un grand nombre de développeurs de travailler sur un même projet. CVS permet, comme son nom l'indique, de gérer les accès concurrents, c'est-à-dire qu'il est capable de détecter les conflits de version lorsque deux personnes travaillent simultanément sur le même fichier.  Le fonctionnement de CVS s'appuie sur une base centralisée appelée « repository », hébergée sur un serveur, contenant l'historique de l'ensemble des versions successives de chaque fichier. Le repository stocke les différences entre les versions successives, les dates de mise à jour, le nom de l'auteur de la mise à jour et un commentaire éventuel, ce qui permet un réel suivi des modifications, tout en optimisant l'espace de stockage dédié au projet.  Chaque personne travaillant sur le projet possède un « répertoire de travail » (en anglais « working copy » ou « sandbox », traduisez « bac à sable »), c'est-à-dire un répertoire contenant une copie de la base CVS (repository). CVS 4
  5. 5. @crochefolle Subversion (en abrégé svn) est un système de gestion de versions, distribué sous licence Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s'appuient volontairement sur les mêmes concepts (notamment sur le principe du dépôt centralisé et unique) et considèrent que le modèle de CVS est le bon, et que seule son implémentation est en cause. Le projet a été lancé en février 2000 par CollabNet, avec l'embauche par Jim Blandy de Karl Fogel, qui travaillait déjà sur un nouveau gestionnaire de version. Les apports de Subversion  Subversion a été écrit afin de combler certains manques de CVS. Voici les principaux apports :  Les commits, ou publications des modifications sont atomiques. Un serveur Subversion utilise de façon sous- jacente une base de données capable de gérer les transactions atomiques (le plus souvent Berkeley DB) ;  Subversion permet le renommage et le déplacement de fichiers ou de répertoires sans en perdre l'historique. ;  les métadonnées sont versionnées : on peut attacher des propriétés, comme les permissions, à un fichier, par exemple.  Du point de vue du simple utilisateur, les principaux changements lors du passage à Subversion, sont :  Les numéros de révision sont désormais globaux (pour l'ensemble du dépôt) et non plus par fichier : chaque patch a un numéro de révision unique, quels que soient les fichiers touchés. Il devient simple de se souvenir d'une version particulière d'un projet, en ne retenant qu'un seul numéro ;  svn rename (ou svn move) permet de renommer (ou déplacer) un fichier ;  Les répertoires et méta-données sont versionnés.  Une des particularités de Subversion est qu'il ne fait aucune distinction entre un label, une branche et un répertoire. C'est une simple convention de nommage pour ses utilisateurs. Il devient ainsi très facile de comparer un label et une branche ou autre croisement. Subversion 5
  6. 6. @crochefolle  Scmbug permet d’intégrer les outils de gestion de configuration et de gestion d’anomalie.  Il permet notamment de relier des outils comme CVS/CVSNT, Subversion, et Git… avec des outils comme Bugzilla, Mantis, Request Tracker, Test Director.  http://freshmeat.net/projects/scmbug/ SCMbug : intégration avec BugZilla/Mantis 6
  7. 7. @crochefolle  Maven est un outil « open source » de Apache Jakarta. Il permet de faciliter et d'automatiser la gestion et la construction d'un projet java. Le site officiel est : http://maven.apache.org.  Le premier but de Maven est de permettre aux développeurs de connaitre rapidement l'état global du développement du projet. C'est dans ce but que Maven :  Facilite le processus de construction;  Fournit un système de construction uniforme;  Fournit des informations utiles sur le projet;  Fournit clairement les grandes lignes directrices de développement;  Fournit les éléments nécessaires pour faire des tests complets;  Fournit une vision cohérente et globale du projet;  Permet d'ajouter de nouvelles fonctionnalités de façon transparente.  Il permet notamment :  d'automatiser la compilation, les tests unitaires et le déploiement des applications du projet (jar, war)  de gérer les dépendances des bibliothèques nécessaires au projet  de générer des documentations du projet : rapport de compilation et des tests unitaires, javadoc  de générer un site web complet du projet Maven 7
  8. 8. @crochefolle Le cycle de vie par défaut 8 Goal Description validate Valide que le projet est syntaxiquement correct et que toutes les informations nécessaires sont présentes generate-sources Génère le code source à inclure dans la compilation process-sources Pré-traitement du code source, par exemple pour filtrage de valeurs ou instrumentation generate-resources Génère les ressources à inclure dans l'artefact process-resources Copie et traite les ressources dans le répertoire de destination avant empaquetage compile Compile le code source process-classes Post-traitement du bytecode compilé generate-test-sources Génère le code source des tests process-test-sources Pré-traitement des sourecs de test avant compilation generate-test-resources Génère les les ressources pour le test process-test-resources Copie et traite les ressources pour le test test-compile Compile les sources de test test Exécute les tests unitaires package Empaquette le code compilé (et les ressources) pour distribution pre-integration-test Exécute des actions nécessaires à laréalisation des tests d'intégration (eg. instancier l'environnement d'exécution) integration-test Traite et déploie le paquet si nécessaire pour exécution des tests d'intégration post-integration-test Exécute les actions requises après la findes tests d'intégration (eg. nettoyage) verify Vérifie l'intégrité et la qualité du paquet deploy Déploie le paquet final pour intégration ou production
  9. 9. @crochefolle  Utiliser Maven avec CVS/SVN et SCMBug ainsi qu’une politique de GC claire et définit permet de se rapprocher d’un outil complet de GC.  Par ailleurs, la communauté Maven propose de nombreux plugins :  de suivi de la qualité :  Surefire  Cobertura  CheckStyle  PMD/CPD  Findbugs  Jdepend  Tableaux de bord  QALab  XRadar  Sonar  Maven Dashboard  SonarJ Maven, un bon compromis et plus encore… 9
  10. 10. @crochefolle  Surefire permet d'avoir les rapports d'exécution de tests unitaires. Il est compatible avec un certain nombre de frameworks de tests unitaires comme JUnit (3.8 et 4.x), TestNG. Vous trouverez plus d'informations sur http://maven.apache.org/plugins/maven-surefire-plugin/ Surefire 10
  11. 11. @crochefolle  Cobertura permet de connaître la couverture du code par les tests unitaires. Cette information est importante car, même avec un nombre élevé de test unitaire, on n'a pas forcement une bonne couverture et certaines parties importantes peuvent se retrouver peu ou pas testées.  Vous trouverez plus d'informations sur http://cobertura.sourceforge.net/ Cobertura 11
  12. 12. @crochefolle  CheckStyle permet de contrôler le respect des conventions de codage et d'avoir quelques métriques. Ce contrôle est fait avec 126 règles et cela va du plus simple comme la longueur d'une ligne à des choses plus compliquées comme la complexité cyclomatique d'une classe.  Le plugin Maven met à disposition 4 fichiers de règles :  config/sun_checks.xml Convention Sun Microsystems (par défaut),  config/maven_checks.xml Convention de l'équipe Maven,  config/turbine_checks.xml Convention du projet Apache Turbine,  config/avalon_checks.xml Convention du projet Apache Avalon. Ce projet n'existe plus.  De nombreux fichiers de règles peuvent se trouver sur Internet permettant d'être plus ou moins souple avec le standard de codage. Et si ces règles ne vous conviennent pas, vous pouvez créer les vôtres et/ou paramétrer celles qui existent déjà.  Vous trouverez plus d'informations sur http://checkstyle.sourceforge.net/ Et la description des règles sur http://checkstyle.sourceforge.net/availablechecks.html CheckStyle 12
  13. 13. @crochefolle Règle Définition Basic JSF rules Règles pour JSF. Basic JSP rules Règles pour JSP. Basic Rules Règles basiques listant un certain nombre de bonnes pratiques. Braces Rules Règles sur l'utilisation des parenthèses. Clone Implementation Rules Règles sur l'utilisation de la méthode clone(). Code Size Rules Règles concernant la taille du code. Controversial Rules Règles considérées controversées. Coupling Rules Règles sur le couplage. Design Rules Règles sur l'architecture. Finalizer Rules Règles sur l'utilisation des finalizers. Import Statement Rules Règles sur la partie "import" du code. J2EE Rules Règles pour J2EE JavaBean Rules Règles sur l'utilisation des JavaBeans. JUnit Rules Règles sur l'utilisation de JUnit. Jakarta Commons Logging Rules Règles pour les Commons Logging. Java Logging Rules Règles pour l'utilisation des Logging. Migration Rules Règles pour la migration d'un JDK à une autre version. Naming Rules Règles sur la nomenclature des objets/packages/... Optimization Rules Règles pour la performance du code. Strict Exception Rules Règles sur l'utilisation des Exceptions. String and StringBuffer Rules Règles sur l'utilisation de String et StringBuffer. Security Code Guidelines Règles sur la sécurité http://java.sun.com/security/seccodeguide.html#gcg Unused Code Rules Règles pour la détection du code mort. PMD/CPD 13 PMD va analyser le code afin de trouver des problèmes potentiels tel que : •Expressions trop compliquées, •Problèmes de sécurité, •Problèmes de couplage entre objet/package, •Bugs possibles, •Code mort, •Code non optimal, •... CPD va analyser le code afin de trouver les morceaux de code dupliqué. Vous trouverez plus d'informations sur http://pmd.sourceforge.n et/
  14. 14. @crochefolle PMD/CPD 14
  15. 15. @crochefolle  Findbugs va trouver les bugs potentiels en analysant le bytecode Java. Pour cela il s'appuie sur une notion de 'bug patterns'.  Ces bugs sont classés en plusieurs catégories :  Correctness Regroupe les bugs généraux. Par exemple les boucles infinies, mauvaises utilisations de equals(), ...  Bad practice Regroupe les mauvaises pratiques. Par exemple les problèmes d'Exception, de ressources non fermées, mauvaises utilisations de comparaison de chaîne de caractères, ...  Performance Regroupe les problèmes de performance. Par exemple la création d'objets inutiles.  Multithreaded correctness Regroupe les problèmes liés au code multithread.  Internationalization Regroupe les problèmes liés à l'internationalisation d'une application.  Malicious code vulnerability Regroupe les problèmes de vulnérabilité. Par exemple du code qui pourrait être détourné de son utilisation, ..  Security Regroupe les problèmes de sécurité. Par exemple les problèmes liés au protocole http, les SQL injections, ...  Dodgy Regroupe le "smell code". Par exemple les comparaisons redondantes avec null, variables non utilisées, ...  Il existe un autre paquet de règles. On peut le trouver au format jar sur http://fb-contrib.sourceforge.net/  Vous trouverez plus d'informations sur http://findbugs.sourceforge.net/factSheet.html Findbugs 15
  16. 16. @crochefolle Findbugs 16
  17. 17. @crochefolle  JDepend analyse le code pour en calculer des métriques (l'extensibilité, la réutilisabilité et la maintenabilité des sources) sur la qualité du design pour les packages du projet.  Ces métriques sont :  Nombre de classes et d'interfaces (TC = CC + AC) Le nombre de classes concrètes et abstraites (incluant les interfaces) dans un package est un indicateur de l'extensibilité d'un package. -> Plus ce nombre est important, plus les entités qu'elles implémentent peuvent être étendues indépendamment les unes des autres.  Couplage par dépendance ascendante (Ca ou Afferent Coupling) Le nombre de packages tiers utilisant un package donné est un indicateur de la responsabilité d'un package. Cela permet de mettre en évidence qu'un package est au centre de l'application ou une mauvaise gestion des packages. -> Ce nombre doit être le plus petit possible.  Couplage par dépendance descendante (Ce ou Efferent Coupling) Le nombre de packages tiers utilisés par un package donné est un indicateur d'indépendance du code. -> Ce nombre doit être le plus petit possible.  Degré d'abstraction (A ou Abstractness) Le degré d'abstraction correspond au pourcentage entre le nombre de classes abstraites (plus les interfaces) dans le package analysé par rapport au nombre total de classes de ce package. Cette métrique peut varier de 0 à 1. 0 indique qu'un package est concret, tandis que 1 indique un package abstrait. -> Ce nombre doit être proche d'une des 2 bornes.  Instabilité (I ou Instability) C'est le ratio I = Ce / (Ce + Ca). Cette métrique est un indicateur de stabilité par rapport à la mise jour d'autres packages. Cette métrique peut varier de 0 à 1. 0 indique qu'un package est complètement stable, tandis que 1 indique un package complètement instable.  Distance normale (D ou Distance from the main sequence) Cette métrique correspond à la distance de la droite perpendiculaire à la droite idéale A+I=1. C'est un indicateur d'équilibre d'un package entre l'abstraction et l'instabilité. Les packages supposés idéaux sont soit complètement abstraits et stables (A=0,I=1) soit complètement concrets et instables(A=0,I=1). -> Ce nombre doit être proche de 0.  Volatility (V) La volatilité d'un package est sa tendance à évoluer au fil du temps. -> 0 indique que le package est le centre de l'application.  Vous trouverez plus d'informations sur http://clarkware.com/software/JDepend.html JDepend 17
  18. 18. @crochefolle JDepend 18
  19. 19. @crochefolle  A moins de vouloir décourager toute l'équipe (y compris vous), n'activez pas toutes les règles d'un coup. Il vaut mieux choisir certaines règles à activer au début. Une fois ces règles validées (ou du moins un certain pourcentage atteint), ajouter d'autres règles et ainsi de suite. Je préconise d'activer les règles sur les Exceptions et de la gestion des traces (log) dès le début.  Pour sélectionner les règles à utiliser pour chaque plugin, voir les parties en gras dans la partie précédente afin de bien configurer chaque plugin.  Sur http://wiki.netbeans.org/ActionPMD vous trouverez un exemple de règles que le projet Netbeans exclu lors de son utilisation de PMD.  Ces plugins Maven2 existent aussi au format plugin pour la majorité des IDE. Il est utile d'installer ces plugins sur chaque IDE des postes de développement.  Cela a plusieurs avantages :  Intégration aux IDE et donc une utilisation plus simple,  Responsabilisation des développeurs aux problèmes de qualité,  Les développeurs vérifient leur code avant de faire un commit. Attention à ne pas activer toutes les règles 19
  20. 20. @crochefolle Une fois Maven2 mis en place avec tout ses plugins, il est judicieux d'avoir un tableau de bord regroupant le maximum d'informations utiles en une seule page. Pour cela il existe un certain nombre de plugins Maven2 qui permettent de créer ce tableau de bord.  QALab Outil intéressant mais semble ne plus être maintenu. Pour plus d'informations : http://qalab.sourceforge.net/index.html  XRadar Outil intéressant mais on attend qu'il prenne en charge FindBugs. Pour plus d'informations : http://xradar.sourceforge.net/  Sonar Semble prometteur, vivement que la version 1.5 sorte afin qu'il prenne en compte plus de métriques et le support de plugins externes comme FindBugs, JDepend. Site officiel : http://sonar.codehaus.org/ Pour plus d'informations : http://linsolas.developpez.com/articles/java/qualite/sonar /  Maven Dashboard Maven Dashboard permet de centraliser un certain nombre de rapports crées par Maven. De plus il y a une option pour historiser les statistiques. Pour plus d'informations : http://mojo.codehaus.org/dashboard-maven-plugin/  SonarJ Permet d'avoir un contrôle plus poussé sur l'architecture du projet en définissant les droits de communication entre chaque couche. Pour plus d'informations : http://www.hello2morrow.com/products/sonarj Les tableaux de bord 20
  21. 21. @crochefolle Les tableaux de bord 21
  22. 22. @crochefolle  Cruise Control  CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans le cycle de développement, la partie cruciale est l’intégration. C’est l’intégration qui permet de révéler les éventuelles erreurs et incompatibilités des différentes parties réalisées par chaque développeur de l’équipe.  CruiseControl permet d’automatiser cette phase d’intégration selon la succession des tâches suivantes :  Récupération des fichiers sur le SCM (Source Code Management)  Compilation du code source  Création de l’archive de l’application (Ear, Jar, War, …)  Déploiement de l’archive  Exécution d’une suite de tests (Junit)  Notification du résultat (Mail, rss, …)  Continuum  Continuum est un serveur d’intégration continue dédié aux projets basés sur Java.  Il supporte une large gamme de projets tels que :  Maven 1  Maven 2  Ant  Shell Scripts  Hudson  Hudson fait partie des petits derniers dans cette gamme d’outils et semble assez prometteur. C’est un outil gratuit (dans les javatools de java.net). Il est très simple à installer, en version standalone ou comme webapp dans un container tel que tomcat (ce qui est le cas d’un grand nombre d’outils d’intégration continue).  L’interface web est simple à utiliser et assez intuitive, la prise en main est très rapide. On peut réellement configurer l’intégration continue d’un projet existant en quelques minutes sans connaître l’outil.  Toutes les tâches d’administration ou de configuration se font via la console web. Il n’est pas nécessaire d’accéder à la machine serveur d’intégration pour rajouter un projet ou changer une configuration.  Ce point différentie assez Hudson de Cruise Control et facilite l’utilisation de Hudson de façon transverse à plusieurs projets (on gère une seule machine serveur mutualisée). Avec Cruise control, on a plutôt tendance à avoir une installation de Cruise Control pour chaque projet et les membres d’équipe accèdent directement à leur machine d’intégration continue. Intégration continue 22
  23. 23. @crochefolle GESTION DES TESTS 23
  24. 24. @crochefolle La gestion de tests est une activité à part entière qui requiert un cadre organisationnel et l'utilisation d'outils spécifiques. Pour encadrer cette phase de test, il existe principalement sur le marché l’offre commerciale TestDirector de Mercury Interactive mais, peu de solutions libres. Salomé-TMF vise donc à combler ce vide. Salomé-TMF est un outil de gestion de tests simple et puissant dont l'utilisation offre des gains immédiats en temps et en qualité grâce à la création d'un unique référentiel de tests pour le projet et à l'automatisation de l'exécution des tests. Salomé-TMF : Référentiel de test 24  Une solution "OpenSource" alternative à QualityCenter & TestDirector  Réduction des coûts de licence  Multi-OS (100% Pure Java)  Une solution simplifié  Gestion du plan de test, des campagnes (simplifiée par rapport à QC)  Gestion des exigences/anomalies intégrées  Production de documents (HTML, PDF, …)  Une solution ouverte  Intégration avec des plates-formes/outils existants :  Mantis, Codex, Gforge, …  Import/Export XML : format ouvert  Import/Export vers QC (8&9)  Architecture à plug-ins  Une solution adaptée à l’automatisation des tests  IHM Web (Selenium) , …  Test scripté Java (Beanshell)  API ouverte (remote Ant, ligne de commande, …)
  25. 25. @crochefolle Salomé-TMF au centre de l'activité 25
  26. 26. @crochefolle Salomé-TMF est le référentiel commun à tous les acteurs du projet pour la qualification 26
  27. 27. @crochefolle  Import/export, production de documents  Fondée sur XML + XSL, permet d’échanger les données entre projets, et de produire des documents (Plan de tests, cahier d’exigences, résultats de campagne) aux formats HTML et PDF Principaux Plug-ins : DocXML 27
  28. 28. @crochefolle  Gestion des anomalies  Fondée sur Mantis :  Permet de centraliser les anomalies de développement, de qualification et de mise en production (via l’accès à Mantis) et de gérer leur cycle en relation avec les tests et les exigences Principaux Plug-ins : Mantis 28
  29. 29. @crochefolle  Gestion des exigences  Permet de gérer et de suivre la couverture (tests) et la satisfaction (anomalies) des exigences Principaux Plug-ins : Requirements 29
  30. 30. @crochefolle  Orange HomeScreen (Couplage Java CLDC)  Tests de conformité du « HomeScreen » sur les différents device mobile d’Orange  Orange Partner (Couplage Selenium)  Tests fonctionnels : scénarios d'utilisation du service  authentification, navigation, upload, …  Tests d’intégration : scénarios de conformité de bout-en-bout  Interface web <-> Outils de vérification des midlets <-> base de données <-> interface web  Next Service Broker (Couplage CruiseControl/RemoteAnt)  Référencement des tests unitaires, lien exigences, automatisation des recettes de livraison Success stories 30
  31. 31. @crochefolle  TestLink est une solution web open source qui permet de gérer les tests et leurs exécutions sous la licence GPL (gratuit !). Cette solution vous permet de créer et gérer vos cas de test et de les organiser en plans de tests.  Ces plans de tests permettent d‘exécuter les cas de test et de suivre dynamiquement les résultats, de générer des rapports, de suivre les "requirements", de créer des priorités et même d'assigner les tests à un testeur.  La solution est basé sur PHP, MySQL, et de nombreux outils open source. Il existe même une possibilité pour une intégration dans Bugzilla ou Mantis.  TestLink est disponible en plusieurs langues et peut être configurer pour une langue différente par utilisateur. Nos tests on été effectué en anglais car la version française n'a pas l'air entièrement traduite pour l'instant.  L'installation est facile, car il suffit de copier les fichiers sur un serveur web correctement configuré, un script d'installation fait le boulot pour vous.  Ce projet est maintenu par une communauté de testeurs. Et de nombreux développeurs ont des responsabilités dans des services de QA. Et ca se voit, ce produit est conçu avec bon sens et est prometteur.  TestLink peut donc convenir pour les équipes qui aurait besoin d'un outil peu couteux et facile à implémenter. Une alternative plus moderne voit le jour : TestLink 31
  32. 32. @crochefolle TESTS UNITAIRES 32
  33. 33. @crochefolle  Junit  httpUnit  htmlUnit  jWebUnit *Unit 33
  34. 34. @crochefolle  Imaginé et développé en Java par Kent Beck et Erich Gamma, JUnit désigne un framework de rédaction et d'exécutions de tests unitaires. Rappelons que ces deux personnes sont respectivement auteurs des ouvrages "SmallTalk Best Pratice Patterns" et "Design Patterns : Catalogue de modèles de conception réutilisables", le fameux ouvrage du Gang Of Four.  Le but principal de JUnit est d'offrir au développeur un environnement de développement simple, le plus familier possible, et ne nécessitant qu'un travail minimal pour rédiger de nouveaux tests.  Leur écriture ne représente pas le seul intérêt d'un tel framework. Une fois ces tests mis en place, il est très important de pouvoir les exécuter et d'en vérifier les résultats très rapidement. Comme nous l'avons dit, savoir qu'un test marche à un instant donné n'est pas suffisant. Nous devons pouvoir l'exécuter plus tard.  L'idée principale de JUnit est de représenter chaque test par un objet à part. Un test correspond souvent à une classe de votre programme. En d'autres termes, un test pourra être composé de plusieurs tests unitaires dont le rôle sera de valider les différentes méthodes de vos classes. La question primordiale est donc de savoir comment JUnit représente un test. JUnit 34
  35. 35. @crochefolle  Ce Schéma présente le coeur de l'architecture du framework. Nous pouvons remarquer que la plus fine granularité correspond à un test, c'est-à-dire à un agrégat de tests unitaires. L'interface Test matérialise ceci. Néanmoins, le développeur n'aura jamais à s'en servir mais devra s'intéresser aux classes TestCase et TestSuite. La première désigne une concrétisation de nos tests tandis que la seconde permet de les composer.  Nous pourrons donc créer une arborescence de tests pour représenter toute l'application. Cette architecture propose quelques autres points intéressants sur lesquels nous nous pencherons plus tard. Bien qu'incomplet, nous ne voyons par exemple aucune indication sur l'exécution automatique des tests, ce schéma présente la plus grande partie des fonctionnalités de JUnit que vous serez amenés à employer dans votre travail. Nous constatons ici que la caractéristique première des frameworks est respectés : le résultat doit être simple mais subvenir aux besoins vitaux de l'utilisateur. JUnit 35
  36. 36. @crochefolle  Outil libre(licence MIT, il s’agit d’une licence simpliste très courte de quelques lignes) Dernière version 1.6.2 du 26/03/2006 projet démarré en 2000, 2 développeurs actifs ? En fait le site sourceforge ne montre aucune activité au niveau du CVS.  Site web en anglais : http://httpunit.sourceforge.net/  Il s’agit d’une API de simulation d’un navigateur web pour un programme Java. Il est le projet le plus ancien. Il travaille plutôt au niveau des requêtes et des réponses http.  Le site manque de documentation sur le projet. Le forum est peu actif. La dernière version commence à dater. HttpUnit 36
  37. 37. @crochefolle  Outil libre(licence de type Apache) Dernière version 1.12 du 10/08/2007 projet démarré en 2002, 8 développeurs actifs. Site web en anglais : http://htmlunit.sourceforge.net/  Autres sites Forum en anglais : http://www.nabble.com/HtmlUnit-f2597.html Blog en anglais : http://mguillem.wordpress.com/ http://htmlunit.sourceforge.net/cgi-bin/browserVersion script cgi pour créer des browseVersion dans htmlUnit. Instruction permettant de simuler un navigateur donné.  site de la société à l’origine de l’outil : http://www.gargoylesoftware.com HtmlUnit est selon les explications du site officiel « un navigateur pour les programmes java ». Ce n’est pas au départ un outil de tests, mais un ensemble API de « bas niveau » de simulation des navigateurs web. On peut imaginer de nombreuses utilisations. Utilisé avec le Framework de test java JUnit, il devient un outil de test unitaire côtés présentation.  HtmlUnit a un support correct du JavaScript (dépendant de Rhino). Cependant le support n’est pas total pour les utilisations avancées (AJAX, GWT et librairie prototype), même si certaines simulations sont possibles.  HtmlUnit est utilisé par des outils de tests pour simuler les navigateurs web : JWebUnit, WebTest.  Le site du projet montre la qualité du développement : avec des métriques de code (JDepend Checkstyle), des tests unitaires. L’historique des versions est précise et indique clairement les modifications. Par contre la documentation manque un peu, il existe un des exemples simples mais il manque une documentation ou tutoriel complet.  Les statistiques de téléchargement sont relativement faibles (4702 téléchargements du binaire sur 5 mois). HtmlUnit 37
  38. 38. @crochefolle  HtmlUnit et HttpUnit sont assez similaires au niveau de l’objectif mais ont des implémentations différentes. HtmlUnit travaille plus au niveau de la page Html (classe HtmlPage) tandis que HttpUnit se place plus au niveau de la requête http (classe WebResponse).  Une classe correspondant à la page Html n’existe pas dans le cas HttpUnit.  A priori HtmlUnit est donc plus proche du comportement d’un navigateur web.  Par contre, il est moins à l’aise avec des documents html mal écrits.  Autre point assez secondaire, pour gérer les collections d’objets HttpUnit retourne souvent des tableaux d’objets tandis que HtmlUnit retourne des listes. La seconde solution est préférable, plus propre même si en java il s’agit de listes d’objets et il faut connaître précisément le type d’objet utilisé. HttpUnit vs HtmlUnit 38
  39. 39. @crochefolle  Outil libre (licence GPL) Dernière version 1.4.1 du 05/05/2007 projet démarré en 2002, 1 développeur actif.  site web http://jwebunit.sourceforge.net/  JWebUnit est un outil de tests unitaires pour les applications web, côtés présentation. C’est une extension de JUnit.  Il s’agit d’une approche différente du htmlUnit plus proche d’un utilisateur web avec une API de plus haut niveau. L’exemple du test du site de Google montre que le code avec JWebUnit est deux fois plus concis qu’avec HtmlUnit.  L’architecture interne de JWebUnit montre que cet outil dépend HtmlUnit et de JUnit. JWebUnit utilise la possibilité « naturelle » d’extension de JUnit. Il étend la classe TestCase en fournissant une classe WebTestCase. JWebUnit fournit de nombreuses assertions supplémentaires adaptées au besoin des tests des applications web.  JWebUnit version stable (1.*) s’appuie sur HtmlUnit (version 1.11). Potentiellement, JWebUnit pourrait utiliser d’autres outils qu’HtmlUnit. C’est l’objectif de la version 2 de JWebUnit en cours de développement avec projet d’utilisation des outils HttpUnit, HtmlUnit Jacobie et Selenium RC (http://jwebunit.sourceforge.net/2.x/index.html). Pour l’instant, seule l’utilisation de selenium et de htmlUnit est possible. L’objectif de selenium est la possibilité d’exécuter le test directement dans un navigateur web. jWebUnit 39
  40. 40. @crochefolle TESTS FONCTIONNELS 40
  41. 41. @crochefolle ABBOT est un robot de test de GUI Java qui peut faire du recording et playback d’événements, aussi bien pour des tests unitaires que fonctionnels.  Points Forts :  Scripts simples à écrire et à mettre en œuvre.  Outils performant et complet pour tester les interfaces graphiques. Il prend en compte les saisies claviers, les déplacements souris, les clics droits et gauches…  Rapport des tests avec JUnit.  Possibilité de créer des scripts par le recording, avec le Framework Costello.  Enregistrement des scripts sous le format XML.  Playback des scripts possible.  Points Faibles  Documentation difficile à trouver sur Internet (sources principalement en anglais).  Savoir utiliser JUnit (ABBOT en est une extension).  Il faut placer les .jar de test dans un dossier spécifique (pas de possibilité d’aller chercher la classe dans un autre dossier).  Documentation d’utilisation succincte.  Performance sur des gros projets ? Abbot : Outil de tests fonctionnels libre pour le Web 41
  42. 42. @crochefolle  Selenium est constitué d’une suite d’outils destinée à automatiser des tests d’application web exclusivement (Internet, Extranet, intranet).  Selenium ne permet en effet de tester que les applications accessibles depuis un navigateur, sans prise en compte des clients riches (Ajax, ExtJS, GWT…).  Ces outils sont tous des logiciels développés par la communauté Open Source. Loin des tarifs exercés par les différents éditeurs de ce genre de solution, Selenium est proposé gratuitement puisque libre et dispose de mises à jour régulières mises en ligne sur le site web de la communauté grâce à une participation active autour de cet outil. Le premier outil proposé fut Selenium Remote Control en mars 2006.  Il en découla d’autres outils venant compléter l’offre, notamment Selenium IDE en juin 2008, Selenium GRID, Selenium Core, CubicTest. La communauté s’étant élargie tout au long de ces années, ces outils disposent aujourd’hui d’un support adéquat grâce à l’élaboration de documentation diffusée sur le site, mais aussi grâce aux nombreux forums de discussions traitant sur les divers problèmes rencontrés par les utilisateurs. Les débuts sont donc fortement facilités pour appréhender au mieux ces outils.  Selenium s’exécute sur tous systèmes d’exploitation mais certaines fonctionnalités de l’offre se limitent à Firefox. Ces outils permettent de travailler sur les langages les plus répandus, tels que C#, JAVA, Perl, PHP, Python, Ruby. Pour des tests fonctionnels, la suite propose les outils suivants :  Selenium IDE  Selenium RC  Selenium Grid  CubicTest Selenium : Outil de tests fonctionnels libre pour le Web 42
  43. 43. @crochefolle  Cet outil est la base de la suite.  Il se présente sous forme d’extension à installer sous Firefox et permet l’enregistrement des scenarii de tests d’applications web à partir de ce navigateur ainsi que l’exécution de ces tests.  C’est un environnement de développement qui permet d’enregistrer son test, de le rejouer pour vérification et enfin de l’exporter en le générant sous différents langages.  Ainsi, ce code généré peut s’exécuter sous Selenium RC, permettant alors de mettre par exemple en place des conditions.  Attention, toute modification manuelle du code entraîne l’impossibilité de réutiliser l’outil Selenium IDE par la suite. Selenium IDE 43 01/09/2018
  44. 44. @crochefolle  Selenium RC :  Selenium RC se comporte comme un serveur qui permet de contrôler le navigateur web (IE7, Firefox, Safari, Opéra…) en local ou sur un autre ordinateur. Pour cela, Il exécute le code généré au préalable par Selenium IDE.  Selenium Grid :  Selenium Grid permet de lancer plusieurs instances de Selenium RC afin d’exécuter les tests sur différents systèmes d’exploitation et différents navigateurs. Selenium RC & Selenium GRID 44
  45. 45. @crochefolle  Cet outil intègre les mêmes fonctions que Selenium IDE mais se détache de Firefox et opère sous Eclipse. De plus, son principal avantage est de proposer une vision graphique sous Eclipse des tests enregistrés afin d’en avoir une meilleure visibilité. Il permet ainsi de rester sous un même IDE, Eclipse en l'occurrence, tout au long de l’élaboration d’un test. CubicTest 45
  46. 46. @crochefolle  Points Forts :  Simplicité pour l’enregistrement de test  Nombreux langages supportés  Gratuité  Points Faibles :  Edition du code final difficile (si le test intègre des conditions)  Utilisation d’un autre IDE souvent essentiel (ex : Eclipse)  Multiplicité des outils : obligation de faire un choix entre la simplicité et la puissance. Points forts et Points faibles 46
  47. 47. @crochefolle TESTS DE PERFORMANCE 47
  48. 48. @crochefolle  OpenSTA est une application distribuée, basée autour de CORBA. Ce logiciel fût à l’origine développé par l’éditeur Cyrano pour être commercialisé.  Cet outil permet de réaliser des tests de charge avec des scripts HTTP/S et de mesurer leurs performances. Mais étant un logiciel libre on peut supposer qu’il permet bien plus grâce à la communauté qui s’est formée autour de ce logiciel.  Il a été développé en C++ sous windows 2000 et NT4. Le but initial était de faire d’OpenSTA une plate forme totalement indépendante avec un code de base, mais ce n’était pas une bonne idée à cause de l’évolution des langages. La solution aurait peut être été de développer un code inter opérable pour arriver à cette indépendance recherchée. Objectifs  OpenSTA met à rude épreuve l'infrastructure d'un site en simulant des centaines d'utilisateurs virtuels, il permet ensuite de recueillir des mesures de performance et des analyses fines du système testé.  L'application offre ainsi aux équipes informatiques les moyens d'étudier et d'anticiper le comportement de leur site face à des montées en charge aussi subites qu'espérées.  Il permet de définir des scénarios sous forme de scripts simulant le parcours d’un utilisateur sur le site. Plusieurs scénarios différents peuvent être exécutés simultanément et chacun d’eux plusieurs fois. Ainsi en définissant quelques scénarios pertinemment choisis, il est possible de simuler une utilisation de l’application proche de la réalité. OpenSTA 48
  49. 49. @crochefolle  CLIF est un canevas logiciel à base de composants pour l'injection de charge et la mesure de performance  ouvert, adaptable et extensible :  systèmes sous test variés (protocoles, sondes...)  modes de définition des scénarios de charge  interfaces utilisateurs et intégrations diverses (Eclipse, Java/Swing, ligne de commande...)  multi-système d'exploitation (basé sur Java)  logiciel libre du consortium OW2 (ex ObjectWeb)  grande puissance de charge  injection de charge répartie  jusqu'à plusieurs millions d'utilisateurs virtuels  Lutèce d'Or 2007 du meilleur projet libre réalisé par  un grand groupe Sondes  Sondes système disponibles pour Linux, Windows et MacOSX:  cpu / utilisation des processeurs  memory / utilisation mémoire et swap  network / réception, émission  disk / lectures, écritures disques  Sondes JVM pour suivre l'utilisation de la mémoire et le  Garbage Collector des machines virtuelles Java  Cadre pour définir ses propres sondes  sondes SNMP, JMX, ... CLIF 49
  50. 50. @crochefolle GESTION D’ANOMALIES 50
  51. 51. @crochefolle  Bugzilla est une application de suivi des bogues. De telles applications permettent à des individus ou à des groupes de développeurs de suivre les bogues en cours et les demandes d'amélioration du logiciel. Ecrit en langage Perl, Bugzilla est maintenant le standard de facto en terme de système de suivi des bogues et sert de référence aux autres applications. De plus, Bugzilla est utilisé par beaucoup d'entreprises pour suivre le développement en interne de leurs logiciels.  Bugzilla offre de nombreuses fonctionnalités avancées, parmis lesquelles :  Schéma de sécurité granulaire intégré par produit  Dépendances entre les incidents et graphique de dépendance  Production avancée de rapports  Structure de données robuste et stable  Nombreuses possibilités de configuration  Protocole très évolué et longuement testé de résolution de bogues  Interfaces programmatiques via e-mail, XML, console, et HTTP  Possibilité d'interfacer Bugzilla avec des outils automatisés de gestion des logiciels, tels que Perforce et CVS (via l'interface e-mail et des scripts de checkin/checkout) Bugzilla 51
  52. 52. @crochefolle  Mantis est un logiciel de sécurité d'application Web (bug tracking system) écrit en PHP. Il stocke tous les bugs trouvés dans une base de données.  Mantis est gratuit et open source sous licence GPL. Il peut utiliser MySQL, MS SQL Server et comme une base de données PostgreSQL pour le stockage des bugs. Il peut être installé sur Windows, Linux, Mac OS et OS / 2. Last but not least, comme il est basé sur le Web demande - il est évident qu'il a besoin de serveur web. Il peut être soit IIS ou Apache.  Mantis est très riche en fonctionnalités, et c'est ce qui le rend populaire auprès des entreprises. Il existe de nombreuses fonctionnalités :  Pour les utilisateurs  Interface très simple et facile à utiliser  Prise en charge des flux RSS  Possibilité d'envoyer des messages aux utilisateurs  Possibilité d'intégrer le Chat  Capacité d'intégration avec le fameux code source repository (SVN & CVS)  Possibilité de télécharger des fichiers avec des bugs (ce qui est très utile en tant que journaliste peut télécharger des copies d'écran du bug)  Possibilité de définir le rôle basé sur le projet.  Caractéristiques de Top Management  Capacité de rapports pour les gestionnaires et la haute gestion  Aptitude à l'exportation rapport au format CSV, Microsoft Excel et Microsoft Word  Caractéristiques de l'administrateur  Très facile à l'administration. Création d'un nouveau projet ou l'utilisateur est seulement quelques clics.  Donnez de la flexibilité de choisir OS, serveur Web et serveur de base de données  Capacité d'intégration avec l'authentification LDAP et Active directory  Pas d'installation au client final (il est basé sur le Web afin que le navigateur est nécessaire du côté client)  Facile à personnaliser selon les besoins des entreprises  Mantis BugTracker 52
  53. 53. @crochefolle  Scmbug permet d’intégrer les outils de gestion de configuration et de gestion d’anomalie.  Il permet notamment de relier des outils comme CVS/CVSNT, Subversion, et Git… avec des outils comme Bugzilla, Mantis, Request Tracker, Test Director.  http://freshmeat.net/projects/scmbug/ SCMbug : intégration avec CVS/SVN 53
  54. 54. @crochefolle GESTION DE DOCUMENTATION 54
  55. 55. @crochefolle  Alfresco est un projet de gestion de contenu d'entreprise (Donc aussi bien orienté Gestion Electronique de Documents que Gestion de Contenu Web) créé en juin 2005 par John Newton, co-fondateur de Documentum et John Powell, ancien cadre de Business Objects, apportant ainsi une grande expérience des besoins (15 ans d'expertise dans le domaine).  La mission d’Alfresco est d’ouvrir le monde de la Gestion Documentaire à travers l’open source afin d’augmenter les innovations grâce à la participation de la communauté et le libre accès au code source, et vise à fournir une application complète à moindre coût, et avec plus d'agilité.  Présentation  Alfresco est un projet open-source, multi plateforme, utilisant des standards ouverts, et massivement basé sur la technologie JEE.  Alfresco a développé une architecture moderne qui utilise les derniers outils open-source pour optimiser les performances, et la Programmation Orienté Aspect (AOP) facilitant ainsi la modularité et l’adaptabilité de l’application.  Alfresco implémente la norme JSR-168 pour le déploiement dans des portails open-source tel que JBOSS Portal ou Liferay  Alfresco permet de gérer les documents électroniques au sein d’une entreprise et fournit des services de recherche et de catégorisation du contenu.  Fonctionnalités  Alfresco fournit une interface d’accès aux données stockées sur des lecteurs réseaux partagés avec des règles automatiques afin de simplifier la catégorisation et l’organisation, la recherche, et le partage pour augmenter la conformité des process à travers un véritable contrôle documentaire. Alfresco 55
  56. 56. @crochefolle 56 Merci

×