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/
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
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 ?
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
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
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 !