Behat - retour d'expérience

908a0c79fc96a06684fa7e2a523bde1b?s=47 Marek Kalnik
November 22, 2013

Behat - retour d'expérience

Le talk sur Behat sur un projet de 15 devs, que j'ai donnée au ForumPHP 2013.

908a0c79fc96a06684fa7e2a523bde1b?s=128

Marek Kalnik

November 22, 2013
Tweet

Transcript

  1. Forum PHP Paris 2013, 22 Nov. 2013 retour d'expérience Behat

  2. Hello !

  3. Je m’appelle Marek

  4. Viser le déploiement continu Behat : écrire les tests en

    «humain» Réussir la mise en place de Behat Je vais vous parler de...
  5. Dans l'économie d'aujourd'hui les rapides mangent les lents

  6. le Time To Market est souvent ralenti par la phase

    de tests
  7. Comment font les grands ?

  8. 30 déploiements par jour

  9. 7.000 tests

  10. 2 déploiements par jour

  11. une suite de tests fonctionnels lancée à chaque fois

  12. We need to release new features faster and with good

    quality Alan Faulkner, Test Engineer
  13. « Right now, with the role I am in, I

    spend less than 5% of my time doing manual testing » Alan Faulkner, Test Engineer
  14. None
  15. Un processus d'intégration continue permet de limiter les risques

  16. être comme Google, Facebook, Etsy coder vite déployer vite déployer

    sans risque
  17. Viser le déploiement continu Behat : écrire les tests en

    «humain» Réussir la mise en place de Behat
  18. pourquoi Behat

  19. parce que c'est cool !

  20. comment maintenir 7000 tests ? comment impliquer le métier dans

    les tests ? comment relier le business et les tests ?
  21. Feature: Services Scenario: #10322 : an anonymous user can't see

    the author's last name Given I am an anonymous user with my city registered When I go to the "service list" page Then I don't see the author's last name framework de tests en « langage naturel »
  22. website feature framework de tests multi-niveaux context

  23. framework de tests de grande taille PHPUnit Test d'intégration PHPUnit

    Behat PHPSpec taille expressivité
  24. Under the hood Given I am an anonymous user with

    my city registered regexp match une fonction contexte driver navigateur web
  25. Viser le déploiement continu Behat : écrire les tests en

    «humain» Réussir la mise en place de Behat
  26. Paralléliser dès le début 9 minutes 15 juil. 15 nov.

    23 minutes 6 minutes 8 minutes seuil d'acceptabilité :-) :-( Règle 1 refactoring
  27. factorisation de tests pour accélérer le build n'est pas efficace

    il faut paralléliser pour obtenir des meilleurs résultats Paralléliser dès le début Règle 1
  28. Environnement #serveurs web #workers #machines #cpu Penser infrastructure 2 Règle

  29. Selenium flexible lourd Driver PhantomJS léger rapide cookies Goutte Penser

    infrastructure 2 Règle
  30. $ bin/behat -p prod # behat.yml prod: filters: tags: "@prod"

    extensions: Behat\MinkExtension\Extension: base_url: http://www.example.org/ Faire une suite de tests dédie à la production 3 Règle
  31. .advert-result .item-advert .body-article h2 a !? Stabiliser les sélecteurs CSS

    4 Règle
  32. l'équipe de tests doit se mettre d'accord avec l'équipe intégration

    utiliser les ids pour Behat et les classes pour le CSS Stabiliser les sélecteurs CSS 4 Règle
  33. Intégrer un chat dans l'équipe 0 Règle

  34. Spinner... 5 Règle $this->getMainContext()->spin( function ($context) use ($listId) { $context->getMainContext()

    ->assertSession() ->elementExists('css', '#'.$listId); return true; } );
  35. public function spin($closure, $tries = 15) { for ($i =

    0; $i < $tries; $i++) { try { if ($result = $closure($this)) { return true; } } catch (\Exception $e) { // do nothing to continue the loop } usleep(300000); } throw new \Exception( $this->formatBacktrace(debug_backtrace()) ); } Spinner... 5 Règle
  36. Respecter la pyramide de tests 6 Règle big medium small

  37. pas celle-ci Respecter la pyramide de tests 6 Règle big

    medium small
  38. 5 10 15 20 25 4 8 12 16 20

    3 6 9 12 15 2 4 5 8 10 1 2 3 4 6 Impact business Probabilité de régression medium small big Ne pas tout tester 6 Règle ,5
  39. Merci !

  40. et on recrute ;-) joinus@theodo.fr @marekkalnik @theodo