Déployer avec les tests

3,195 views

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,195
On SlideShare
0
From Embeds
0
Number of Embeds
463
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×