SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
INTEGRATION
  CONTINUE
     &
   QUALITE
 LOGICIELLE
        David Buros
  Ingénieur R&D - Profilsoft
About.me
   Développeur PHP depuis 4 ans.

Trois belles expériences en entreprise.

       Du code, mais pas que.

         Veille, veille, veille !
AU SECOURS
  « Chérie, j'ai oublié les bases »




         http://technopolis.blogspot.com/2011/07/age-of-austerity-obama-asks-america-to.html
6
REGLES D'OR
… à suivre pour bien planter son projet.
†
   Partir du principe que les
spécifications fonctionnelles ne
bougent pas en cours de projet,
             jamais.
†


      LOL
   Partir du principe que les
spécifications fonctionnelles ne
bougent pas en cours de projet,
             jamais.
L'AGILE
  « Tarte à la scrum »




               http://wdict.net/fr/word/souplesse+(gymnastique)/
- LE MANIFESTE AGILE -
« Les individus et leurs interactions plus
      que les processus et les outils. »

 « Des logiciels opérationnels plus qu’une
        documentation exhaustive. »

« La collaboration avec les clients plus que
       la négociation contractuelle. »

« L’adaptation au changement plus que le
             suivi d’un plan. »
User Story

   En tant que ROLE, je souhaite
        ACTION pour BUT.
« En tant que client, je souhaite uploader des documents pour
                 compléter ma bibliothèque »
††
    Se dire qu'écrire une
application from scratch pour
hier, c'est facile. On est large
             même.
††


  OMG
    Se dire qu'écrire une
application from scratch pour
hier, c'est facile. On est large
             même.
LES OUTILS
 « Les mains dans le cambouis »




                      http://www.lizardheadone.com/Engine.html
OUTILS MAITRISES
       ≠
OUTILS ADAPTES
       ≠
PRISE DE RISQUE
INCONSCIDEREE
†††
Livrer ses développements sans
   les tester. Ou à la rigueur
 effectuer quelques clics sur la
               page.
†††


    FAUX
Livrer ses développements sans
   les tester. Ou à la rigueur
 effectuer quelques clics sur la
               page.
LES TESTS
« Finalement, on gagne du temps »




               http://www.historyofinformation.com/narrative/restating-the-problem.php
TESTS UNITAIRES

class Request {
    /* CODE */
    public function getPost($name = null) {
        if (null === $name) {
           return $this->_post;
        }
        return array_key_exists($name, $this->_post)?$this->_post[$name]:null;
    }
}



class RequestTest extends PHPUnit_Framework_TestCase {
    /* CODE */
    public function testGetPost()
    {
        $this->assertInternalType('array', $this->object->getPost());

        $this->assertNull($this->object->getPost('test'));

        $this->object->setPost(array('test' => 'value'));
        $this->assertEquals('value', $this->object->getPost('test'));
        $this->assertEquals(array('test' => 'value'), $this->object->getPost());
    }
}
TESTS FONCTIONNELS
††††
Convenir que le meilleur moyen
 de partager son travail c'est de
 mettre un zip des sources sur
     Megaupload Dropbox.
††††


O RLY ?
Convenir que le meilleur moyen
 de partager son travail c'est de
 mettre un zip des sources sur
     Megaupload Dropbox.
LE VERSIONNING
      « Retour vers le futur »




                  http://events.2hweb.net/scrapbook04su.html
CENTRALISE VS DISTRIBUE
†††††
 Garder à l'esprit que le suivi
de la qualité d'un projet tient
 avant tout dans la relecture
    aléatoire des sources.
†††††


    FAIL
 Garder à l'esprit que le suivi
de la qualité d'un projet tient
 avant tout dans la relecture
    aléatoire des sources.
INTEGRATION
  CONTINUE
        « Big Brother »




               http://www.pptbackgrounds.net/
1 ; Commiter votre travail de la journée.

               2 : Faite un build.

           3 : Mergez vos branches.

4 : Mettez les sources en production en un clic.

5 : Allez vous reposer, demain on recommence.
††††††
    Se dire qu'une mise en
   production c'est ni plus ni
 moins que quelques fichiers à
faire glisser dans un client FTP
FUUFU        ††††††
            FUFFUUU       FFUUUFF
     Se direFUUUFFUUF en
FUFUFUF       qu'une mise FUUFU
    production c'est ni plus ni
FUFFUUU FFUUUFF FUFUFUF
  moins que quelques fichiers à
