Valider par des tests 
Christophe Villeneuve 
@hellosct1
Qui... est Christophe Villeneuve ? 
<< 
afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – demoinparis – ici et maintenant – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – neuros - elephpant
Les points abordés aujourd'hui : 
● Le Pourquoi du comment... 
● Les TODO (tests) à connaître 
● Les Tests en mode continu
Expérience sur... 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... »
L'importance des tests VS les préjugés 
Pourquoi c'est utile ? Et L'intérêt... 
✔ Le code peut casser 
✔ Changer le nom d'un fichier 
✔ Pas le temps d'en faire 
✔ C'est long manuellement 
✔ Coûte du temps au début 
✔ En fait gain après 
✔ Nécessite de la rigueur et 
de la constante
Les différents types de tests 
Tests Unitaires 
● Module / classe / méthode 
Tests fonctionnels 
● l'interface utilisateur testée par le client 
Tests intégrations 
● Tester la navigation, et l'interface utilisateur 
Tests Automatisés 
Tests de charge / Performance 
Tests d'ergonomie 
Tests de sécurité 
UUnnee iiddééee ??
Tests : approche 'classique' 
Tests IHM 
Tests Acceptation 
Tests d'intégration 
Tests unitaires 
ON OUBLIE 
le slide 
ON OUBLIE 
le slide
Tests de Mike Cohn : approche 'agile' 
Tests 
Manuels 
Tests automatisés 
Tests GUI 
Tests API 
Tests d'intégration 
Tests des composants 
Tests unitaires 
IIMMPPOORRTTAANNTT 
Orientations 
Business 
Développons nous le bon 
système ? 
Technique 
Développons nous le 
système correctement ?
Les tests à connaître
Tests unitaires... 
En pratique
Tests unitaires 
Déroulement Quoi tester ? 
✔ Ecrire le code comme 
des spécifications 
✔ Ecrire un test qui échoue 
✔ Ecrire un test qui est bon 
✔ Un test doit tester la plus 
petite portion possible du 
code 
✔ Eviter les redondance 
✔ Un module 
✔ Une classe 
✔ Une méthode 
✔ Tester 
✔ Ce qui est important 
✔ Le risque de casser 
✔ Les parties que vous 
touchez souvent
Tests unitaires : quelques Frameworks 
✔ jUnit 
✔ SimpleTest / PHPUnit / 
Atoum 
✔ PyUnit 
✔ More 
✔ ...
Tests fonctionnels... 
En pratique
Tests Fonctionnels 
Déroulement Quoi tester ? 
✔ Prépare outil & API 
✔ On le partage 
✔ On récupère le résultat 
✔ Nous... Rien 
✔ C'est le client 
✔ Tester 
✔ Si les fonctionnalités 
demandées sont bien 
supportées 
(ex : port)
Tests Fonctionnels : utilisation 
Outils 
✔ Selenium 
✔ Behat 
✔ Fitness 
✔ Cucumber 
✔ GreenPepper
Tests Intégrations... 
En pratique
Tests Intégrations 
Déroulement Pourquoi ? 
✔ 1 Navigation de la prod. 
✔ Générer le script pour 
repérer les modifications 
de comportement 
✔ 1 exécution sur le 
nouveau serveur 
✔ Simulation d'un être 
humain 
✔ Détection des problèmes 
éventuels 
✔ Tester 
✔ Le comportement de 
navigation
Tests Intégrations : utilisation 
Outils 
✔ Selenium 
✔ Sikuli 
✔ Hudson 
✔ Jenkins 
✔ PhpUnderControl 
✔ ...
Tests Automatisés... 
En pratique
Tests Automatisés 
Déroulement Pourquoi ? 
✔ C'est systématique 
✔ C'est répétitif 
✔ Automatisable 
Jouer par automate 
✔ Association des tests 
✔ Tester 
✔ Tests unitaires 
✔ Tests fonctionnels 
✔ Tests intégrations
Tests Automatisés : utilisation 
Outils 
✔ Selenium 
✔ Behat 
✔ ...
Tests de charge... 
En pratique
Tests de charge 
Déroulement Pourquoi ? 
✔ Préparer un scénario 
✔ Saisir le nombre de 
connexion simultané 
✔ Voir le résultat 
✔ Générer une charge 
réaliste avec 1 scénario 
✔ Superviser un test de 
charge 
✔ Analyser les résultats 
✔ Tester 
✔ Pages à 'risques'
Tests de charge : utilisation 
Outils 
✔ Java EE 
✔ Tsung 
✔ jMeter
Tests d'ergonomie... 
En pratique
Tests d'ergonomie 
Déroulement Pourquoi ? 
✔ 1 lieu neutre 
✔ Trouver des personnes 
tiers (béta testeurs) 
✔ Un observateur 
✔ Noté 
✔ Résultat 
✔ Interaction 
Homme/Machine 
✔ Critères d'utilité, 
d'utilisabilité, de 
satisfaction 
✔ Tester 
✔ La navigation 
✔ La conception 
✔ Le visuel
Tests d'ergonomie : utilisation 
Outils 
✔ Aucun... !!!! ???? !!!!
Tests de sécurité... 
En pratique
Tests de sécurité 
Déroulement Pourquoi ? 
✔ Configuration API 
✔ Exécution 
✔ Voir le résultat 
✔ Un rapport TOP 10 de 
Owasp 
✔ Tester 
✔ La totalité du projet
Tests de sécurité : utilisation 
Outils 
✔ ...
Les tests en continu
Le début du commencement 
● Suivre une procédure claire 
Quelques 
règles 
● 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 
Quelques 
règles
Automatiser les taches : déroulement 
Développements 
Serveur Intégration 
Tests & validation 
Production + tag 
Déploiement 
Déploiement 
Tests serveur prod. 
Serveur 
Préprod 
Serveur 
Préprod 
Serveur 
Test client 
Serveur 
Test client 
On teste
Automatiser les tâches 
Outils 
● Shell-scripts 
● Pear 
● Ant 
● Phing 
● Weploy 
● Behat
Principe de fonctionnement 
✔ Checkout du projet 
✔ Lancement des tests (ex : tests unitaires) 
✔ Création d'une archive 
✔ Transfert et déploiement en ssh / ftp 
✔ Possible Rollback 
Valider l'étape
En résumé... Les tests c'est 
● Proche de l'intégration continue 
● DevOps 
● Qualité 
● et... 
Les tests passent (après) par la fête
Merci 
@hellosct1 
http://blog.hello-design.fr 
http://www.hello-design.fr

