SlideShare une entreprise Scribd logo
La qualité logicielle et
l'intégration continue
Cas concret du projet Cytomine
Loïc Rollus (lrollus@ulg.ac.be), 11/09/2013
Présentation
Parcourir les outils d’aide au développement
utilisé pour Cytomine
● Logiciel de gestion de versions
● Tests automatisés
● Framework d’intégration continue
● Système de gestion qualité du code source
● Système de suivi de bugs
● Wiki
Au commencement...
Au commencement...
Comment
● synchroniser nos sources?
● gérer les conflits entre fichiers?
● faciliter et automatiser les
backups?
● restaurer facilement une version
précédente d’un ou plusieurs
fichiers?
Logiciel de gestion de versions
Ou VCS (Version Control System)
● Synchroniser le code source
● Résoudre les conflits
● Gérer les versions du logiciel
● Subversion (serveur, client web, …)
● Git (clients, scripts,...)
Sujet de la précédente réunion des Geek Anonymes:
http://geeksanonymes.argenco.ulg.ac.be/sites/default/files/slides%
20subversion%20and%20GIT.pdf
Logiciel de gestion de versions
Logiciel de gestion de versions
Comment
● améliorer la robustesse du
code source?
● détecter rapidement les
bugs?
● éviter de tester
manuellement?
● avoir une idée de la qualité
du logiciel?
Tests automatisés
● Code destiné à tester des méthodes, classes ou des
fonctionnalités complètes
● Détecter automatiquement et rapidement les bugs en
les exécutant régulièrement
● Test Driven Development: écrire les tests puis
implémenter les fonctionnalités
Tests automatisés
● Test unitaire: unité isolée (méthodes, classes,..)
Ex: tester la méthode qui vérifie l’adresse email d’un utilisateur
● Test intégration: plusieurs composantes
Ex: tester l’ajout d’un utilisateur dans la base de données
● Test fonctionnel: fonctionnalités complètes
Ex: lancer le serveur et tester une fonctionnalité via un client
Tests automatisés
Pour Cytomine (Junit)
● Test unitaire: pour des librairies, dépendances,...
● Test “hybride” intégration et fonctionnel
● Test fonctionnalités complètes
● Debug “facile”: même application
donc 1 log, exceptions du serveur
récupéré dans les tests, …
● Accès aux classes et fonctionnalités
du serveur (DB, …)
Tests automatisés
Schéma classique d’un test
1. Préparation des données
2. Requête HTTP vers Cytomine
3. Analyse de la réponse HTTP
4. Vérification
Tests automatisés
Schéma classique d’un test
Exemple: Ajout d’une annotation (zone sur l’image)
1. Préparation des données
a. Création d’un projet et d’une image
b. Création du JSON de l’annotation
2. Requête HTTP vers Cytomine
a. POST HTTP sur l’URL /api/annotation avec le JSON de l’annotation
3. Analyse de la réponse HTTP
a. Vérification du code HTTP (200)
4. Vérification
a. Vérifier directement dans la DB si l’annotation est bien là
Tests automatisés
Exemple:
void testAddAnnotationCorrect() {
Annotation annotation = buildAnnotation()
HTTPClient client = initCytomineConnection()
def result = client.post(“/api/annotation”,annotation.toJSON())
assert 200 == result.code
int idAnnotation = result.data.id
assert Annotation.read(idAnnotation)!=null
}
● Tester aussi les listings, les modifications et suppressions.
● Tester aussi les “cas d’échec” (forme non valide, mauvais projet,...).
Tests automatisés
Très utile pour les ACL (sécurité)
Exemple :
● Un utilisateur ne peut ajouter ou lire des annotations que dans ses projets.
● Il ne peut modifier ou supprimer que ses annotations.
● L’admin cytomine peut tout faire
1. Critique
2. Difficile à tester manuellement
a. Nombreuses fonctions : add, update, delete, read pour chaque type
de domaine (Annotation, Projet,...)
b. Nombreux rôles : Admin, utilisateur d'un projet, utilisateur du projet qui
a créé l’annotation, utilisateur qui n'a pas accès au projet, anonyme
=> Effectuer la requête et vérifier le code HTTP 200 = succès, 401 = non
authentifié et 403 = non autorisé
Tests automatisés
Tests automatisés
Comment
● exécuter plusieurs
centaines de tests avant
chaque commit?
● éviter d’oublier de les
exécuter?
Système d'intégration Continue
● Bamboo (alternatives: Hudson, Jenkins,...)
● Vérifie tous les x temps (ex : 3min) si le dépôt a été mis à jour
● En cas de mise à jour, Bamboo récupère les dernières sources
● Etapes :
○ Compile+Build+Run Cytomine
○ Compile+Run Test
○ Close Cytomine
OK
Envoyer un mail aux
“responsables”
Système d'intégration Continue
Système d'intégration Continue
Système d'intégration Continue
s
Comment
● évaluer la quantité de code
testé?
Couverture de code
● Cobertura
● Calcul la couverture des tests
Couverture de code
Couverture de code
Comment
● évaluer la qualité du code (redondance, règles,...)?
Système de gestion qualité du code source
● Sonar (SonarQube)
● Application web
● Mesurer la qualité du code source en continu
○ Duplications de code
○ Couverture de code par les tests unitaires
○ Mesure le niveau de doc
○ Règles du langage
○ ...
Système de gestion qualité du code source
Système de gestion qualité du code source
Click
Système de gestion qualité du code source
Système de gestion qualité du code source
Système de gestion qualité du code source
Comment
● répertorier les bugs (test échoué,
plainte utilisateur,...)?
● assurer le suivi de la qualité?
Système de suivi de bugs
● Jira
● Gestion par tickets (bug, feature, task,...)
○ Ouvrir, Assigner, Résoudre, Clôturer, ...
○ Organisation et gestion du temps
○ Discussions sur un ticket
Système de suivi de bugs
Environnement complet
Résumé
● Logiciel de gestion de versions: Subversion et Git
● Tests automatisés: JUnit
● Framework d’intégration continue: Bamboo
● Système de gestion qualité du code source: Sonar
(Qube)
● Système de suivi de bugs: Jira
● Wiki: Confluence
● Subversion, Git, Junit et Sonar: gratuit
● Bamboo, Jira et Confluence: 10$/an par logiciel si projet
non open-source (self-host, max 10 users, charity :-)...)
Tips
● Commencer dès le début du projet
● Test Driven Development
● Ne pas se focaliser (trop) sur les chiffres
Amélioration
● Améliorer la couverture des tests du serveur
● Tester l’interface web
● Tester les performances automatiquement
(charge, stress, big data...)
Fin
QUESTIONS?