FUUUFFUUF FUUFU FUFFUUU
 faire glisser dans un client FTP
FFUUUFF FUFUFUF FUUUFFUUF
LE DEVOP
  « La tête dans les nuages »




            http://adnm-grp.com/services/solutions-et-lhebergement.html
DEV + OP
Cloud Computing

  IaaS - PaaS

 Chef - Puppet

  Capistrano
?
Contact : dburos@profilsoft.com

Contenu connexe

Tendances

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsRossi Oddet
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)Rui Carvalho
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
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
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptxEsokia
 

Tendances (20)

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / Jenkins
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
XebiConFr 15 - Le nouvel Ops
XebiConFr 15 - Le nouvel Ops XebiConFr 15 - Le nouvel Ops
XebiConFr 15 - Le nouvel Ops
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
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
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
 
XebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vieXebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vie
 

En vedette

Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration ContinueXavier Warzee
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Fabian Piau
 
DevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryDevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryCellenza
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continueAymeric Weinbach
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAymeric Weinbach
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesAdrien Siffermann
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8Aurelien Navarre
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery DistilledMatt Callanan
 
Configuration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginConfiguration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginDaniel Spilker
 
So, you want to be a plugin developer?
So, you want to be a plugin developer?So, you want to be a plugin developer?
So, you want to be a plugin developer?ylefebvre
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryDamien Goldenberg
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatiséJérémie Campari
 
Il était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticIl était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticJoris Calabrese
 
Learn jobDSL for Jenkins
Learn jobDSL for JenkinsLearn jobDSL for Jenkins
Learn jobDSL for JenkinsLarry Cai
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryMike McGarr
 
Devoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDevoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDavid Caramelo
 

En vedette (20)

Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration Continue
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)
 
DevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryDevOps Day - Continuous Delivery
DevOps Day - Continuous Delivery
 
Retour d'expérience Cap Gemini GlassFish
Retour d'expérience Cap Gemini GlassFishRetour d'expérience Cap Gemini GlassFish
Retour d'expérience Cap Gemini GlassFish
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continue
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and tools
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team Services
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
 
Configuration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginConfiguration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL Plugin
 
So, you want to be a plugin developer?
So, you want to be a plugin developer?So, you want to be a plugin developer?
So, you want to be a plugin developer?
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
Il était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticIl était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez Meetic
 
Learn jobDSL for Jenkins
Learn jobDSL for JenkinsLearn jobDSL for Jenkins
Learn jobDSL for Jenkins
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Devoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDevoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous delivery
 
DevOps
DevOpsDevOps
DevOps
 

Similaire à Intégration continue & Qualité logicielle

Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Nicolas Silberman
 
Livraison continue avec Drupal 7
Livraison continue avec Drupal 7Livraison continue avec Drupal 7
Livraison continue avec Drupal 7Arnaud Huon
 
Le développement côté utilisateur
Le développement côté utilisateurLe développement côté utilisateur
Le développement côté utilisateurDavid Buros
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasPierre-Alban DEWITTE
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasBruno Bonnin
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPrestaShop
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Lbv Dev Meetup #2
 Lbv Dev Meetup #2 Lbv Dev Meetup #2
Lbv Dev Meetup #2LbvDev
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement AndroidAnthony Faucogney
 
Votre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodVotre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodCéline Louvet
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023SpikeeLabs
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Microsoft
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPATouchify
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 

Similaire à Intégration continue & Qualité logicielle (20)

Code, ship and run
Code, ship and runCode, ship and run
Code, ship and run
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
 
Livraison continue avec Drupal 7
Livraison continue avec Drupal 7Livraison continue avec Drupal 7
Livraison continue avec Drupal 7
 
Le développement côté utilisateur
Le développement côté utilisateurLe développement côté utilisateur
Le développement côté utilisateur
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Retour d'expérience sur PowerShell
Retour d'expérience sur PowerShellRetour d'expérience sur PowerShell
Retour d'expérience sur PowerShell
 
Lbv Dev Meetup #2
 Lbv Dev Meetup #2 Lbv Dev Meetup #2
Lbv Dev Meetup #2
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 
10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android10 Slides à lire avant de commencer le développement Android
10 Slides à lire avant de commencer le développement Android
 
Votre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodVotre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prod
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 

