SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
Commencer avec le TDD
Eric Hogue
PHP Québec - 2013-06-06
Test Driven Development
Où Commencer?
Les tests unitaires
Test automatisé qui exerce une seule unité
de code
Outils
● PHPUnit
● SimpleTest
● atoum
● PHPT
PHPUnit
FactorialTest.php
<?php
class FactorialTest extends
PHPUnit_Framework_TestCase {
}
public function testSomething() {
}
/** @test */
public function somethingElse() {
}
Les assertions
● $this->assertTrue();
● $this->assertEquals();
● $this->assertSame();
● $this->assertContains();
● $this->assertNull();
● $this->assertRegExp();
● ...
Préparation des tests
setup() -> Avant chaque test
teardown() -> Après chaque test
phpunit.xml
<phpunit bootstrap="bootstrap.php"
colors="true"
strict="true"
verbose="true"
>
...
</phpunit>
Le TDD
nyuhuhuu
http://www.flickr.com/photos/nyuhuhuu/4442144329/
Red - Green - Refactor
Rouge
Un test qui échoue
Red - Green - Refactor
Vert
Faire passer le test
Red - Green - Refactor
Refactor
Arranger le code
/** @test */
public function create() {
$this->assertNotNull(new Factorial);
}
class Factorial {
}
/** @test */
public function factOf1() {
$facto = new Factorial;
$this->assertSame(1, $facto->fact(1));
}
public function fact($number) {
return 1;
}
Duplication
public function create() {
$this->assertNotNull(new Factorial);
}
public function factOf1() {
$facto = new Factorial;
...
public function setup() {
$this->facto = new Factorial;
}
/** @test */
public function factOf1() {
$this->assertSame(1, $this->facto->fact(1));
}
/** @test */
public function factOf2() {
$this->assertSame(2, $this->facto->fact(2));
}
public function fact($number) {
return $number;
}
Encore de la duplication
/** @test */
public function factOf1() {
$this->assertSame(1, $this->facto->fact(1));
}
/** @test */
public function factOf2() {
$this->assertSame(2, $this->facto->fact(2));
}
public function factDataProvider() {
return array(
array(1, 1),
array(2, 2),
);
}
/**
* @test
* @dataProvider factDataProvider
*/
public function factorial($number, $expected) {
$result = $this->facto->fact($number);
$this->assertSame($expected, $result);
}
array(3, 6,),
array(3, 6,),
public function fact($number) {
if ($number < 2) return 1;
return $number * $this->fact($number - 1);
}
Les 3 lois du TDD selon Uncle Bob
● Ne jamais écrire du code de production sauf
pour faire passer un test unitaire qui échoue
http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
Les 3 lois du TDD selon Uncle Bob
● Ne jamais écrire du code de production sauf
pour faire passer un test unitaire qui échoue
● Ne pas écrire plus de test que nécéssaire
pour avoir un échec
○ une erreur de compilation est un échec
http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
Les 3 lois du TDD selon Uncle Bob
● Ne jamais écrire du code de production sauf
pour faire passer un test unitaire qui échoue
● Ne pas écrire plus de test que nécéssaire
pour avoir un échec
○ une erreur de compilation est un échec
● Ne pas écrire plus de code de production
que nécéssaire pour faire passer le test
unitaire
http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
Beaucoup
de travail
Photo: Adam Melancon
http://www.flickr.com/photos/melancon/348974082/
Les dépendances
Zhent_
http://www.flickr.com/photos/zhent/574472488/in/faves-96579472@N07/
Les fichiers
Ryan Vettese
http://www.flickr.com/photos/rvettese/383453435/
vfsStream
Système de fichier virtuel
composer.json
"require-dev": {
"mikey179/vfsStream": "*"
},
Vérifier la création d'un répertoire
$root = vfsStream::setup('dir');
$parentDir = $root->url('dir');
//Code qui créer un sous répertoire
$this->createDir($parentDir, 'test');
$this->assertTrue($root->hasChild('test'));
Lire un fichier
$struct = array(
'subDir' => array('test.txt' => 'contenu')
);
$root = vfsStream::setup('root', null, $struct);
$parentDir = $root->url('root');
$content = file_get_contents($parentDir .
'/subDir/test.txt');
$this->assertSame('contenu' , $content);
La base de données
shindoverse
http://www.flickr.com/photos/shindotv/3835363999/
Les Mocks
Permet de remplacer une dépendance
● PHPUnit mocks
● Mockery
● Phake
Création
$mock = $this->getMock
('NamespaceClasse');
Création
$mock = $this->getMock
('NamespaceClasse');
Ou
$mock =$this->getMockBuilder
('NamespaceClasse')
->disableOriginalConstructor()
->getMock();
$mock->expect($this->once())
->method('nomMéthode')
$mock->expect($this->once())
->method('nomMéthode')
->with(1, 'aa', $this->anything())
$mock->expect($this->once())
->method('nomMéthode')
->with(1, 'aa', $this->anything())
->will($this->returnValue(10));
PDO
$statement = $this->getMockBuilder
('PDOStatement')
->getMock();
$statement->expects($this->once())
->method('execute')
->will($this->returnValue(true));
$statement->expects($this->once())
->method('fetchAll')
->will($this->returnValue(array(array('id' =>
123, 'name' => 'Eric Hogue'))));
$pdo = $this->getMockBuilder('stdClass')
->disableOriginalConstructor()
->setMethods(array('prepare'))
->getMock();
$pdo->expects($this->once())
->method('prepare')
->will($this->returnValue($statement));
Pour utiliser PDO
$this->getMockBuilder('PDO')
class PDOMock extends PDO {
public function __construct() {}
}
$pdo = $this->getMockBuilder('PDOMock')
->getMock();
mysql_*
Eliot Phillips
http://www.flickr.com/photos/hackaday/5553713944/
L'extension DbUnit
extends
PHPUnit_Extensions_Database_TestCase
public function getConnection() {
$pdo = new PDO('sqlite::memory:');
return $this->createDefaultDBConnection(
$pdo, ':memory:');
}
public function getDataSet() {
return $this->createFlatXMLDataSet('file');
}
API
● Mettre tous les appels HTTP dans une
classe
○ ZendHttp
○ Simple classe qui appel curl
● Faire un mock de cette classe
○ Retourne le xml/json voulu
Avantages - Inconvénients
Avantages du TDD
● Moins de régression
Avantages du TDD
● Moins de régression
● Plus de confiance
Avantages du TDD
● Moins de régression
● Plus de confiance
● Couplage plus faible
Avantages du TDD
● Moins de régression
● Plus de confiance
● Couplage plus faible
● Design plus simple
Inconvénients du TDD
● Plus long
“If it doesn't have to
work, I can get it done a
lot faster!”
- Kent Beck
Improve It
http://www.flickr.com/photos/improveit/1573943815/
Inconvénients du TDD
● Plus long
● Difficile à vendre aux gestionnaires
Inconvénients du TDD
● Plus long
● Difficile à vendre aux gestionnaires
● C'est difficile
Prochaines étapes?
Continuous Testing
BDD
● phpspec
● Codeception
● Behat
○ Mink + Goutte/Selenium
Behat + Mink
Feature: Add a new post
In order to post the next meetup
As an admin user
I want to add a new event
Scenario: View events
Given I am on "/"
When I go to "evenement"
Then I should see "Commencer avec le
TDD"
Intégration Continue
Intégration Continue
● Exécute les tests automatiquement
○ tests unitaires
○ tests d'acceptation
○ tests de performace
○ ...
Intégration Continue
● Exécute les tests automatiquement
○ tests unitaires
○ tests d'acceptation
○ tests de performace
○ ...
● Vérifie que les standards sont respectés
○ phpcs
Intégration Continue
● Exécute les tests automatiquement
○ tests unitaires
○ tests d'acceptation
○ tests de performace
○ ...
● Vérifie que les standards sont respectés
○ phpcs
● Détecte des "code smells"
○ phploc
○ phpcpd
○ PHP Depend
○ PHP Mess Detector
Damián Navas
http://www.flickr.com/photos/wingedwolf/5471047557/
Commentaires:
https://joind.in/8740
Twitter:
@ehogue
Blogue:
http://erichogue.ca/
Questions

Weitere ähnliche Inhalte

Was ist angesagt?

TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitairesPascal Laurin
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010JUG Lausanne
 
Tests unitaires avec FakeItEasy
Tests unitaires avec FakeItEasyTests unitaires avec FakeItEasy
Tests unitaires avec FakeItEasyWesley Alcoforado
 
Integration continue - Introduction
Integration continue - IntroductionIntegration continue - Introduction
Integration continue - IntroductionOlivier ETIENNE
 
Benchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScriptBenchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScriptjwajsberg
 
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLes Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLy-Jia Goldstein
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)Cellenza
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with ChefOlivier BAZOUD
 
BreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseBreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseAntonio Gomes Rodrigues
 
Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018Benjamin Lavialle
 

Was ist angesagt? (20)

TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Tests unitaires avec FakeItEasy
Tests unitaires avec FakeItEasyTests unitaires avec FakeItEasy
Tests unitaires avec FakeItEasy
 
Integration continue - Introduction
Integration continue - IntroductionIntegration continue - Introduction
Integration continue - Introduction
 
TDD avec atoum
TDD avec atoumTDD avec atoum
TDD avec atoum
 
Benchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScriptBenchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScript
 
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLes Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
 
TDD avec atoum
TDD avec atoumTDD avec atoum
TDD avec atoum
 
BreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesseBreizhCamp 2013 - Crash test à haute vitesse
BreizhCamp 2013 - Crash test à haute vitesse
 
Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 

Ähnlich wie Commencer avec le tdd

Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsThierry Gayet
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Test Driven Development, propulsé par les Legos!
Test Driven Development, propulsé par les Legos!Test Driven Development, propulsé par les Legos!
Test Driven Development, propulsé par les Legos!Agile Montréal
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Gitmsadouni
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
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
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
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
 
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
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectFlorent DENIS
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010PMSIpilot
 
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2Paris Monitoring
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenableLeTesteur
 

Ähnlich wie Commencer avec le tdd (20)

Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teams
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Test Driven Development, propulsé par les Legos!
Test Driven Development, propulsé par les Legos!Test Driven Development, propulsé par les Legos!
Test Driven Development, propulsé par les Legos!
 
