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