Contenu connexe

Tendances

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
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeTelecomValley
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
Qualité de code, sonar, la dette
Qualité de code, sonar, la detteQualité de code, sonar, la dette
Qualité de code, sonar, la detteNovencia Groupe
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)Sylvain Leroy
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test Imen Turki
 
les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitésoregh
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17Marc Hage Chahine
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesEric SIBER
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels Bilel Abed
 
Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?Innobec
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIslemoslideshare
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de testsCellenza
 

Tendances (20)

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...
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
Qualité de code, sonar, la dette
Qualité de code, sonar, la detteQualité de code, sonar, la dette
Qualité de code, sonar, la dette
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
 
Qualite1
Qualite1Qualite1
Qualite1
 
les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualité
 
Présentation banc_ test
Présentation banc_ testPrésentation banc_ test
Présentation banc_ test
 
Qualité logiciel - Generalités
Qualité logiciel - GeneralitésQualité logiciel - Generalités
Qualité logiciel - Generalités
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiques
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NI
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests
 

En vedette

Manual bosch horno independiente hbl77 s651e
Manual bosch   horno independiente hbl77 s651eManual bosch   horno independiente hbl77 s651e
Manual bosch horno independiente hbl77 s651eAlsako Electrodomésticos
 
Manual bosch lavavajillas integrable smv58 n70ep
Manual bosch   lavavajillas integrable smv58 n70epManual bosch   lavavajillas integrable smv58 n70ep
Manual bosch lavavajillas integrable smv58 n70epAlsako Electrodomésticos
 
Manual bosch encimera de inducción pid775 n24e
Manual bosch   encimera de inducción pid775 n24eManual bosch   encimera de inducción pid775 n24e
Manual bosch encimera de inducción pid775 n24eAlsako Electrodomésticos
 
Manual bosch congelador de una puerta inox gsn33 vl30
Manual bosch   congelador de una puerta inox gsn33 vl30Manual bosch   congelador de una puerta inox gsn33 vl30
Manual bosch congelador de una puerta inox gsn33 vl30Alsako Electrodomésticos
 
