SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
nAcademy Le 15 janvier 2014 Neuros -
Intégrons en mode continu
Christophe Villeneuve
nAcademy Le 15 janvier 2014 Neuros -
Sommaire
• Pourquoi ?
• La position dans le cycle de développement
• L'intégration continue avec les outils
• Serveur d'intégration continue
nAcademy Le 15 janvier 2014 Neuros -
• Mettre les bons réflexes au début du projet
• Intégration au quotidien
• Chaque intégration est vérifiée par un système automatisé
• La vérification du code tourne en tache de fond
• Détecter les erreurs d'intégration plus rapidement
• Assurer un suivi continu
• Impliquer et fixer des objectifs aux développeurs
• Possibilité de traiter plus en même temps
Intégration continue... Pourquoi c'est possible ?
nAcademy Le 15 janvier 2014 Neuros -
Obligations dans l'intégration continue
• Fournir des données utilisables par les développeurs
• Fournir un bilan lisible venant :
• Responsable(s)
• Client(s)
nAcademy Le 15 janvier 2014 Neuros -
Tests automatisés de Mike Cohn
Tests
Manuels
Tests automatisés
Tests GUI
Tests API
Tests d'intégration
Tests des composants
Tests unitaires
Orientations
Business
Développons nous le bon
système ?
Technique
Développons nous le
système correctement ?
nAcademy Le 15 janvier 2014 Neuros -
Méthologies
• Expliquer comment on produit le code
• Impliquer les utilisateurs dans le cycle
• Courbes d'évolutions
• Cycles de développement court
• on fait / on peaufine
• Méthodes agiles
• SCRUM, XP, Lean SD,...
• Pratiques agiles au menu
• Outils standards du marché
• Utilisation possible avec 1 cron
Accélérer l'intégration par les outils
nAcademy Le 15 janvier 2014 Neuros -
L'intégration continue avec les Outils
• Composition d'une équipe
• Avant tout une question d'attitude
• S'appuie sur des outils comme gestion de version
• GIT, SVN, CSV...
• Utilisation d'outils pour la maintenance du code
• Outils de qualimétrie :
• Sonar, PMD, CheckStyle, validator W3C...
nAcademy Le 15 janvier 2014 Neuros -
Pdepend
✔
Pdepend signifie :
✔
PHP Depend
✔
Outil analyse de code
✔
Indicateur qualité
Outils d'analyse statique
http://pdepend.org/
nAcademy Le 15 janvier 2014 Neuros -
PHP Depend... en exemple
tools:
# Analyzes the size and structure of
a PHP project.
php_pdepend:
command: pdepend
configuration_file: ~
suffixes:
# Default:
- php
excluded_dirs:
# Default:
- vendor
enabled: false
<target name="pdepend">
<phpdepend file="${project.basedir}/${source}/www">
<logger type="jdepend-xml" outfile="${project.basedir}/build/logs/jdepend.xml" />
<logger type="jdepend-chart" outfile="${project.basedir}/build/pdepend/dependencies.svg" />
<logger type="overview-pyramid" outfile="${project.basedir}/build/pdepend/overview-pyramid.svg" />
</phpdepend>
</target>
Installation
Config
Par un paquet
nAcademy Le 15 janvier 2014 Neuros -
➢
Pdepend
➢
PHP Mess Detector
✔
Détecte certains bugs
✔
Propriété non utilisé
Outils d'analyse statique
http://phpmd.org/
nAcademy Le 15 janvier 2014 Neuros -
PHP Mess Detector... en exemple
cd /path/to/myproject
# Lance phpmd sur le répertoire src avec les règles contenues dans phpmd.xml
# Génère le rapport myrepport.html au format HTML
$ phpmd src html /path/to/phpmd.xml > /path/to/myreport.html
<target name="phpmd">
<phpmd file="${project.basedir}/${source}/www">
<formatter type="xml" outfile="${project.basedir}/build/phpmd.xml" />
</phpmd>
</target>
Installation
Config
pear channel-discover pear.phpmd.org
pear channel-discover pear.pdepend.org
pear install --alldeps phpmd/PHP_PMD
nAcademy Le 15 janvier 2014 Neuros -
➢
Pdepend
➢
PHP Mess Detector
➢
PHP CPD
✔
CPD signifie
✔
Copy/Paste Detector
✔
Detecte le code dupliqué
✔
Copié / Collé
Outils d'analyse statique
https://github.com/sebastianbergmann/phpcpd
nAcademy Le 15 janvier 2014 Neuros -
PHP Copy/Paste Detector (PHP CPD)... en exemple
{
"require-dev": {
"phploc/phpcpd": "*"
}
}
wget https://phar.phpunit.de/phpcpd.phar
php phpcpd.phar
Installation
Config. jSON
$ phpcpd /www/projet_test
Execution
nAcademy Le 15 janvier 2014 Neuros -
➢Pdepend
➢PHP Mess Detector
➢PHP Lines Of Code
✔
Compte :
✔
Les lignes de code
✔
Nombre de structures
✔
Mesure :
✔
La taille d'un projet
Outils d'analyse statique
➢
PHP CPD
https://github.com/sebastianbergmann/phploc
nAcademy Le 15 janvier 2014 Neuros -
PHP Lines Of Code (PHPLoc)... en exemple
{
"require-dev": {
"phploc/phploc": "*"
}
}
wget https://phar.phpunit.de/phploc.phar
php phploc.phar
Installation
Config. jSON
$ Phploc /www/Drupal7.23
Execution
nAcademy Le 15 janvier 2014 Neuros -
➢
Pdepend
➢
PHP Mess Detector
➢
PHP Code Sniffer
✔
Détecte
✔
Conventions de code
✔
Norme de codage
✔
Pour avoir
✔
Code propre
✔
Cohérent
✔
Intéresse personne
Outils d'analyse statique
➢
PHP CPD
➢
PHP Lines Of Code
nAcademy Le 15 janvier 2014 Neuros -
➢
Pdepend
➢
PHP Mess Detector
➢
PHP Doc
✔
PHP Documentator
✔
Générer votre doc d'API
Outils d'analyse statique
➢
PHP CPD
➢
PHP Lines Of Code
➢
PHP Code Sniffer
https://github.com/theseer/phpdox
nAcademy Le 15 janvier 2014 Neuros -
PHP Doc... en exemple
<target name="phpdoc">
<phpdoc title="API Documentation"
destdir="${project.basedir}/build/api"
sourcecode="false"
output="HTML:Smarty:PHP">
<fileset dir="${project.basedir}/${source}/www">
<include name="**/*.php"/>
</fileset>
<projdocfileset dir=".">
<include name="README"/>
<include name="INSTALL"/>
<include name="CHANGELOG"/>
</projdocfileset>
</phpdoc>
</target>
pear install --alldeps PhpDocumentor
Installation
Config.
/**
* Article
* Definition de la classe Article utilisée pour le
Projet
*
* @package API
* @subpackage classes
* @author Christophe Villeneuve
* @version 2014-01-01 v30 $
*/
nAcademy Le 15 janvier 2014 Neuros -
➢Pdepend
➢PHP Mess Detector
➢PHP Code Beautifier
✔
Généré une vue stylée du code
✔
Evite de reformater le code
✔
Mise en avant des alertes
remontées par les outils
précédents
✔
Différentes versions :
✔
Version graphique
✔
En ligne de commande
Outils d'analyse statique
➢
PHP CPD
➢
PHP Lines Of Code
➢
PHP Code Sniffer
➢
PHPdoc
http://www.waterproof.fr/products/phpCodeBeautifier/
nAcademy Le 15 janvier 2014 Neuros -
PHP Code Beautifier... en exemple
<?php
if($code == BAD){$action = REWRITE;}else{$action = KEEP;}
for($i=0; $i<10;$i++){while($j>0){$j++;doCall($i+$j);if($k){$k/=10;}}}
?>
Code original
Code final :
<?php
if ($code == BAD) {
$action = REWRITE;
} else {
$action = KEEP;
}
for($i = 0; $i < 10;$i++) {
while ($j > 0) {
$j++;
doCall($i + $j);
if ($k) {
$k /= 10;
}
}
}
?>
nAcademy Le 15 janvier 2014 Neuros -
✔
Framework
✔
Zend, Symfony,...
✔
CMS
✔
Drupal
✔
Librairie externe
✔
Pecl, Pear
✔
Taille / poids
✔
Milliers de lignes de codes
✔
Ne pas mesurer la qualité
de ces produits
✔
Exclure tout ce qui ne vous
appartient pas
✔
Les applications modernes Les dérapages
Attention... Aux applications modernes
Délais de contrôle > 24 H
Serveur d'intégration continue
nAcademy Le 15 janvier 2014 Neuros -
Serveurs d'intégration continue possible
• Gestionnaire de versions
• GIT, SVN, CSV...
• Serveurs intégration continue :
• Jenkins, CriseControl, Phing
• Gestionnaires de dépendances :
• Maven, Ivy
• Assemblage et building :
• Maven, Ant
• Outils de test :
• PHPUnit, Selenium
• Outils de qualimétrie :
• Sonar, PMD, CheckStyle, validator W3C...
nAcademy Le 15 janvier 2014 Neuros -
Serveurs d'intégration continue... Disponible
• Cruise Control + PHPUnderControl
• Cruire Control + Ant / Maven
• Xinc + Phing
• Gerkin+Behat+Mint VS Gerkin+Cucumber+Sahi
• Jenkins +...
•
Fichiers PHP
•
Shell
•
Batch
•
Fichiers PHP
•
Shell
•
Batch
nAcademy Le 15 janvier 2014 Neuros -
✔
Dev. petite fonction
✔
Tache peut importante
✔
Simple
✔
Délais : ½ journée
✔
Récupération code (SVN)
✔
Réalisation du Dev
✔
Batteries de tests
✔
Exécute une construction
automatisé en local
✔
Et le compile
✔
Résultat
✔
Comit
✔
Idem serveur Recette
Outil (slide précédent) Déroulement
Serveur intégration continue
nAcademy Le 15 janvier 2014 Neuros -
Les pratiques d'un serveur d'intégration continue
• Maintenir un dépôt unique versionné
• Automatiser la construction
• Rendre la construction auto-testable
• Tout le monde propage son activité chaque jour
• Déclencher la construction à chaque propagation
(serveur intégration)
• Maintenir une construction rapide
• Tester de nouveau sur un serveur de PreProd
• Rendre disponible rapidement les nouveautés
• C'est transparent
•
Cas pratique
Behat / Mint
nAcademy Le 15 janvier 2014 Neuros -
Présentation Behat
• Behat
• Framework Behavior Driven Development (BDD) pour PHP
• Méthode Agile
• Orienté Métier
• Utilise Gerkin Syntaxe
– (Décrit le comportement d'une API sans s'occupe des détails de
l'implémentation)
nAcademy Le 15 janvier 2014 Neuros -
Principe BDD (Behavior Driven Development)
→ Gestion d'un caddie identifié
• Scénario :
– Etant donné que j'ai un caddie
– Et que le caddie doit être vide
– Quand j'ajoute 1 produit
– Alors le résultat = 1
– Quand j'ajoute 10 produits
– Alors j'obtiens 11 produits
– Quand je retire 20 produits à mon caddie
– Alors je dois avoir le message 'Vous n'avez pas...'
nAcademy Le 15 janvier 2014 Neuros -
Utilisation
• pear channel-discover pear.symfony.com
• pear channel-discover pear.behat.org
• pear install behat/behat
http://docs.behat.org/
{
"require": {
"behat/behat": "2.4.*@stable"
},
"minimum-stability": "dev",
"config": {
"bin-dir": "bin/"
}
}
Contexte
Evénements
Résultat
nAcademy Le 15 janvier 2014 Neuros -
Utilisation par le code (1/2)
<!--?php
use BehatBehatContextClosuredContextInterface,
BehatBehatContextBehatContext,
BehatBehatExceptionPendingException;
use BehatGherkinNodePyStringNode,
BehatGherkinNodeTableNode;
class FeatureContext extends BehatContext
{
public function queJeSuisUnClient() {
if(is_null($this->_account)) {
$this->_account = new Account;
}
}
...
}
nAcademy Le 15 janvier 2014 Neuros -
Utilisation par le code (2/2)
Scénario Outline
Given si j'ai un caddie
When jAjouteProduit(1)
Then jObtiensUn
Given je vide mon caddie
When jEssayeDeRetirerPlusDeProduit()
Then jObtiensUnMessage
/**
* @Given /^si jai un caddie$/
*/
public function jAjouteProduit($qte) {
$this->_account->addCaddy($qte);
}
/**
* @Given /^je retire "([^"]*)" produit$/
*/
public function jeRetireProduit($qte) {
$this->_account->takeCaddy($qte);
}
/**
* @Given /^je vide mon caddie $/
*/
public function jEssayeDeRetirerPlusDePorduit() {
try {
$this->_account->setTotalQte(11);
$this->_account->takeCaddy(20);
} catch (Exception $e) {
$this->_lastException = $e;
}
}
nAcademy Le 15 janvier 2014 Neuros -
Présentation Mink
Mink
• Framework de tests de recette
• Abstraction du navigateur et du driver
– Goutte 
– Selenium
– Zombie
nAcademy Le 15 janvier 2014 Neuros -
Utilisation
• sudo pear install behat/mink-beta
nAcademy Le 15 janvier 2014 Neuros -
Utilisation par le code
require_once 'mink/autoload.php';
class FeatureContext extends BehatMinkBehatContextMinkContext {
/**
* @Given /^Je suis identifie "([^"]*)"$/
*/
public function jeSuisIdentifie($username)
{
return array(
new StepGiven('I go to "login.php"')
,new StepWhen("I fill in 'Mon nom' with '$username' ")
,new StepWhen("I fill in 'Mon mot de passe' with '$password' ")
,new StepWhen('I press "Login"')
);
}
}
nAcademy Le 15 janvier 2014 Neuros -
Bien sur....
Framework / CMS
+
Behat
+
Mink
+
Selenium
+
PHPUnit
nAcademy Le 15 janvier 2014 Neuros -
Association serveur d'intégration continue
• Tests Unitaires
• PHPUnit, jUnit...
• Autres modes de tests
• Fonctionnels
• Deploiement
• Jenkins
• Versionning
• ...
nAcademy Le 15 janvier 2014 Neuros -
En résumé... intégration continue
• Peu de mise en place
• Pas d'implication de l'utilisateur/client
• Possibilité de valoriser la qualité auprès des clients
nAcademy Le 15 janvier 2014 Neuros -
L'intégration...
Questions ? @hellosct1
Peut aussi se faire par la fête 

Weitere ähnliche Inhalte

Was ist angesagt?

What's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsWhat's Next Replay - IC / Jenkins
What's Next Replay - IC / JenkinsZenikaOuest
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudsonxmacina
 
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
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
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
 
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
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration ContinueXavier Warzee
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
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
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOpsJeoffrey Bauvin
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010JUG Lausanne
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreStephane Manciot
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 

Was ist angesagt? (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 Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
 
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
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
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
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration Continue
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
Puppet, la philosophie DevOps
Puppet, la philosophie DevOpsPuppet, la philosophie DevOps
Puppet, la philosophie DevOps
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvre
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 

Andere mochten auch

Déployer avec les tests
Déployer avec les testsDéployer avec les tests
Déployer avec les testsneuros
 
Behat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdfBehat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdfseleniumbootcamp
 
Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4halleck45
 
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 modernehalleck45
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5halleck45
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ? ALTER WAY
 

Andere mochten auch (6)

Déployer avec les tests
Déployer avec les testsDéployer avec les tests
Déployer avec les tests
 
Behat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdfBehat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdf
 
Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4
 
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
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 

Ähnlich wie Integrons en mode continu

Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Ippon
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectFlorent DENIS
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java scriptPascal Laurin
 
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
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéeNicolas Silberman
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6Microsoft
 
Power shell saturday Paris 2017 Omiossec
Power shell saturday  Paris 2017 OmiossecPower shell saturday  Paris 2017 Omiossec
Power shell saturday Paris 2017 OmiossecOlivier Miossec
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Publicis Sapient Engineering
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 

Ähnlich wie Integrons en mode continu (20)

Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnect
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Les tests de securite devops
Les tests de securite devopsLes tests de securite devops
Les tests de securite devops
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java script
 
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
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiée
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
Maven
MavenMaven
Maven
 
Power shell saturday Paris 2017 Omiossec
Power shell saturday  Paris 2017 OmiossecPower shell saturday  Paris 2017 Omiossec
Power shell saturday Paris 2017 Omiossec
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 

Mehr von neuros

Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)neuros
 
Le service workers
Le service workersLe service workers
Le service workersneuros
 
Proteger votre vie privee sur internet
Proteger votre vie privee sur internetProteger votre vie privee sur internet
Proteger votre vie privee sur internetneuros
 
Le pouvoir d'être Visible ou Invisible sur Internet
Le pouvoir d'être Visible ou Invisible  sur InternetLe pouvoir d'être Visible ou Invisible  sur Internet
Le pouvoir d'être Visible ou Invisible sur Internetneuros
 
Vos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesVos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesneuros
 
Livre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursLivre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursneuros
 
Http2 les impacts dans le web
Http2 les impacts dans le webHttp2 les impacts dans le web
Http2 les impacts dans le webneuros
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7neuros
 
RGAA 3 dans un Web Accessible
RGAA 3 dans un Web AccessibleRGAA 3 dans un Web Accessible
RGAA 3 dans un Web Accessibleneuros
 
Les effets de la loi Hamon
Les effets de la loi HamonLes effets de la loi Hamon
Les effets de la loi Hamonneuros
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et phpneuros
 
Les protocoles temps réels
Les protocoles temps réelsLes protocoles temps réels
Les protocoles temps réelsneuros
 
Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)neuros
 
