DEPLOYER AVEC LES TESTS      Christophe Villeneuve        30 Janvier 2013
Les Tests     Citations ✔     « Des fois cela plante » ✔     « On a testé, …     il y a 3 mois lors de la dernière livrais...
Limportance des Tests     Pourquoi cest utile ?        Et Lintérêt... ✔     Le code peut casser           ✔               ...
Les différents types de tests ✔     Tests Unitaires         ✔             Module / classe / méthode ✔     Tests fonctionne...
nAcademy – 30 Janvier 2013
Tests unitaires     Déroulement                       Quoi tester ? ✔     Ecrire un test qui échoue     ✔                 ...
Tests unitaires : utilisation     Outils ✔     jUnit ✔     SimpleTest ✔     Zend_test ✔     PHPUnit ✔     Atoum ✔     ... ...
Tests unitaires : cas pratique PHPUnit    nAcademy – 30 Janvier 2013
Installation En ligne de commandes # sudo apt-get install phpunit # pear channel-discover pear.phpunit.de # pear channel-d...
Tests Unitaires : 1   Du code...                                   +ieurs commentaires                                    ...
Tests Unitaires : 1   1 commentaire                             Passer au test   <?php                               <?php...
Tests Unitaires : 2 <?php                                       function test_insert_user() { session_start();            ...
nAcademy – 30 Janvier 2013
Tests fonctionnels     Déroulement                       Quoi tester ? ✔     Prépare outil & API           ✔              ...
Tests fonctionnels : utilisation     Outils ✔     Sélénium ✔     Behat ✔     Fitness ✔     Cucumber ✔     GreenPepper     ...
Test fonctionnels : cas pratique avecGreenPepper    nAcademy – 30 Janvier 2013
Installation Logiciel (*.jar) Avec IDE : Eclipse PDT / Netbeans     nAcademy – 30 Janvier 2013
Tests fonctionnels : cas pratique avec    GreenPepper123        nAcademy – 30 Janvier 2013
nAcademy – 30 Janvier 2013
Tests dintégrations     Déroulement                       Pourquoi ? ✔     1 Navigation de la prod.      ✔                ...
Tests dintégrations : utilisation     Outils ✔     Sélénium ✔     Sikuli ✔     Hudson ✔     Jenkins ✔     PhpUnderControl ...
Tests dintégrations : cas pratique avecSelenium    nAcademy – 30 Janvier 2013
Utilisation Selenium A partir dun *.jar     nAcademy – 30 Janvier 2013
Utilisation PHP Unit & Selenium # sudo apt-get install phpunit # sudo apt-get install php5-curl # sudo apt-get install php...
Utilisation PHP Unit & Selenium                          <?php                          class TestLogin extends PHPUnit_Ex...
Utilisation PHP Unit & Selenium<?phppublic function testSubmitButtonIsDisabledUntilFieldsAreFilled(){$this->url(index.php)...
nAcademy – 30 Janvier 2013
Tests de charge     Déroulement                       Pourquoi ? ✔     Préparer un scénario          ✔                    ...
Tests de charge : utilisation     Outils ✔     Java EE ✔     Tsung ✔     jMeter      nAcademy – 30 Janvier 2013
Tests de charge : cas pratique avec jMeter    nAcademy – 30 Janvier 2013
Installation Logiciel (*.jar) Avec IDE : Eclipse PDT / Netbeans     nAcademy – 30 Janvier 2013
Préparer un scénario fonctionnel    nAcademy – 30 Janvier 2013
Préparer un scénario fonctionnel    nAcademy – 30 Janvier 2013
Afficher le scénario    nAcademy – 30 Janvier 2013
Déployer avec les tests    nAcademy – 30 Janvier 2013
Le début du commencement ✔     Suivre une procédure claire ✔     Faire un essai sur un serveur de tests/preprods          ...
Automatiser les tâches : Déroulement  Développements  Serveur Intégration  Tests & validation                             ...
Automatiser les tâches     Outils ✔     Shell-scripts ✔     Pear ✔     Ant ✔     Phing ✔     Weploy      nAcademy – 30 Jan...
Automatiser les tâches : cas pratique avecPhing    nAcademy – 30 Janvier 2013
Principe de fonctionnement✔    Checkout du projet✔    Lancement des tests (ex : tests unitaires)✔    Création dune archive...
Au niveau du code      # pear channel-discover pear.phing.info      # pear install phing/phingdocs    <?xml version="1.0" ...
Presque intégration continue    nAcademy – 30 Janvier 2013
Questions ?    NAcademy – 30 Janvier 2013
Prochain SlideShare
Chargement dans…5
×

Déployer avec les tests

3 053 vues

Publié le

Présentation à la nAcademy (Janvier 2013) : Déployer avec les tests par Christophe Villeneuve

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
3 053
Sur SlideShare
0
Issues des intégrations
0
Intégrations
463
Actions
Partages
0
Téléchargements
30
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Déployer avec les tests

  1. 1. DEPLOYER AVEC LES TESTS Christophe Villeneuve 30 Janvier 2013
  2. 2. Les Tests Citations ✔ « Des fois cela plante » ✔ « On a testé, … il y a 3 mois lors de la dernière livraison...  Pas eu le temps... » nAcademy – 30 Janvier 2013
  3. 3. Limportance des Tests Pourquoi cest utile ? Et Lintérêt... ✔ Le code peut casser ✔ Coûte du temps au début ✔ Changer le nom dun fichier ✔ En fait gagner ensuite ✔ Nécessite de la rigueur et ✔ Pas le temps den de la constante faire ✔ Cest long manuellement nAcademy – 30 Janvier 2013
  4. 4. Les différents types de tests ✔ Tests Unitaires ✔ Module / classe / méthode ✔ Tests fonctionnels ✔ linterface utilisateur testée par le client ✔ Tests intégrations ✔ Tester la navigation, et linterface utilisateur ✔ Tests Automatisés ✔ Détecter les régressions, cest rapide ✔ Le faire à chaque livraison de lots ✔ Tests de charges ✔ Tests dergonomie ✔ Tests de sécurité nAcademy – 30 Janvier 2013
  5. 5. nAcademy – 30 Janvier 2013
  6. 6. Tests unitaires Déroulement Quoi tester ? ✔ Ecrire un test qui échoue ✔ Un module ✔ Ecrire un test qui est bon ✔ Une classe ✔ Un test de sécurité ✔ Une méthode ✔ Un test de contrôle ✔ Tester ✔ Ce qui est important ✔ Le risque de casser ✔ Les parties que vous touchez souvent nAcademy – 30 Janvier 2013
  7. 7. Tests unitaires : utilisation Outils ✔ jUnit ✔ SimpleTest ✔ Zend_test ✔ PHPUnit ✔ Atoum ✔ ... nAcademy – 30 Janvier 2013
  8. 8. Tests unitaires : cas pratique PHPUnit nAcademy – 30 Janvier 2013
  9. 9. Installation En ligne de commandes # sudo apt-get install phpunit # pear channel-discover pear.phpunit.de # pear channel-discover components.ez.no # pear channel-discover pear.symfony-project.com En mode assistée Avec IDE - Windows - Eclipse PDT - Linux - Netbeans - Mac nAcademy – 30 Janvier 2013
  10. 10. Tests Unitaires : 1 Du code... +ieurs commentaires <?php <?php class calculs class calculs { /** { * @assert (0, 0) == 0 public function add($a, $b) * @assert (0, 1) == 1 * @assert (1, 0) == 1 { * @assert (1, 1) == 2 return $a + $b; * @assert (1, 2) == 4 */ } public function add($a, $b) } { return $a + $b; ?> } } ?> nAcademy – 30 Janvier 2013
  11. 11. Tests Unitaires : 1 1 commentaire Passer au test <?php <?php class calculs /** { * Generated from @assert (1, 1) == 2 /** */ * @assert (0, 0) == 0 public function testAdd4() */ { public function add($a, $b) $this->assertEquals( { 2, return $a + $b; $this->object->add(1, 1) } ); } } ?> ?> nAcademy – 30 Janvier 2013
  12. 12. Tests Unitaires : 2 <?php function test_insert_user() { session_start(); $html = new html() ; require_once /config.php; $formulaire = new Form(data); $data= array ( class tests_user extends user => array ( PHPUnit_Framework_TestCase { login => admin, function __construct() { nom => nom, $this->bdd = new BDD(); prenom => prenom, $this->bdd->connect(); email => email@xxx.com, $this->bdd->requete("DROP TABLE id_profil => 115, IF EXISTS `user`"); ) $this->bdd->requete("CREATE ); TABLE `user`..."); } add($this->bdd,$formulaire,$html,$data); } ?> nAcademy – 30 Janvier 2013
  13. 13. nAcademy – 30 Janvier 2013
  14. 14. Tests fonctionnels Déroulement Quoi tester ? ✔ Prépare outil & API ✔ Nous... Rien ✔ On le partage ✔ Cest le client ✔ On récupère le résultat nAcademy – 30 Janvier 2013
  15. 15. Tests fonctionnels : utilisation Outils ✔ Sélénium ✔ Behat ✔ Fitness ✔ Cucumber ✔ GreenPepper nAcademy – 30 Janvier 2013
  16. 16. Test fonctionnels : cas pratique avecGreenPepper nAcademy – 30 Janvier 2013
  17. 17. Installation Logiciel (*.jar) Avec IDE : Eclipse PDT / Netbeans nAcademy – 30 Janvier 2013
  18. 18. Tests fonctionnels : cas pratique avec GreenPepper123 nAcademy – 30 Janvier 2013
  19. 19. nAcademy – 30 Janvier 2013
  20. 20. Tests dintégrations Déroulement Pourquoi ? ✔ 1 Navigation de la prod. ✔ Simulation dun être humain ✔ Générer le script pour repérer les modifications ✔ Détection des problèmes de comportement éventuels ✔ 1 exécution sur le nouveau serveur nAcademy – 30 Janvier 2013
  21. 21. Tests dintégrations : utilisation Outils ✔ Sélénium ✔ Sikuli ✔ Hudson ✔ Jenkins ✔ PhpUnderControl nAcademy – 30 Janvier 2013
  22. 22. Tests dintégrations : cas pratique avecSelenium nAcademy – 30 Janvier 2013
  23. 23. Utilisation Selenium A partir dun *.jar nAcademy – 30 Janvier 2013
  24. 24. Utilisation PHP Unit & Selenium # sudo apt-get install phpunit # sudo apt-get install php5-curl # sudo apt-get install php-selenium En mode assistée Avec IDE - Windows - Eclipse PDT - Linux - Netbeans - Mac nAcademy – 30 Janvier 2013
  25. 25. Utilisation PHP Unit & Selenium <?php class TestLogin extends PHPUnit_Extensions_Selenium2TestCase { public function setUp() { $this->setHost(localhost); $this->setPort(4444); $this->setBrowser(firefox); $this->setBrowserUrl(http://localhost/seleniumTut); } public function testHasLoginForm() { $this->url(index.php); $username = $this->byName(username); $password = $this->byName(password); $this->assertEquals(, $username->value()); $this->assertEquals(, $password->value()); } nAcademy – 30 Janvier 2013
  26. 26. Utilisation PHP Unit & Selenium<?phppublic function testSubmitButtonIsDisabledUntilFieldsAreFilled(){$this->url(index.php);$username = $this->byName(username);$password = $this->byName(password);$submit = $this->byId(submit);$this->assertFalse($submit->enabled());$username->value(jeff_way);$password->value(1234);$this->assertTrue($submit->enabled());$username->clear();$password->clear();$username->value( );$this->assertFalse($submit->enabled());}?> nAcademy – 30 Janvier 2013
  27. 27. nAcademy – 30 Janvier 2013
  28. 28. Tests de charge Déroulement Pourquoi ? ✔ Préparer un scénario ✔ Générer une charge réaliste avec 1 scénario ✔ Saisir le nombre de connexion simultané ✔ Superviser un test de charge ✔ Voir le résultat ✔ Analyser les résultats nAcademy – 30 Janvier 2013
  29. 29. Tests de charge : utilisation Outils ✔ Java EE ✔ Tsung ✔ jMeter nAcademy – 30 Janvier 2013
  30. 30. Tests de charge : cas pratique avec jMeter nAcademy – 30 Janvier 2013
  31. 31. Installation Logiciel (*.jar) Avec IDE : Eclipse PDT / Netbeans nAcademy – 30 Janvier 2013
  32. 32. Préparer un scénario fonctionnel nAcademy – 30 Janvier 2013
  33. 33. Préparer un scénario fonctionnel nAcademy – 30 Janvier 2013
  34. 34. Afficher le scénario nAcademy – 30 Janvier 2013
  35. 35. Déployer avec les tests nAcademy – 30 Janvier 2013
  36. 36. Le début du commencement ✔ Suivre une procédure claire ✔ Faire un essai sur un serveur de tests/preprods ✔ Pas de production du 1er coup ✔ Prévoir des versions identiques ✔ OS / Serveur / Logiciels... ✔ Contrôler la validation des sources ✔ tar.gz + clef nAcademy – 30 Janvier 2013
  37. 37. Automatiser les tâches : Déroulement Développements Serveur Intégration Tests & validation Serveur Serveur Production + tag Préprod Préprod Déploiement Serveur Serveur Test client Test client Déploiement Tests serveur prod. Les noeuds nAcademy – 30 Janvier 2013
  38. 38. Automatiser les tâches Outils ✔ Shell-scripts ✔ Pear ✔ Ant ✔ Phing ✔ Weploy nAcademy – 30 Janvier 2013
  39. 39. Automatiser les tâches : cas pratique avecPhing nAcademy – 30 Janvier 2013
  40. 40. Principe de fonctionnement✔ Checkout du projet✔ Lancement des tests (ex : tests unitaires)✔ Création dune archive✔ Transfert et déploiement en ssh / ftp✔ Possible Rollback Valider létape nAcademy – 30 Janvier 2013
  41. 41. Au niveau du code # pear channel-discover pear.phing.info # pear install phing/phingdocs <?xml version="1.0" ?> <project name="demo" basedir="." default="example"> <target name="example"> <echo message="yep, I will create a directory" /> <mkdir dir="/mon/chemin/" /> </target> </project> Exécution : # phing✔ Si cest nécessaire → création du dossier nAcademy – 30 Janvier 2013
  42. 42. Presque intégration continue nAcademy – 30 Janvier 2013
  43. 43. Questions ? NAcademy – 30 Janvier 2013

×