Applications mobiles et Facebook intégrés à votre stratégie e-commerce !
Applications mobiles et Facebook intégrés à votre stratégie e-commerce !Applications mobiles et Facebook intégrés à votre stratégie e-commerce !
Applications mobiles et Facebook intégrés à votre stratégie e-commerce !Intuitiv Technology
 
Manual bosch horno independiente hbr77 s651e
Manual bosch   horno independiente hbr77 s651eManual bosch   horno independiente hbr77 s651e
Manual bosch horno independiente hbr77 s651eAlsako Electrodomésticos
 
Manual bosch horno independiente hba76 s651e
Manual bosch   horno independiente hba76 s651eManual bosch   horno independiente hba76 s651e
Manual bosch horno independiente hba76 s651eAlsako Electrodomésticos
 

En vedette (20)

Manual siemens combi no frost kg39nai32
Manual siemens   combi no frost kg39nai32Manual siemens   combi no frost kg39nai32
Manual siemens combi no frost kg39nai32
 
Manual balay campana 3bc898
Manual balay   campana 3bc898Manual balay   campana 3bc898
Manual balay campana 3bc898
 
Manual siemens combi integrable ki39fp60
Manual siemens   combi integrable ki39fp60Manual siemens   combi integrable ki39fp60
Manual siemens combi integrable ki39fp60
 
Manual siemens frigorífico kd30nx73
Manual siemens   frigorífico kd30nx73Manual siemens   frigorífico kd30nx73
Manual siemens frigorífico kd30nx73
 
Manual bosch horno independiente hbl77 s651e
Manual bosch   horno independiente hbl77 s651eManual bosch   horno independiente hbl77 s651e
Manual bosch horno independiente hbl77 s651e
 
Noun pictures
Noun picturesNoun pictures
Noun pictures
 
Manual bosch lavavajillas integrable smv58 n70ep
Manual bosch   lavavajillas integrable smv58 n70epManual bosch   lavavajillas integrable smv58 n70ep
Manual bosch lavavajillas integrable smv58 n70ep
 
Manual bosch encimera de inducción pid775 n24e
Manual bosch   encimera de inducción pid775 n24eManual bosch   encimera de inducción pid775 n24e
Manual bosch encimera de inducción pid775 n24e
 
Manual bosch combi kgn36 h70
Manual bosch   combi kgn36 h70Manual bosch   combi kgn36 h70
Manual bosch combi kgn36 h70
 
Manual bosch congelador de una puerta inox gsn33 vl30
Manual bosch   congelador de una puerta inox gsn33 vl30Manual bosch   congelador de una puerta inox gsn33 vl30
Manual bosch congelador de una puerta inox gsn33 vl30
 
Manual siemens horno hb78lu571e
Manual siemens   horno hb78lu571eManual siemens   horno hb78lu571e
Manual siemens horno hb78lu571e
 
Manual siemens lavadora WP12T424EE
Manual siemens   lavadora WP12T424EEManual siemens   lavadora WP12T424EE
Manual siemens lavadora WP12T424EE
 
Sesion 6: Planes de Gobierno
Sesion 6: Planes de GobiernoSesion 6: Planes de Gobierno
Sesion 6: Planes de Gobierno
 
Manual balay campana 3bc861m
Manual balay   campana 3bc861mManual balay   campana 3bc861m
Manual balay campana 3bc861m
 
Applications mobiles et Facebook intégrés à votre stratégie e-commerce !
Applications mobiles et Facebook intégrés à votre stratégie e-commerce !Applications mobiles et Facebook intégrés à votre stratégie e-commerce !
Applications mobiles et Facebook intégrés à votre stratégie e-commerce !
 
Manual bosch horno independiente hbr77 s651e
Manual bosch   horno independiente hbr77 s651eManual bosch   horno independiente hbr77 s651e
Manual bosch horno independiente hbr77 s651e
 
Manual bosch horno independiente hba76 s651e
Manual bosch   horno independiente hba76 s651eManual bosch   horno independiente hba76 s651e
Manual bosch horno independiente hba76 s651e
 
Manual bosch compacto hmt85 dl53
Manual bosch   compacto hmt85 dl53Manual bosch   compacto hmt85 dl53
Manual bosch compacto hmt85 dl53
 
