Outils et pratiques : tester une application web moderne

Outils et pratiques : tester une application web moderne

Introduction aux pratiques de testabilité logicielle : types de tests, outils. Présentation aux Rencontres Mondiales du Logiciel Libre 2014.

Vidéo : http://video.rmll.info/videos/tester-une-application-web-quels-outils-et-quelles-pratiques/

Cad0f293595fc534e4ebd1eb7e3f1a1a?s=128

Jean-François Lépine

July 08, 2014
Tweet

Transcript

  1. 1 / 33 Outils et Pratiques : Tester une application

    web moderne par Jean-François LÉPINE
  2. En face de vous • Jean-François LÉPINE • Consultant technique

    chez Alter Way • @Halleck45 • http://blog.lepine.pro
  3. 3 / 33 Rappel : Qu'est-ce qu'un test ?

  4. En quête de Satisfaction • Tester est une recherche de

    Satisfaction • Du client • Des équipes • La Qualité est un gage de réussite Wayan Vota (www.flickr.com)
  5. Éliminer les Défauts • On cherche à éliminer les états

    indésirables (defects) • Les bugs ne sont qu'un type d'états indésirables parmi d'autre
  6. Éliminer les Défauts • On cherche à éliminer le plus

    tôt possible les états indésirables (defects) Analyse Conception Développement Recette Maintenance 0 20 40 60 80 100 120 1 € 2 € 7 € 15 € 100 € Coût relatif des défauts source : Gartner / IBM Systems Sciences Institute, 2003 Phase du projet durant laquelle le défaut est détecté Coût
  7. 8 / 33 Testabilité & Qualité

  8. Niveaux de qualité Utilité Pertinence Exactitude Interopérabilité Sécurité Conformité Fiabilité

    Tolérance aux pannes Facilité de récupération Facilité d'utilisation Facilité de compréhension Facilité d'apprentissage Facilité d'exploitation Pouvoir d'attraction Rendement Utilisation des ressources Performance Maintenabilité Facilité d'analyse Facilité de modification Stabilité Testabilité Portabilité Facilité d'adaptation Facilité d'installation Coexistence Interchangeabilité
  9. Comment régler le curseur ? Vies humaines en jeu Fiabilité

    Exactitude Testabilité Longue durée de vie Maintenabilité Évolutivité Portabilité Temps réel Efficacité Exactitude Fiabilité Informations sensibles Intégrité Fiabilité ... ... ... ...
  10. Tests fonctionnels • Tests unitaires / composants • le composant

    a t-il des défaillances ? • Tests unitaires
  11. Tests fonctionnels • Tests unitaires / composants • le composant

    a t-il des défaillances ? • Tests unitaires • Tests d'intégration : • les échanges entre composants ont-ils des défaillances ? • Interfaçage des composants
  12. Tests fonctionnels • Tests unitaires / composants • le composant

    a t-il des défaillances ? • Tests unitaires • Tests d'intégration : • les échanges entre composants ont-ils des défaillances ? • Interfaçage des composants • Tests système : • le logiciel fait-il ce qui était attendu ? • Tests fonctionnels, boîte noire, tests extra-fonctionnels
  13. Tests fonctionnels • Tests unitaires / composants • le composant

    a t-il des défaillances ? • Tests unitaires • Tests d'intégration : • les échanges entre composants ont-ils des défaillances ? • Interfaçage des composants • Tests système : • le logiciel fait-il ce qui était attendu ? • Tests fonctionnels, boîte noire, tests extra-fonctionnels • Tests d'acceptation (UAT) • Le logiciel répond t-il au besoin ?
  14. 15 / 33 Tests fonctionnels

  15. Tests de composants • Vérifier que le composant, dans un

    contexte donné et isolé, réagit de la manière attendue • Tests unitaires • PHP : PHPUnit, atoum • Java : Junit • Javascript : Karma, Qunit
  16. Comment vérifier les tests ? 1/2 • Tests de mutation

    • PHP : MutaTesting https://github.com/Halleck45/MutaTesting • Java : PiTest http://pitest.org • Javascript : Mutandis https://github.com/saltlab/mutandis • On modifie des parties du code source (mutations) et on vérifie que les tests unitaires correspondants ont détecté ces changements • Si je remplace « a + b » par « a - b », le test unitaire doit planter
  17. Comment vérifier les tests ? 2/2

  18. Tests systèmes • Le logiciel fait-il ce qui était attendu

    ? • Tests fonctionnels • On test la conformité aux spécifications (contractuelles) • PHP : PHPFit http://sourceforge.net/projects/phpfit.berlios • Java : FIT, FitNesse http://fit.c2.com • Fort investissement technique
  19. UAT1/3 • Le logiciel répond t-il au besoin ? •

    Tests de comportement • PHP :Behat http://behat.org • Java : Jbehave http://jbehave.org • JavaScript : Jasmine Species http://rudylattae.github.io Scénario : retirer de l'argent avec une carte périmée Etant donné que je suis client de la banque Et que ma carte de crédit est expirée Quand je tente de retirer de l'argent retirer de l'argent au distributeur Alors je ne dois pas recevoir d'argent Et ma carte doit être aspirée Scénario : retirer de l'argent avec une carte valide
  20. UAT 2/3

  21. UAT 3/3

  22. 23 / 33 Tests extra-fonctionnels

  23. Tests de vérification • Le logiciel est-il bien fait ?

    • Tests statiques • PHP : PhpMetrics http://github.com/Halleck45/PhpMetrics • Java : Jhawk www.virtualmachinery.com/jhawkprod.htm • JavaScript : JsComplexity http://jscomplexity.org • Types de métriques : • Nombre de bugs estimés • LCOM • Indice de maintenabilité • ...
  24. PhpMetrics

  25. Tests d'interface • Comparent des captures d'écran de vos applications

    • Huxley https://github.com/facebook/huxley • PhantomCSS https://github.com/Huddle/PhantomCSS • Wraith https://github.com/BBC-News/wraith
  26. Tests de charge / stress • Contrôlent la résistance de

    votre application • Tsung • Funkload • Gatling...
  27. Tests d'exécution • Contrôlent que votre application est optimisée •

    Grunt-yslow https://github.com/andyshora/grunt-yslow • BumbleTest http://bbltest.sourceforge.net • WebPageTest http://www.webpagetest.org
  28. Tests de singe • Réalisent des actions illogiques pour tenter

    de provoquer des erreurs • Gremlins.js https://github.com/marmelab/gremlins.js
  29. 30 / 33 Conclusion

  30. Conclusion • Tester = rechercher les états indésirables • Il

    faut bien choisir le niveau de test adapté : • Coûts • Besoin • Capacité
  31. Conclusion • Une très grande partie des tests peut être

    automatisée • Il n'y a pas d'excuse valable pour ne pas tester. • Il n'y a pas d'excuse valable pour ne pas tester ! • Il n'y a PAS D'EXCUSE VALABLE pour ne pas tester !
  32. Questions • Jean-François Lépine • @Halleck45 • http://blog.lepine.pro • Merci

    !