Des tests modernes pour Drupal
Des tests modernes pour DrupalDes tests modernes pour Drupal
Des tests modernes pour Drupal
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
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...
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
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...
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
l'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnectl'Industrialisation (avec PHP) @MMIConnect
l'Industrialisation (avec PHP) @MMIConnect
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
to Test or not to Test?
to Test or not to Test?to Test or not to Test?
to Test or not to Test?
 
Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010
 
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
Unofficial Centreon Repositories for Debian - Paris Monitoring meetup #2
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
Et si on jouait au tdd 20131017
Et si on jouait au tdd 20131017Et si on jouait au tdd 20131017
Et si on jouait au tdd 20131017
 

Mehr von Eric Hogue

Au secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerAu secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerEric Hogue
 
Introduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHPIntroduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHPEric Hogue
 
Commencer avec le TDD
Commencer avec le TDDCommencer avec le TDD
Commencer avec le TDDEric Hogue
 
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsEric Hogue
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsEric Hogue
 
Guarding Your Code Against Bugs with Continuous Testing
Guarding Your Code Against Bugs with Continuous TestingGuarding Your Code Against Bugs with Continuous Testing
Guarding Your Code Against Bugs with Continuous TestingEric Hogue
 
Continuous testing In PHP
Continuous testing In PHPContinuous testing In PHP
Continuous testing In PHPEric Hogue
 
La sécurité des communications avec GPG
La sécurité des communications avec GPGLa sécurité des communications avec GPG
La sécurité des communications avec GPGEric Hogue
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Eric Hogue
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous TestingEric Hogue
 
Introduction to ci with jenkins
Introduction to ci with jenkinsIntroduction to ci with jenkins
Introduction to ci with jenkinsEric Hogue
 
Integration continue
Integration continueIntegration continue
Integration continueEric Hogue
 

Mehr von Eric Hogue (12)

Au secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerAu secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguer
 
Introduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHPIntroduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHP
 
Commencer avec le TDD
Commencer avec le TDDCommencer avec le TDD
Commencer avec le TDD
 
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec Jenkins
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with Jenkins
 
Guarding Your Code Against Bugs with Continuous Testing
Guarding Your Code Against Bugs with Continuous TestingGuarding Your Code Against Bugs with Continuous Testing
Guarding Your Code Against Bugs with Continuous Testing
 
Continuous testing In PHP
Continuous testing In PHPContinuous testing In PHP
Continuous testing In PHP
 
La sécurité des communications avec GPG
La sécurité des communications avec GPGLa sécurité des communications avec GPG
La sécurité des communications avec GPG
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
Introduction to ci with jenkins
Introduction to ci with jenkinsIntroduction to ci with jenkins
Introduction to ci with jenkins
 
Integration continue
Integration continueIntegration continue
Integration continue
 

Commencer avec le tdd