1 / 33
Outils et Pratiques :
Tester une application web moderne
par Jean-François LÉPINE
En face de vous
●
Jean-François LÉPINE
●
Consultant technique chez Alter Way
●
@Halleck45
●
http://blog.lepine.pro
3 / 33
Rappel :
Qu'est-ce qu'un test ?
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)
É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
É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
8 / 33
Testabilité &
Qualité
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é
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é
...
... ... ...
Tests fonctionnels
●
Tests unitaires / composants
●
le composant a t-il des défaillances ?
●
Tests unitaires
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 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 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 ?
15 / 33
Tests fonctionnels
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
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
Comment vérifier les tests ? 2/2
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
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
UAT2/3
UAT3/3
23 / 33
Tests extra-fonctionnels
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é
●
...
PhpMetrics
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
Tests de charge / stress
●
Contrôlent la
résistance de votre
application
●
Tsung
●
Funkload
●
Gatling...
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
Tests de singe
●
Réalisent des actions illogiques pour tenter de provoquer des erreurs
●
Gremlins.js https://github.com/marmelab/gremlins.js
30 / 33
Conclusion
Conclusion
●
Tester = rechercher les états indésirables
●
Il faut bien choisir le niveau de test adapté :
●
Coûts
●
Besoin
●
Capacité
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 !
Questions
●
Jean-François Lépine
●
@Halleck45
●
http://blog.lepine.pro
●
Merci !

Outils et pratiques : tester une application web moderne

  • 1.
    1 / 33 Outilset Pratiques : Tester une application web moderne par Jean-François LÉPINE
  • 2.
    En face devous ● Jean-François LÉPINE ● Consultant technique chez Alter Way ● @Halleck45 ● http://blog.lepine.pro
  • 3.
  • 4.
    En quête deSatisfaction ● 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 ● Oncherche à é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 ● Oncherche à é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.
    Niveaux de qualité Utilité Pertinence Exactitude Interopérabilité Sécurité Conformité Fiabilité Toléranceaux 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 lecurseur ? 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 Testsfonctionnels
  • 15.
    Tests de composants ● Vérifierque 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 lestests ? 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.
  • 18.
    Tests systèmes ● Le logicielfait-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épondt-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.
  • 21.
  • 22.
    23 / 33 Testsextra-fonctionnels
  • 23.
    Tests de vérification ● Lelogiciel 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.
  • 25.
    Tests d'interface ● Comparent descaptures 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 quevotre 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éalisentdes actions illogiques pour tenter de provoquer des erreurs ● Gremlins.js https://github.com/marmelab/gremlins.js
  • 29.
  • 30.
    Conclusion ● Tester = rechercherles états indésirables ● Il faut bien choisir le niveau de test adapté : ● Coûts ● Besoin ● Capacité
  • 31.
    Conclusion ● Une très grandepartie 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.