Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Behat - retour d'expérience

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.

Marek Kalnik

November 22, 2013
Tweet

More Decks by Marek Kalnik

Other Decks in Programming

Transcript

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

    «humain» Réussir la mise en place de Behat Je vais vous parler de...
  2. We need to release new features faster and with good

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

    spend less than 5% of my time doing manual testing » Alan Faulkner, Test Engineer
  4. Viser le déploiement continu Behat : écrire les tests en

    «humain» Réussir la mise en place de Behat
  5. comment maintenir 7000 tests ? comment impliquer le métier dans

    les tests ? comment relier le business et les tests ?
  6. 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 »
  7. Under the hood Given I am an anonymous user with

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

    «humain» Réussir la mise en place de Behat
  9. 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
  10. 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
  11. $ 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
  12. 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
  13. 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
  14. 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