Valider par des tests - Blend

  • 1.
    Valider par destests Christophe Villeneuve @hellosct1
  • 2.
    Qui... est ChristopheVilleneuve ? << afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – demoinparis – ici et maintenant – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – neuros - elephpant
  • 3.
    Les points abordésaujourd'hui : ● Le Pourquoi du comment... ● Les TODO (tests) à connaître ● Les Tests en mode continu
  • 4.
    Expérience sur... Lestests Citations ✔ « Des fois cela plante » ✔ « On a testé, … il y a 3 mois lors de la dernière livraison... Pas eu le temps... »
  • 5.
    L'importance des testsVS les préjugés Pourquoi c'est utile ? Et L'intérêt... ✔ Le code peut casser ✔ Changer le nom d'un fichier ✔ Pas le temps d'en faire ✔ C'est long manuellement ✔ Coûte du temps au début ✔ En fait gain après ✔ Nécessite de la rigueur et de la constante
  • 6.
    Les différents typesde tests Tests Unitaires ● Module / classe / méthode Tests fonctionnels ● l'interface utilisateur testée par le client Tests intégrations ● Tester la navigation, et l'interface utilisateur Tests Automatisés Tests de charge / Performance Tests d'ergonomie Tests de sécurité UUnnee iiddééee ??
  • 7.
    Tests : approche'classique' Tests IHM Tests Acceptation Tests d'intégration Tests unitaires ON OUBLIE le slide ON OUBLIE le slide
  • 8.
    Tests de MikeCohn : approche 'agile' Tests Manuels Tests automatisés Tests GUI Tests API Tests d'intégration Tests des composants Tests unitaires IIMMPPOORRTTAANNTT Orientations Business Développons nous le bon système ? Technique Développons nous le système correctement ?
  • 9.
    Les tests àconnaître
  • 10.
  • 11.
    Tests unitaires DéroulementQuoi tester ? ✔ Ecrire le code comme des spécifications ✔ Ecrire un test qui échoue ✔ Ecrire un test qui est bon ✔ Un test doit tester la plus petite portion possible du code ✔ Eviter les redondance ✔ Un module ✔ Une classe ✔ Une méthode ✔ Tester ✔ Ce qui est important ✔ Le risque de casser ✔ Les parties que vous touchez souvent
  • 12.
    Tests unitaires :quelques Frameworks ✔ jUnit ✔ SimpleTest / PHPUnit / Atoum ✔ PyUnit ✔ More ✔ ...
  • 13.
  • 14.
    Tests Fonctionnels DéroulementQuoi tester ? ✔ Prépare outil & API ✔ On le partage ✔ On récupère le résultat ✔ Nous... Rien ✔ C'est le client ✔ Tester ✔ Si les fonctionnalités demandées sont bien supportées (ex : port)
  • 15.
    Tests Fonctionnels :utilisation Outils ✔ Selenium ✔ Behat ✔ Fitness ✔ Cucumber ✔ GreenPepper
  • 16.
  • 17.
    Tests Intégrations DéroulementPourquoi ? ✔ 1 Navigation de la prod. ✔ Générer le script pour repérer les modifications de comportement ✔ 1 exécution sur le nouveau serveur ✔ Simulation d'un être humain ✔ Détection des problèmes éventuels ✔ Tester ✔ Le comportement de navigation
  • 18.
    Tests Intégrations :utilisation Outils ✔ Selenium ✔ Sikuli ✔ Hudson ✔ Jenkins ✔ PhpUnderControl ✔ ...
  • 19.
  • 20.
    Tests Automatisés DéroulementPourquoi ? ✔ C'est systématique ✔ C'est répétitif ✔ Automatisable Jouer par automate ✔ Association des tests ✔ Tester ✔ Tests unitaires ✔ Tests fonctionnels ✔ Tests intégrations
  • 21.
    Tests Automatisés :utilisation Outils ✔ Selenium ✔ Behat ✔ ...
  • 22.
    Tests de charge... En pratique
  • 23.
    Tests de charge Déroulement Pourquoi ? ✔ Préparer un scénario ✔ Saisir le nombre de connexion simultané ✔ Voir le résultat ✔ Générer une charge réaliste avec 1 scénario ✔ Superviser un test de charge ✔ Analyser les résultats ✔ Tester ✔ Pages à 'risques'
  • 24.
    Tests de charge: utilisation Outils ✔ Java EE ✔ Tsung ✔ jMeter
  • 25.
  • 26.
    Tests d'ergonomie DéroulementPourquoi ? ✔ 1 lieu neutre ✔ Trouver des personnes tiers (béta testeurs) ✔ Un observateur ✔ Noté ✔ Résultat ✔ Interaction Homme/Machine ✔ Critères d'utilité, d'utilisabilité, de satisfaction ✔ Tester ✔ La navigation ✔ La conception ✔ Le visuel
  • 27.
    Tests d'ergonomie :utilisation Outils ✔ Aucun... !!!! ???? !!!!
  • 28.
  • 29.
    Tests de sécurité Déroulement Pourquoi ? ✔ Configuration API ✔ Exécution ✔ Voir le résultat ✔ Un rapport TOP 10 de Owasp ✔ Tester ✔ La totalité du projet
  • 30.
    Tests de sécurité: utilisation Outils ✔ ...
  • 31.
    Les tests encontinu
  • 32.
    Le début ducommencement ● Suivre une procédure claire Quelques règles ● 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 Quelques règles
  • 33.
    Automatiser les taches: déroulement Développements Serveur Intégration Tests & validation Production + tag Déploiement Déploiement Tests serveur prod. Serveur Préprod Serveur Préprod Serveur Test client Serveur Test client On teste
  • 34.
    Automatiser les tâches Outils ● Shell-scripts ● Pear ● Ant ● Phing ● Weploy ● Behat
  • 35.
    Principe de fonctionnement ✔ Checkout du projet ✔ Lancement des tests (ex : tests unitaires) ✔ Création d'une archive ✔ Transfert et déploiement en ssh / ftp ✔ Possible Rollback Valider l'étape
  • 36.
    En résumé... Lestests c'est ● Proche de l'intégration continue ● DevOps ● Qualité ● et... Les tests passent (après) par la fête
  • 37.