Lavavajillas Smeg LSA4513X
Lavavajillas Smeg LSA4513XLavavajillas Smeg LSA4513X
Lavavajillas Smeg LSA4513X
 
Le psaume 23
Le psaume 23Le psaume 23
Le psaume 23
 

Similaire à 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 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 CytomineGeeks Anonymes
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferaySébastien Le Marchand
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0adrienhautot
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueXavier Callens
 
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èsAgile Tour 2009 Québec
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads France
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Gabriele Santini
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en pythongburet
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciellauraty3204
 

Similaire à La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine (20)

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
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferay
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
 
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
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - Epitez
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en python
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel
 

Plus de Interface ULg, LIEGE science park

Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019
Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019
Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019Interface ULg, LIEGE science park
 
SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...
SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...
SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...Interface ULg, LIEGE science park
 
Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...
Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...
Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...Interface ULg, LIEGE science park
 
Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017
Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017
Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017Interface ULg, LIEGE science park
 
Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...
Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...
Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...Interface ULg, LIEGE science park
 
Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017
Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017
Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017Interface ULg, LIEGE science park
 
20170428 - Le Point - Protection des données à caractère personnel - CRIDS
20170428 - Le  Point - Protection des données à caractère personnel - CRIDS20170428 - Le  Point - Protection des données à caractère personnel - CRIDS
20170428 - Le Point - Protection des données à caractère personnel - CRIDSInterface ULg, LIEGE science park
 
Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...
Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...
Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...Interface ULg, LIEGE science park
 
20170224_Le Point_valoriser une entreprise technologique_deloitte
20170224_Le Point_valoriser une entreprise technologique_deloitte20170224_Le Point_valoriser une entreprise technologique_deloitte
20170224_Le Point_valoriser une entreprise technologique_deloitteInterface ULg, LIEGE science park
 
The competencies of the University of Liège for the aerospace cluster SKYWIN
The competencies of the University of Liège for the aerospace cluster SKYWINThe competencies of the University of Liège for the aerospace cluster SKYWIN
The competencies of the University of Liège for the aerospace cluster SKYWINInterface ULg, LIEGE science park
 
Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...
Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...
Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...Interface ULg, LIEGE science park
 
ULg-Skywin - Multibody & mechatronic systems laboratory - MMS
ULg-Skywin - Multibody & mechatronic systems laboratory - MMSULg-Skywin - Multibody & mechatronic systems laboratory - MMS
ULg-Skywin - Multibody & mechatronic systems laboratory - MMSInterface ULg, LIEGE science park
 

Plus de Interface ULg, LIEGE science park (20)

20191129 - le point-diagnostic-pi - picarre
20191129 - le point-diagnostic-pi - picarre20191129 - le point-diagnostic-pi - picarre
20191129 - le point-diagnostic-pi - picarre
 
2019 09 26 - le point - Convaincre son banquier
2019 09 26 - le point - Convaincre son banquier2019 09 26 - le point - Convaincre son banquier
2019 09 26 - le point - Convaincre son banquier
 
2019 03 29_ le point_EUREKA_SPW
2019 03 29_ le point_EUREKA_SPW2019 03 29_ le point_EUREKA_SPW
2019 03 29_ le point_EUREKA_SPW
 
Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019
Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019
Réforme code des sociétés - Le Point du LIEGE science park - 25 janvier 2019
 
20181130 le point-innovatech-analyse multicritere
20181130 le point-innovatech-analyse multicritere20181130 le point-innovatech-analyse multicritere
20181130 le point-innovatech-analyse multicritere
 
20181026 - le point - incitants fiscaux R&D - MoneyOak
20181026 - le point - incitants fiscaux R&D - MoneyOak20181026 - le point - incitants fiscaux R&D - MoneyOak
20181026 - le point - incitants fiscaux R&D - MoneyOak
 
SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...
SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...
SISEM, motivation des équipes projets - Le Point du LIEGE science park - 30 m...
 
Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...
Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...
Aides à l'Innovation de la Région Wallonne - Le Point du LIEGE science park -...
 
Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017
Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017
Protocole NAGOYA - Le Point du LIEGE science park - 27 octobre 2017
 
Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...
Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...
Actifs immatériels - enjeux levée de fonds - Le Point du LIEGE science park -...
 
Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017
Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017
Incitants fiscaux R&D - Le Point du LIEGE science park - 19 mai 2017
 
