Testing things

562 vues

Publié le

Stratégie de test, bonnes pratiques et optimisation avec Behat & PHPUnit

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Testing things

  1. 1. A LES-TILLEULS.COOP ORIGINAL TALK
  2. 2. @vincentchalamon Vincent CHALAMON Lead developer chez Les-Tilleuls.coop github.com/vincentchalamon
  3. 3. Konstantin Kudryashov
 
 github.com/everzet @everzet http://behat.org/ « A php framework for attesting your business expectations. »
  4. 4. Exemple de scénario : player.feature
  5. 5. Exemple de context : PlayerContext.php
  6. 6. • 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é :-(
  7. 7. Exemple de configuration : behat.yml
  8. 8. Étendre Extensions & plugins
  9. 9. Étendre Symfony2 Extension Installation de Behat et extensions : composer.json Injection des services Symfony dans les Contexts
  10. 10. Étendre Installation de l’extension Behatch : composer.json Behatch Extension Propose des méthodes pour vos Contexts
  11. 11. Étendre Installation de l’extension ScenarioStateBehat : composer.json ScenarioStateBehat Extension Ajout du paramètre authenticatedUser Injection du paramètre authenticatedUser
  12. 12. Utiliser *comme Bruce Springsteen Like a boss*
  13. 13. 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)
  14. 14. 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
  15. 15. « PHPUnit is a programmer-oriented testing framework for PHP. » Sebastian Bergmann
 
 github.com/sebastianbergmann @s_bergmann https://phpunit.de/
  16. 16. • 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
  17. 17. Exemple de test unitaire
  18. 18. Mocks : « objets simulés qui reproduisent le comportement d'objets réels de manière contrôlée » • Mockery • Mock builder • Prophecy
  19. 19. 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
  20. 20. 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é :-)
  21. 21. 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
  22. 22. 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

×