32
1 / 33 Outils et Pratiques : Tester une application web moderne par Jean-François LÉPINE

Outils et pratiques : tester une application web moderne

Embed Size (px)

DESCRIPTION

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/

Citation preview

Page 1: Outils et pratiques : tester une application web moderne

1 / 33

Outils et Pratiques :Tester une application web moderne

par Jean-François LÉPINE

Page 2: Outils et pratiques : tester une application web moderne

En face de vous

● Jean-François LÉPINE

● Consultant technique chez Alter Way

● @Halleck45

● http://blog.lepine.pro

Page 3: Outils et pratiques : tester une application web moderne

3 / 33

Rappel :Qu'est-ce qu'un test ?

Page 4: Outils et pratiques : tester une application web moderne

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)

Page 5: Outils et pratiques : tester une application web moderne

É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

Page 6: Outils et pratiques : tester une application web moderne

Éliminer les Défauts

● On cherche à éliminer le plus tôt possible les états indésirables (defects)

Analyse Conception Développement Recette Maintenance0

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

Page 7: Outils et pratiques : tester une application web moderne

8 / 33

Testabilité &Qualité

Page 8: Outils et pratiques : tester une application web moderne

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é

Page 9: Outils et pratiques : tester une application web moderne

Comment régler le curseur ?

Vies humaines en jeuFiabilité Exactitude Testabilité

Longue durée de vieMaintenabilité Évolutivité Portabilité

Temps réelEfficacité Exactitude Fiabilité

Informations sensiblesIntégrité Fiabilité

...... ... ...

Page 10: Outils et pratiques : tester une application web moderne

Tests fonctionnels● Tests unitaires / composants

● le composant a t-il des défaillances ?

● Tests unitaires

Page 11: Outils et pratiques : tester une application web moderne

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

Page 12: Outils et pratiques : tester une application web moderne

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

Page 13: Outils et pratiques : tester une application web moderne

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 ?

Page 14: Outils et pratiques : tester une application web moderne

15 / 33

Tests fonctionnels

Page 15: Outils et pratiques : tester une application web moderne

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

Page 16: Outils et pratiques : tester une application web moderne

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

Page 18: Outils et pratiques : tester une application web moderne

Tests systèmes

● Le logiciel fait-il ce qui était attendu ?

● Tests fonctionnels

● On test la conformité aux spécifications (contractuelles)

● PHP : PHPFithttp://sourceforge.net/projects/phpfit.berlios

● Java : FIT, FitNessehttp://fit.c2.com

● Fort investissement technique

Page 19: Outils et pratiques : tester une application web moderne

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éeEtant donné que je suis client de la banqueEt que ma carte de crédit est expiréeQuand je tente de retirer de l'argent retirer de l'argent au distributeurAlors je ne dois pas recevoir d'argentEt ma carte doit être aspirée

Scénario : retirer de l'argent avec une carte valide

Page 21: Outils et pratiques : tester une application web moderne

UAT 3/3

Page 22: Outils et pratiques : tester une application web moderne

23 / 33

Tests extra-fonctionnels

Page 23: Outils et pratiques : tester une application web moderne

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é

● ...

Page 25: Outils et pratiques : tester une application web moderne

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

Page 26: Outils et pratiques : tester une application web moderne

Tests de charge / stress

● Contrôlent la résistance de votre application

● Tsung

● Funkload

● Gatling...

Page 27: Outils et pratiques : tester une application web moderne

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

Page 28: Outils et pratiques : tester une application web moderne

Tests de singe

● Réalisent des actions illogiques pour tenter de provoquer des erreurs

● Gremlins.js https://github.com/marmelab/gremlins.js

Page 29: Outils et pratiques : tester une application web moderne

30 / 33

Conclusion

Page 30: Outils et pratiques : tester une application web moderne

Conclusion

● Tester = rechercher les états indésirables

● Il faut bien choisir le niveau de test adapté :

● Coûts

● Besoin

● Capacité

Page 31: Outils et pratiques : tester une application web moderne

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 !

Page 32: Outils et pratiques : tester une application web moderne

Questions

● Jean-François Lépine

● @Halleck45

● http://blog.lepine.pro

● Merci !