20170428 - Le Point - Protection des données à caractère personnel - CRIDS
20170428 - Le  Point - Protection des données à caractère personnel - CRIDS20170428 - Le  Point - Protection des données à caractère personnel - CRIDS
20170428 - Le Point - Protection des données à caractère personnel - CRIDS
 
Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...
Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...
Intelligence artificielle - juridique - Le Point du LIEGE science park - 31 m...
 
20170224_Le Point_valoriser une entreprise technologique_deloitte
20170224_Le Point_valoriser une entreprise technologique_deloitte20170224_Le Point_valoriser une entreprise technologique_deloitte
20170224_Le Point_valoriser une entreprise technologique_deloitte
 
The competencies of the University of Liège for the aerospace cluster SKYWIN
The competencies of the University of Liège for the aerospace cluster SKYWINThe competencies of the University of Liège for the aerospace cluster SKYWIN
The competencies of the University of Liège for the aerospace cluster SKYWIN
 
Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...
Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...
Impression 3D et droit des marques _ Le Point du LiEGE science park _ 27 janv...
 
ULg-Skywin - Multibody & mechatronic systems laboratory - MMS
ULg-Skywin - Multibody & mechatronic systems laboratory - MMSULg-Skywin - Multibody & mechatronic systems laboratory - MMS
ULg-Skywin - Multibody & mechatronic systems laboratory - MMS
 
ULg-Skywin - Modelling for aquatic systems - MAST
ULg-Skywin - Modelling for aquatic systems - MASTULg-Skywin - Modelling for aquatic systems - MAST
ULg-Skywin - Modelling for aquatic systems - MAST
 
ULg-Skywin - Microsys
ULg-Skywin - MicrosysULg-Skywin - Microsys
ULg-Skywin - Microsys
 
ULg-Skywin - Lentic
ULg-Skywin - LenticULg-Skywin - Lentic
ULg-Skywin - Lentic
 

