SlideShare une entreprise Scribd logo
Qualité
Logiciel
Outils Open
Source pour
Java & Web
@crochefolle
Juin 2009
1
@crochefolle
 Gestion de configuration
 Gestion des tests
 Gestion des anomalies
 Gestion de la documentation
Présentation
2
@crochefolle
GESTION DE
CONFIGURATION
3
@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
@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
@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
@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
@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
@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
@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
@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
@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
@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/
@crochefolle
PMD/CPD
14
@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
@crochefolle
Findbugs
16
@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
@crochefolle
JDepend
18
@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
@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
@crochefolle
Les tableaux de bord
21
@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
@crochefolle
GESTION DES TESTS
23
@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, …)
@crochefolle
Salomé-TMF au centre de l'activité
25
@crochefolle
Salomé-TMF est le référentiel commun à tous les
acteurs du projet pour la qualification
26
@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
@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
@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
@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
@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
@crochefolle
TESTS UNITAIRES
32
@crochefolle
 Junit
 httpUnit
 htmlUnit
 jWebUnit
*Unit
33
@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
@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
@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
@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
@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
@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
@crochefolle
TESTS FONCTIONNELS
40
@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
@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
@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
@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
@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
@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
@crochefolle
TESTS DE PERFORMANCE
47
@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
@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
@crochefolle
GESTION D’ANOMALIES
50
@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
@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
@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
@crochefolle
GESTION DE
DOCUMENTATION
54
@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
@crochefolle 56
Merci

Contenu connexe

Tendances

ATDD Visuel
ATDD VisuelATDD Visuel
ATDD Visuel
Marc Hage Chahine
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1
Christophe Rochefolle
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
Bilel Abed
 
Ingénierie du test 0.9
Ingénierie du test 0.9Ingénierie du test 0.9
Ingénierie du test 0.9
Stéphane Salmons
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Emmanuel Hugonnet
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
CloudNetCare
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
LeClubQualiteLogicielle
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
Agile Tour 2009 Québec
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
Imen Turki
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
LeClubQualiteLogicielle
 
20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash
20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash
20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash
LeClubQualiteLogicielle
 
Qu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéQu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualité
Sylvain Leroy
 
Contrôle de la qualité logiciel
Contrôle de la qualité logicielContrôle de la qualité logiciel
Contrôle de la qualité logiciel
Sylvain Leroy
 
20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
LeClubQualiteLogicielle
 
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
TelecomValley
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
Geeks Anonymes
 
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
TelecomValley
 
20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)
LeClubQualiteLogicielle
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
halleck45
 
Futur tunis
Futur tunisFutur tunis
Futur tunis
Marc Hage Chahine
 

Tendances (20)

ATDD Visuel
ATDD VisuelATDD Visuel
ATDD Visuel
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Ingénierie du test 0.9
Ingénierie du test 0.9Ingénierie du test 0.9
Ingénierie du test 0.9
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
 
20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash
20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash
20120124 04 - Retour d'expérience sur la mise en oeuvre de Squash
 
Qu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéQu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualité
 
Contrôle de la qualité logiciel
Contrôle de la qualité logicielContrôle de la qualité logiciel
Contrôle de la qualité logiciel
 
20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
 
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
 
20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
 
Futur tunis
Futur tunisFutur tunis
Futur tunis
 

Similaire à Qualité Logiciel - Outils Open Source pour Java et Web

Présentation1
Présentation1Présentation1
Présentation1
Boulkenafet samir
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
badrfathallah2
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
Arnaud Héritier
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
Laurent Broudoux
 
Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...
Olivier DASINI
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
ENSET, Université Hassan II Casablanca
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
seydou4devops
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
badrfathallah2
 
Cvs
CvsCvs
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
Julien Dubois
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
ODC Orange Developer Center
 
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdf
ArouNa3
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
Syrine Ben aziza
 
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgvenvol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
mia884611
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
Romain Cambien
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Publicis Sapient Engineering
 
Atelier hadoop-single-sign-on
Atelier hadoop-single-sign-onAtelier hadoop-single-sign-on
Atelier hadoop-single-sign-on
sahar dridi
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
Martin Latrille
 