Améliorer les performances SQL
Améliorer les performances SQLAméliorer les performances SQL
Améliorer les performances SQLneuros
 
Newschool partie1 methode HTML5
Newschool partie1 methode HTML5Newschool partie1 methode HTML5
Newschool partie1 methode HTML5neuros
 
Effectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalEffectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalneuros
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informationsneuros
 
La maitrise des contenus hors internet
La maitrise des contenus hors internetLa maitrise des contenus hors internet
La maitrise des contenus hors internetneuros
 
La mémoire et PHP
La mémoire et PHPLa mémoire et PHP
La mémoire et PHPneuros
 
Pourquoi Firefox OS
Pourquoi Firefox OSPourquoi Firefox OS
Pourquoi Firefox OSneuros
 

Mehr von neuros (20)

Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)
 
Le service workers
Le service workersLe service workers
Le service workers
 
Proteger votre vie privee sur internet
Proteger votre vie privee sur internetProteger votre vie privee sur internet
Proteger votre vie privee sur internet
 
Le pouvoir d'être Visible ou Invisible sur Internet
Le pouvoir d'être Visible ou Invisible  sur InternetLe pouvoir d'être Visible ou Invisible  sur Internet
Le pouvoir d'être Visible ou Invisible sur Internet
 
Vos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesVos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertes
 
