Coucou

  • twitter.com/timbarray
  • github.com/tyx

Timothée Barray

développeur PHP depuis + 12 ans

La cuillère n'existe pas

- Et niveau test vous en êtes où ?

- On en a pas, on a pas le temps

- On a pas encore le temps

Instant gif
Profitez c'est

le seul

Disclaimer

Tout ceci n'est que le reflet de mon opinion issue de ma propre expérience

TDD
PHPUnit Atoum Behat PhpSpec
100% couverture

Celui qui fait le dev

Celui qui reprend le dev

Un test ça sert à 2 personnes

Savoir

Les gens ne font pas

de test ?

Ils n'ont pas le temps

Ils ne savent pas ce qu'est un test

Les gens ne font pas

de test ?

on a pas d’argent à mettre dedans parce qu'on a aucune idée de ce qu’on y gagne

Problème

Alors pourquoi on test ?

Pour valider des comportements !

implémentations

C'est la slide

à retenir !

Toute ressemblance avec des faits réels ne serait que pure et fortuite coïncidence

Nos devs cobayes

Jean-Marc

Malik

Jean-Marc

  • Comprend vite les problèmes
  • Dessiner des MCD comme personne
  • Grosse capacité de mentalisation

Mentalisation ?

Malik

  • Les MCD ils aiment pas trop ça
  • Mentalise des choses pas trop grosse
  • a souvent des questions

Jean-Marc

On prend les mêmes et on recommence

Plus grosse flèche
parce que c'est long

Jean-Marc

3 jours de travail = 510€

3 heures de tests IHM = 73€

À l'année :
73€ / 3 j de travail * 5 j semaine

* 47 semaines travaillées =

5718 €

Malik

On prend les mêmes et on recommence

Malik

4 jours de travail = 680€

Différence avec Jean-Marc = 170 €

À l'année :
170€ / 4 j de travail * 5 j semaine

* 47 semaines travaillées =

9987 €

Bilan

En argent

<

5718 €

9987 €

Prix du test ?

4269 € par an pour un développeur

Qu'est-ce qu'on a pour ce prix ?

  • Un Product owner qui fait son vrai métier
  • Une suite de test capable de minimiser les régressions possibles
  • Mitiger l'apport d'un dev legacy

Et c'est tout ?
Ça les vaut vraiment ?

C'était juste l'apport de test tout court...

Malik apporte en plus

Une vrai documentation fonctionnelle à jour avec le code

Une meilleur introduction pour les nouveaux devs.

Et le prix d'une évolution avec ou sans test ?

Prix d'une

documentation classique ?

Temps de

prise en main du logiciel ?

Tester c'est investir sur l'avenir

Le ROI est immédiat !

Méthodologie ?

Par où on commence ?

On ne se parle jamais trop

Le grand V

Le besoin

Le code

Discussion

Test d'intégration

Test unitaire

Test unitaire

Test d'intégration

Recette

Given
When
Then

 Given I registered my vehicle with platenumber "3456 RT 567"

Un effort de traduction minimum

$vehicle = Vehicle::registered(new Platenumber("3456 RT 567"))
public function testAddRequestHeader(array $addHeadersSteps, array $expectedHeaders)
public function test_should_not_decode_invalid_json()
public function test multiple retry should lead to park()

Espace insécables

FTW

CQRS ? Event Sourcing ?

 When I park my vehicle with platenumber "3456 RT 567" at location "3.123456,2.7890"
$this->commandBus->handle(new ParkVehicle('3456 RT 567', '3.123456,2.7890'));
Given I registered my vehicle with platenumber "3456 RT 567"
 Then the known location of my vehicle "3456 RT 567" should be "3.123456,2.7890"
$this->pastChanges[] = new Domain\VehicleWasRegistered(
    $this->userId, 
    $platenumber
);
$this->vehicleFleetShouldHaveRecordedChanges([
    new Domain\VehicleWasParked(
        $this->userId, 
        $platenumber, 
        $location->getLatitude(), 
        $location->getLongitude(), 
        $this->parkedAt->getTimestamp()
    )
]);

Qu'est-ce que ça change ?

Aide à la décision

Remise en question

Plus de sérénité

Facilité d'intégration

Plein de confiance !

Valorisation de l’apport humain

Parce que à la fin, nous tout c'qu'on veut c'est être heureux...

Merci !

Made with Slides.com