Similaire à Qualité Logiciel - Outils Open Source pour Java et Web (20)

Présentation1
Présentation1Présentation1
Présentation1
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Cvs
CvsCvs
Cvs
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 
SLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdfSLIDES-625.1.1-IDL-4-build tools maven.pdf
SLIDES-625.1.1-IDL-4-build tools maven.pdf
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgvenvol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
Paris Container Day 2016 : Les nouveaux défis du déploiement (Xebia Labs)
 
Atelier hadoop-single-sign-on
Atelier hadoop-single-sign-onAtelier hadoop-single-sign-on
Atelier hadoop-single-sign-on
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 

Plus de Christophe Rochefolle

Agile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique ResponsableAgile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique Responsable
Christophe Rochefolle
 
Une App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durableUne App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durable
Christophe Rochefolle
 
#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendredi#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendredi
Christophe Rochefolle
 
Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"
Christophe Rochefolle
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
Christophe Rochefolle
 
Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6
Christophe Rochefolle
 
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Christophe Rochefolle
 
Paris Chaos Engineering Meetup #5
Paris Chaos Engineering Meetup #5Paris Chaos Engineering Meetup #5
Paris Chaos Engineering Meetup #5
Christophe Rochefolle
 
Jftl 2018 chaos engineering
Jftl 2018   chaos engineeringJftl 2018   chaos engineering
Jftl 2018 chaos engineering
Christophe Rochefolle
 
Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2
Christophe Rochefolle
 
Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1 Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1
Christophe Rochefolle
 

Plus de Christophe Rochefolle (11)

Agile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique ResponsableAgile Secteur Public - Numérique Responsable
Agile Secteur Public - Numérique Responsable
 
Une App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durableUne App responsable pour de la mobilité durable
Une App responsable pour de la mobilité durable
 
#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendredi#DevOps - Et si on déployait le vendredi
#DevOps - Et si on déployait le vendredi
 
Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"Cloud Expo Europe 2018 - "Et si on testait en production ?"
Cloud Expo Europe 2018 - "Et si on testait en production ?"
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6
 
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
Kriss Rochefolle: "How to Convince Your Boss to Say "Yes!" to Chaos Engineeri...
 
Paris Chaos Engineering Meetup #5
Paris Chaos Engineering Meetup #5Paris Chaos Engineering Meetup #5
Paris Chaos Engineering Meetup #5
 
Jftl 2018 chaos engineering
Jftl 2018   chaos engineeringJftl 2018   chaos engineering
Jftl 2018 chaos engineering
 
Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2Paris Chaos Engineering Meetup #2
Paris Chaos Engineering Meetup #2
 
Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1 Paris Chaos Engineering Meetup #1
Paris Chaos Engineering Meetup #1
 

Dernier

Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
Institut de l'Elevage - Idele
 
cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
afigloria194
 
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
iheberry
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
Institut de l'Elevage - Idele
 
Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024
idelewebmestre
 
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
manalishivani8
 
Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
Institut de l'Elevage - Idele
 

Dernier (7)

Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
 
cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
 
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
Etude de la faisabilité de la climatisation solaire pour l’habitat individuel...
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
 
Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024Note agro-climatique et prairies n°5 - Juillet 2024
Note agro-climatique et prairies n°5 - Juillet 2024
 
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
 
Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
 

Qualité Logiciel - Outils Open Source pour Java et Web

  • 1. Qualité Logiciel Outils Open Source pour Java & Web @crochefolle Juin 2009 1
  • 2. @crochefolle  Gestion de configuration  Gestion des tests  Gestion des anomalies  Gestion de la documentation Présentation 2
  • 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. @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. @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. @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. @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. @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. @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. @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. @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. @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/
  • 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
  • 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
  • 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. @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
  • 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
  • 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, …)
  • 26. @crochefolle Salomé-TMF est le référentiel commun à tous les acteurs du projet pour la qualification 26
  • 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. @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. @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. @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. @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
  • 33. @crochefolle  Junit  httpUnit  htmlUnit  jWebUnit *Unit 33
  • 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. @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. @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. @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. @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. @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
  • 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. @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. @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. @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. @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. @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
  • 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. @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
  • 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. @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. @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
  • 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