Livre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursLivre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeurs
 
Http2 les impacts dans le web
Http2 les impacts dans le webHttp2 les impacts dans le web
Http2 les impacts dans le web
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7
 
RGAA 3 dans un Web Accessible
RGAA 3 dans un Web AccessibleRGAA 3 dans un Web Accessible
RGAA 3 dans un Web Accessible
 
Les effets de la loi Hamon
Les effets de la loi HamonLes effets de la loi Hamon
Les effets de la loi Hamon
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et php
 
Les protocoles temps réels
Les protocoles temps réelsLes protocoles temps réels
Les protocoles temps réels
 
Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)
 
Améliorer les performances SQL
Améliorer les performances SQLAméliorer les performances SQL
Améliorer les performances SQL
 
Newschool partie1 methode HTML5
Newschool partie1 methode HTML5Newschool partie1 methode HTML5
Newschool partie1 methode HTML5
 
Effectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalEffectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupal
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informations
 
La maitrise des contenus hors internet
La maitrise des contenus hors internetLa maitrise des contenus hors internet
La maitrise des contenus hors internet
 
La mémoire et PHP
La mémoire et PHPLa mémoire et PHP
La mémoire et PHP
 
Pourquoi Firefox OS
Pourquoi Firefox OSPourquoi Firefox OS
Pourquoi Firefox OS
 