La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine

  • 1. La qualité logicielle et l'intégration continue Cas concret du projet Cytomine Loïc Rollus (lrollus@ulg.ac.be), 11/09/2013
  • 2. Présentation Parcourir les outils d’aide au développement utilisé pour Cytomine ● Logiciel de gestion de versions ● Tests automatisés ● Framework d’intégration continue ● Système de gestion qualité du code source ● Système de suivi de bugs ● Wiki
  • 4. Au commencement... Comment ● synchroniser nos sources? ● gérer les conflits entre fichiers? ● faciliter et automatiser les backups? ● restaurer facilement une version précédente d’un ou plusieurs fichiers?
  • 5. Logiciel de gestion de versions Ou VCS (Version Control System) ● Synchroniser le code source ● Résoudre les conflits ● Gérer les versions du logiciel ● Subversion (serveur, client web, …) ● Git (clients, scripts,...) Sujet de la précédente réunion des Geek Anonymes: http://geeksanonymes.argenco.ulg.ac.be/sites/default/files/slides% 20subversion%20and%20GIT.pdf
  • 6. Logiciel de gestion de versions
  • 7. Logiciel de gestion de versions Comment ● améliorer la robustesse du code source? ● détecter rapidement les bugs? ● éviter de tester manuellement? ● avoir une idée de la qualité du logiciel?
  • 8. Tests automatisés ● Code destiné à tester des méthodes, classes ou des fonctionnalités complètes ● Détecter automatiquement et rapidement les bugs en les exécutant régulièrement ● Test Driven Development: écrire les tests puis implémenter les fonctionnalités
  • 9. Tests automatisés ● Test unitaire: unité isolée (méthodes, classes,..) Ex: tester la méthode qui vérifie l’adresse email d’un utilisateur ● Test intégration: plusieurs composantes Ex: tester l’ajout d’un utilisateur dans la base de données ● Test fonctionnel: fonctionnalités complètes Ex: lancer le serveur et tester une fonctionnalité via un client
  • 10. Tests automatisés Pour Cytomine (Junit) ● Test unitaire: pour des librairies, dépendances,... ● Test “hybride” intégration et fonctionnel ● Test fonctionnalités complètes ● Debug “facile”: même application donc 1 log, exceptions du serveur récupéré dans les tests, … ● Accès aux classes et fonctionnalités du serveur (DB, …)
  • 11. Tests automatisés Schéma classique d’un test 1. Préparation des données 2. Requête HTTP vers Cytomine 3. Analyse de la réponse HTTP 4. Vérification
  • 12. Tests automatisés Schéma classique d’un test Exemple: Ajout d’une annotation (zone sur l’image) 1. Préparation des données a. Création d’un projet et d’une image b. Création du JSON de l’annotation 2. Requête HTTP vers Cytomine a. POST HTTP sur l’URL /api/annotation avec le JSON de l’annotation 3. Analyse de la réponse HTTP a. Vérification du code HTTP (200) 4. Vérification a. Vérifier directement dans la DB si l’annotation est bien là
  • 13. Tests automatisés Exemple: void testAddAnnotationCorrect() { Annotation annotation = buildAnnotation() HTTPClient client = initCytomineConnection() def result = client.post(“/api/annotation”,annotation.toJSON()) assert 200 == result.code int idAnnotation = result.data.id assert Annotation.read(idAnnotation)!=null } ● Tester aussi les listings, les modifications et suppressions. ● Tester aussi les “cas d’échec” (forme non valide, mauvais projet,...).
  • 14. Tests automatisés Très utile pour les ACL (sécurité) Exemple : ● Un utilisateur ne peut ajouter ou lire des annotations que dans ses projets. ● Il ne peut modifier ou supprimer que ses annotations. ● L’admin cytomine peut tout faire 1. Critique 2. Difficile à tester manuellement a. Nombreuses fonctions : add, update, delete, read pour chaque type de domaine (Annotation, Projet,...) b. Nombreux rôles : Admin, utilisateur d'un projet, utilisateur du projet qui a créé l’annotation, utilisateur qui n'a pas accès au projet, anonyme => Effectuer la requête et vérifier le code HTTP 200 = succès, 401 = non authentifié et 403 = non autorisé
  • 16. Tests automatisés Comment ● exécuter plusieurs centaines de tests avant chaque commit? ● éviter d’oublier de les exécuter?
  • 17. Système d'intégration Continue ● Bamboo (alternatives: Hudson, Jenkins,...) ● Vérifie tous les x temps (ex : 3min) si le dépôt a été mis à jour ● En cas de mise à jour, Bamboo récupère les dernières sources ● Etapes : ○ Compile+Build+Run Cytomine ○ Compile+Run Test ○ Close Cytomine OK Envoyer un mail aux “responsables”
  • 20. Système d'intégration Continue s Comment ● évaluer la quantité de code testé?
  • 21. Couverture de code ● Cobertura ● Calcul la couverture des tests
  • 23. Couverture de code Comment ● évaluer la qualité du code (redondance, règles,...)?
  • 24. Système de gestion qualité du code source ● Sonar (SonarQube) ● Application web ● Mesurer la qualité du code source en continu ○ Duplications de code ○ Couverture de code par les tests unitaires ○ Mesure le niveau de doc ○ Règles du langage ○ ...
  • 25. Système de gestion qualité du code source
  • 26. Système de gestion qualité du code source Click
  • 27. Système de gestion qualité du code source
  • 28. Système de gestion qualité du code source
  • 29. Système de gestion qualité du code source Comment ● répertorier les bugs (test échoué, plainte utilisateur,...)? ● assurer le suivi de la qualité?
  • 30. Système de suivi de bugs ● Jira ● Gestion par tickets (bug, feature, task,...) ○ Ouvrir, Assigner, Résoudre, Clôturer, ... ○ Organisation et gestion du temps ○ Discussions sur un ticket
  • 31. Système de suivi de bugs
  • 33. Résumé ● Logiciel de gestion de versions: Subversion et Git ● Tests automatisés: JUnit ● Framework d’intégration continue: Bamboo ● Système de gestion qualité du code source: Sonar (Qube) ● Système de suivi de bugs: Jira ● Wiki: Confluence ● Subversion, Git, Junit et Sonar: gratuit ● Bamboo, Jira et Confluence: 10$/an par logiciel si projet non open-source (self-host, max 10 users, charity :-)...)
  • 34. Tips ● Commencer dès le début du projet ● Test Driven Development ● Ne pas se focaliser (trop) sur les chiffres
  • 35. Amélioration ● Améliorer la couverture des tests du serveur ● Tester l’interface web ● Tester les performances automatiquement (charge, stress, big data...)