testing things

24
A LES-TILLEULS.COOP ORIGINAL TALK

Upload: vincent-chalamon

Post on 12-Apr-2017

324 views

Category:

Technology


0 download

TRANSCRIPT

ALES-TILLEULS.COOPORIGINALTALK

@vincentchalamon

Vincent CHALAMON

Lead developer chez Les-Tilleuls.coop

github.com/vincentchalamon

Konstantin Kudryashov

github.com/everzet

@everzet

http://behat.org/

« A php framework for attesting your business

expectations. »

Exemple de scénario : player.feature

Exemple de context : PlayerContext.php

• Séparation des scénarios (features) et du code (context)

• Configurable : behat.yml

• Multitude d’options : suites, tags, hooks, extensions, plugins, air conditionné, autoradio, bluetooth, WiFi… ;-)

• Pas dangereux pour les enfants !

• Souvent mal utilisé :-(

Exemple de configuration : behat.yml

Étendre

Extensions & plugins

Étendre

Symfony2 Extension

Installation de Behat et extensions : composer.json

Injection des services Symfony dans les Contexts

Étendre

Installation de l’extension Behatch : composer.json

Behatch Extension

Propose des méthodes pour vos Contexts

Étendre

Installation de l’extension ScenarioStateBehat : composer.json

ScenarioStateBehat Extension

Ajout du paramètre authenticatedUser

Injection du paramètre authenticatedUser

Utiliser

*comme Bruce Springsteen

Like a boss*

Utiliser

• Restez positifs (comme les protons)

like a boss

I should not be authorized => I should be unauthorized

• Scénarios non techniques => Behat c’est plus que ça (Samuel ROZE)

• Pas de dépendances entre scénarios

• BDD is love, BDD is life ! (Behavior Driven Development)

Utiliser

Gestion des données

like a boss

• Fixtures : Doctrine, Alice…=> On ne crée que ce dont on a besoin !

• Utilisez l’ORMPurger de Doctrine lors d’un hook Behat @BeforeScenario

« PHPUnit is a programmer-oriented

testing framework for PHP. »

Sebastian Bergmann

github.com/sebastianbergmann

@s_bergmann

https://phpunit.de/

• Prévu initialement pour les tests unitaires Test unitaire : « (…) procédure permettant de vérifier le bon fonctionnement d'une partie précise d'un logiciel ou d'une portion d'un programme »

• Configurable : phpunit.xml

• Multitude d’options : dataProvider, mocks, bridges, events…

• Mets en évidence la qualité du code

• Programmer-oriented

Exemple de test unitaire

Mocks : « objets simulés qui reproduisent le comportement d'objets réels de manière

contrôlée »

• Mockery

• Mock builder

• Prophecy

Pourquoi utiliser des mocks ?

• Simplifie l’écriture des tests : injection des dépendances

• Maîtrise du code : pas d’appel inattendu, optimisation du code

• Mise en évidence de la qualité du code : Loi de Déméter

Loi de Déméter

« Ne parlez qu'à vos amis immédiats »

• On n’injecte que les dépendances directes

• Mise en exergue grâce aux tests unitaires : trop de mocks imbriqués = non respect de cette loi

• Améliore la qualité du code : un code simple, minimaliste, optimisé :-)

Bonnes pratiques :

• shouldBeCalledTimes : maîtrisez vos appels

• TDD : Test Driven Development

• Respectez la Loi de Déméter

• Objectif évolutif : 60% de couverture de code, en augmentation au fil du projet

Merci !

#SuperApéroPHP

@coopTilleuls

https://github.com/gorghoa/ScenarioStateBehatExtension

https://github.com/Behatch/contexts

https://github.com/Behat/Symfony2Extension

https://fr.slideshare.net/samuelroze/behat-cest-plus-que-a-behat-is-more-than-that

slideshare.net/VincentCHALAMON/testing-things