Integrons en mode continu

  • 1. nAcademy Le 15 janvier 2014 Neuros - Intégrons en mode continu Christophe Villeneuve
  • 2. nAcademy Le 15 janvier 2014 Neuros - Sommaire • Pourquoi ? • La position dans le cycle de développement • L'intégration continue avec les outils • Serveur d'intégration continue
  • 3. nAcademy Le 15 janvier 2014 Neuros - • Mettre les bons réflexes au début du projet • Intégration au quotidien • Chaque intégration est vérifiée par un système automatisé • La vérification du code tourne en tache de fond • Détecter les erreurs d'intégration plus rapidement • Assurer un suivi continu • Impliquer et fixer des objectifs aux développeurs • Possibilité de traiter plus en même temps Intégration continue... Pourquoi c'est possible ?
  • 4. nAcademy Le 15 janvier 2014 Neuros - Obligations dans l'intégration continue • Fournir des données utilisables par les développeurs • Fournir un bilan lisible venant : • Responsable(s) • Client(s)
  • 5. nAcademy Le 15 janvier 2014 Neuros - Tests automatisés de Mike Cohn Tests Manuels Tests automatisés Tests GUI Tests API Tests d'intégration Tests des composants Tests unitaires Orientations Business Développons nous le bon système ? Technique Développons nous le système correctement ?
  • 6. nAcademy Le 15 janvier 2014 Neuros - Méthologies • Expliquer comment on produit le code • Impliquer les utilisateurs dans le cycle • Courbes d'évolutions • Cycles de développement court • on fait / on peaufine • Méthodes agiles • SCRUM, XP, Lean SD,... • Pratiques agiles au menu • Outils standards du marché • Utilisation possible avec 1 cron
  • 8. nAcademy Le 15 janvier 2014 Neuros - L'intégration continue avec les Outils • Composition d'une équipe • Avant tout une question d'attitude • S'appuie sur des outils comme gestion de version • GIT, SVN, CSV... • Utilisation d'outils pour la maintenance du code • Outils de qualimétrie : • Sonar, PMD, CheckStyle, validator W3C...
  • 9. nAcademy Le 15 janvier 2014 Neuros - Pdepend ✔ Pdepend signifie : ✔ PHP Depend ✔ Outil analyse de code ✔ Indicateur qualité Outils d'analyse statique http://pdepend.org/
  • 10. nAcademy Le 15 janvier 2014 Neuros - PHP Depend... en exemple tools: # Analyzes the size and structure of a PHP project. php_pdepend: command: pdepend configuration_file: ~ suffixes: # Default: - php excluded_dirs: # Default: - vendor enabled: false <target name="pdepend"> <phpdepend file="${project.basedir}/${source}/www"> <logger type="jdepend-xml" outfile="${project.basedir}/build/logs/jdepend.xml" /> <logger type="jdepend-chart" outfile="${project.basedir}/build/pdepend/dependencies.svg" /> <logger type="overview-pyramid" outfile="${project.basedir}/build/pdepend/overview-pyramid.svg" /> </phpdepend> </target> Installation Config Par un paquet
  • 11. nAcademy Le 15 janvier 2014 Neuros - ➢ Pdepend ➢ PHP Mess Detector ✔ Détecte certains bugs ✔ Propriété non utilisé Outils d'analyse statique http://phpmd.org/
  • 12. nAcademy Le 15 janvier 2014 Neuros - PHP Mess Detector... en exemple cd /path/to/myproject # Lance phpmd sur le répertoire src avec les règles contenues dans phpmd.xml # Génère le rapport myrepport.html au format HTML $ phpmd src html /path/to/phpmd.xml > /path/to/myreport.html <target name="phpmd"> <phpmd file="${project.basedir}/${source}/www"> <formatter type="xml" outfile="${project.basedir}/build/phpmd.xml" /> </phpmd> </target> Installation Config pear channel-discover pear.phpmd.org pear channel-discover pear.pdepend.org pear install --alldeps phpmd/PHP_PMD
  • 13. nAcademy Le 15 janvier 2014 Neuros - ➢ Pdepend ➢ PHP Mess Detector ➢ PHP CPD ✔ CPD signifie ✔ Copy/Paste Detector ✔ Detecte le code dupliqué ✔ Copié / Collé Outils d'analyse statique https://github.com/sebastianbergmann/phpcpd
  • 14. nAcademy Le 15 janvier 2014 Neuros - PHP Copy/Paste Detector (PHP CPD)... en exemple { "require-dev": { "phploc/phpcpd": "*" } } wget https://phar.phpunit.de/phpcpd.phar php phpcpd.phar Installation Config. jSON $ phpcpd /www/projet_test Execution
  • 15. nAcademy Le 15 janvier 2014 Neuros - ➢Pdepend ➢PHP Mess Detector ➢PHP Lines Of Code ✔ Compte : ✔ Les lignes de code ✔ Nombre de structures ✔ Mesure : ✔ La taille d'un projet Outils d'analyse statique ➢ PHP CPD https://github.com/sebastianbergmann/phploc
  • 16. nAcademy Le 15 janvier 2014 Neuros - PHP Lines Of Code (PHPLoc)... en exemple { "require-dev": { "phploc/phploc": "*" } } wget https://phar.phpunit.de/phploc.phar php phploc.phar Installation Config. jSON $ Phploc /www/Drupal7.23 Execution
  • 17. nAcademy Le 15 janvier 2014 Neuros - ➢ Pdepend ➢ PHP Mess Detector ➢ PHP Code Sniffer ✔ Détecte ✔ Conventions de code ✔ Norme de codage ✔ Pour avoir ✔ Code propre ✔ Cohérent ✔ Intéresse personne Outils d'analyse statique ➢ PHP CPD ➢ PHP Lines Of Code
  • 18. nAcademy Le 15 janvier 2014 Neuros - ➢ Pdepend ➢ PHP Mess Detector ➢ PHP Doc ✔ PHP Documentator ✔ Générer votre doc d'API Outils d'analyse statique ➢ PHP CPD ➢ PHP Lines Of Code ➢ PHP Code Sniffer https://github.com/theseer/phpdox
  • 19. nAcademy Le 15 janvier 2014 Neuros - PHP Doc... en exemple <target name="phpdoc"> <phpdoc title="API Documentation" destdir="${project.basedir}/build/api" sourcecode="false" output="HTML:Smarty:PHP"> <fileset dir="${project.basedir}/${source}/www"> <include name="**/*.php"/> </fileset> <projdocfileset dir="."> <include name="README"/> <include name="INSTALL"/> <include name="CHANGELOG"/> </projdocfileset> </phpdoc> </target> pear install --alldeps PhpDocumentor Installation Config. /** * Article * Definition de la classe Article utilisée pour le Projet * * @package API * @subpackage classes * @author Christophe Villeneuve * @version 2014-01-01 v30 $ */
  • 20. nAcademy Le 15 janvier 2014 Neuros - ➢Pdepend ➢PHP Mess Detector ➢PHP Code Beautifier ✔ Généré une vue stylée du code ✔ Evite de reformater le code ✔ Mise en avant des alertes remontées par les outils précédents ✔ Différentes versions : ✔ Version graphique ✔ En ligne de commande Outils d'analyse statique ➢ PHP CPD ➢ PHP Lines Of Code ➢ PHP Code Sniffer ➢ PHPdoc http://www.waterproof.fr/products/phpCodeBeautifier/
  • 21. nAcademy Le 15 janvier 2014 Neuros - PHP Code Beautifier... en exemple <?php if($code == BAD){$action = REWRITE;}else{$action = KEEP;} for($i=0; $i<10;$i++){while($j>0){$j++;doCall($i+$j);if($k){$k/=10;}}} ?> Code original Code final : <?php if ($code == BAD) { $action = REWRITE; } else { $action = KEEP; } for($i = 0; $i < 10;$i++) { while ($j > 0) { $j++; doCall($i + $j); if ($k) { $k /= 10; } } } ?>
  • 22. nAcademy Le 15 janvier 2014 Neuros - ✔ Framework ✔ Zend, Symfony,... ✔ CMS ✔ Drupal ✔ Librairie externe ✔ Pecl, Pear ✔ Taille / poids ✔ Milliers de lignes de codes ✔ Ne pas mesurer la qualité de ces produits ✔ Exclure tout ce qui ne vous appartient pas ✔ Les applications modernes Les dérapages Attention... Aux applications modernes Délais de contrôle > 24 H
  • 24. nAcademy Le 15 janvier 2014 Neuros - Serveurs d'intégration continue possible • Gestionnaire de versions • GIT, SVN, CSV... • Serveurs intégration continue : • Jenkins, CriseControl, Phing • Gestionnaires de dépendances : • Maven, Ivy • Assemblage et building : • Maven, Ant • Outils de test : • PHPUnit, Selenium • Outils de qualimétrie : • Sonar, PMD, CheckStyle, validator W3C...
  • 25. nAcademy Le 15 janvier 2014 Neuros - Serveurs d'intégration continue... Disponible • Cruise Control + PHPUnderControl • Cruire Control + Ant / Maven • Xinc + Phing • Gerkin+Behat+Mint VS Gerkin+Cucumber+Sahi • Jenkins +... • Fichiers PHP • Shell • Batch • Fichiers PHP • Shell • Batch
  • 26. nAcademy Le 15 janvier 2014 Neuros - ✔ Dev. petite fonction ✔ Tache peut importante ✔ Simple ✔ Délais : ½ journée ✔ Récupération code (SVN) ✔ Réalisation du Dev ✔ Batteries de tests ✔ Exécute une construction automatisé en local ✔ Et le compile ✔ Résultat ✔ Comit ✔ Idem serveur Recette Outil (slide précédent) Déroulement Serveur intégration continue
  • 27. nAcademy Le 15 janvier 2014 Neuros - Les pratiques d'un serveur d'intégration continue • Maintenir un dépôt unique versionné • Automatiser la construction • Rendre la construction auto-testable • Tout le monde propage son activité chaque jour • Déclencher la construction à chaque propagation (serveur intégration) • Maintenir une construction rapide • Tester de nouveau sur un serveur de PreProd • Rendre disponible rapidement les nouveautés • C'est transparent •
  • 29. nAcademy Le 15 janvier 2014 Neuros - Présentation Behat • Behat • Framework Behavior Driven Development (BDD) pour PHP • Méthode Agile • Orienté Métier • Utilise Gerkin Syntaxe – (Décrit le comportement d'une API sans s'occupe des détails de l'implémentation)
  • 30. nAcademy Le 15 janvier 2014 Neuros - Principe BDD (Behavior Driven Development) → Gestion d'un caddie identifié • Scénario : – Etant donné que j'ai un caddie – Et que le caddie doit être vide – Quand j'ajoute 1 produit – Alors le résultat = 1 – Quand j'ajoute 10 produits – Alors j'obtiens 11 produits – Quand je retire 20 produits à mon caddie – Alors je dois avoir le message 'Vous n'avez pas...'
  • 31. nAcademy Le 15 janvier 2014 Neuros - Utilisation • pear channel-discover pear.symfony.com • pear channel-discover pear.behat.org • pear install behat/behat http://docs.behat.org/ { "require": { "behat/behat": "2.4.*@stable" }, "minimum-stability": "dev", "config": { "bin-dir": "bin/" } } Contexte Evénements Résultat
  • 32. nAcademy Le 15 janvier 2014 Neuros - Utilisation par le code (1/2) <!--?php use BehatBehatContextClosuredContextInterface, BehatBehatContextBehatContext, BehatBehatExceptionPendingException; use BehatGherkinNodePyStringNode, BehatGherkinNodeTableNode; class FeatureContext extends BehatContext { public function queJeSuisUnClient() { if(is_null($this->_account)) { $this->_account = new Account; } } ... }
  • 33. nAcademy Le 15 janvier 2014 Neuros - Utilisation par le code (2/2) Scénario Outline Given si j'ai un caddie When jAjouteProduit(1) Then jObtiensUn Given je vide mon caddie When jEssayeDeRetirerPlusDeProduit() Then jObtiensUnMessage /** * @Given /^si jai un caddie$/ */ public function jAjouteProduit($qte) { $this->_account->addCaddy($qte); } /** * @Given /^je retire "([^"]*)" produit$/ */ public function jeRetireProduit($qte) { $this->_account->takeCaddy($qte); } /** * @Given /^je vide mon caddie $/ */ public function jEssayeDeRetirerPlusDePorduit() { try { $this->_account->setTotalQte(11); $this->_account->takeCaddy(20); } catch (Exception $e) { $this->_lastException = $e; } }
  • 34. nAcademy Le 15 janvier 2014 Neuros - Présentation Mink Mink • Framework de tests de recette • Abstraction du navigateur et du driver – Goutte  – Selenium – Zombie
  • 35. nAcademy Le 15 janvier 2014 Neuros - Utilisation • sudo pear install behat/mink-beta
  • 36. nAcademy Le 15 janvier 2014 Neuros - Utilisation par le code require_once 'mink/autoload.php'; class FeatureContext extends BehatMinkBehatContextMinkContext { /** * @Given /^Je suis identifie "([^"]*)"$/ */ public function jeSuisIdentifie($username) { return array( new StepGiven('I go to "login.php"') ,new StepWhen("I fill in 'Mon nom' with '$username' ") ,new StepWhen("I fill in 'Mon mot de passe' with '$password' ") ,new StepWhen('I press "Login"') ); } }
  • 37. nAcademy Le 15 janvier 2014 Neuros - Bien sur.... Framework / CMS + Behat + Mink + Selenium + PHPUnit
  • 38. nAcademy Le 15 janvier 2014 Neuros - Association serveur d'intégration continue • Tests Unitaires • PHPUnit, jUnit... • Autres modes de tests • Fonctionnels • Deploiement • Jenkins • Versionning • ...
  • 39. nAcademy Le 15 janvier 2014 Neuros - En résumé... intégration continue • Peu de mise en place • Pas d'implication de l'utilisateur/client • Possibilité de valoriser la qualité auprès des clients
  • 40. nAcademy Le 15 janvier 2014 Neuros - L'intégration... Questions ? @hellosct1 Peut aussi se faire par la fête