Intégration continue & Qualité logicielle

  • 1. INTEGRATION CONTINUE & QUALITE LOGICIELLE David Buros Ingénieur R&D - Profilsoft
  • 2. About.me Développeur PHP depuis 4 ans. Trois belles expériences en entreprise. Du code, mais pas que. Veille, veille, veille !
  • 3. AU SECOURS « Chérie, j'ai oublié les bases » http://technopolis.blogspot.com/2011/07/age-of-austerity-obama-asks-america-to.html
  • 4. 6 REGLES D'OR … à suivre pour bien planter son projet.
  • 5. Partir du principe que les spécifications fonctionnelles ne bougent pas en cours de projet, jamais.
  • 6. LOL Partir du principe que les spécifications fonctionnelles ne bougent pas en cours de projet, jamais.
  • 7. L'AGILE « Tarte à la scrum » http://wdict.net/fr/word/souplesse+(gymnastique)/
  • 8. - LE MANIFESTE AGILE - « Les individus et leurs interactions plus que les processus et les outils. » « Des logiciels opérationnels plus qu’une documentation exhaustive. » « La collaboration avec les clients plus que la négociation contractuelle. » « L’adaptation au changement plus que le suivi d’un plan. »
  • 9. User Story En tant que ROLE, je souhaite ACTION pour BUT. « En tant que client, je souhaite uploader des documents pour compléter ma bibliothèque »
  • 10.
  • 11. †† Se dire qu'écrire une application from scratch pour hier, c'est facile. On est large même.
  • 12. †† OMG Se dire qu'écrire une application from scratch pour hier, c'est facile. On est large même.
  • 13. LES OUTILS « Les mains dans le cambouis » http://www.lizardheadone.com/Engine.html
  • 14.
  • 15. OUTILS MAITRISES ≠ OUTILS ADAPTES ≠ PRISE DE RISQUE INCONSCIDEREE
  • 16. ††† Livrer ses développements sans les tester. Ou à la rigueur effectuer quelques clics sur la page.
  • 17. ††† FAUX Livrer ses développements sans les tester. Ou à la rigueur effectuer quelques clics sur la page.
  • 18. LES TESTS « Finalement, on gagne du temps » http://www.historyofinformation.com/narrative/restating-the-problem.php
  • 19. TESTS UNITAIRES class Request { /* CODE */ public function getPost($name = null) { if (null === $name) { return $this->_post; } return array_key_exists($name, $this->_post)?$this->_post[$name]:null; } } class RequestTest extends PHPUnit_Framework_TestCase { /* CODE */ public function testGetPost() { $this->assertInternalType('array', $this->object->getPost()); $this->assertNull($this->object->getPost('test')); $this->object->setPost(array('test' => 'value')); $this->assertEquals('value', $this->object->getPost('test')); $this->assertEquals(array('test' => 'value'), $this->object->getPost()); } }
  • 21. †††† Convenir que le meilleur moyen de partager son travail c'est de mettre un zip des sources sur Megaupload Dropbox.
  • 22. †††† O RLY ? Convenir que le meilleur moyen de partager son travail c'est de mettre un zip des sources sur Megaupload Dropbox.
  • 23. LE VERSIONNING « Retour vers le futur » http://events.2hweb.net/scrapbook04su.html
  • 25.
  • 26. ††††† Garder à l'esprit que le suivi de la qualité d'un projet tient avant tout dans la relecture aléatoire des sources.
  • 27. ††††† FAIL Garder à l'esprit que le suivi de la qualité d'un projet tient avant tout dans la relecture aléatoire des sources.
  • 28. INTEGRATION CONTINUE « Big Brother » http://www.pptbackgrounds.net/
  • 29.
  • 30. 1 ; Commiter votre travail de la journée. 2 : Faite un build. 3 : Mergez vos branches. 4 : Mettez les sources en production en un clic. 5 : Allez vous reposer, demain on recommence.
  • 31. †††††† Se dire qu'une mise en production c'est ni plus ni moins que quelques fichiers à faire glisser dans un client FTP
  • 32. FUUFU †††††† FUFFUUU FFUUUFF Se direFUUUFFUUF en FUFUFUF qu'une mise FUUFU production c'est ni plus ni FUFFUUU FFUUUFF FUFUFUF moins que quelques fichiers à FUUUFFUUF FUUFU FUFFUUU faire glisser dans un client FTP FFUUUFF FUFUFUF FUUUFFUUF
  • 33. LE DEVOP « La tête dans les nuages » http://adnm-grp.com/services/solutions-et-lhebergement.html
  • 35. Cloud Computing IaaS - PaaS Chef - Puppet Capistrano