TESTS FONCTIONNELS ET NON FONCTIONNELS UTILIT ET OUTILS

  • Slides: 34
Download presentation
TESTS FONCTIONNELS ET NON FONCTIONNELS UTILITÉ ET OUTILS (JUNIT & AUTRES OUTILS) Belhassine Amine

TESTS FONCTIONNELS ET NON FONCTIONNELS UTILITÉ ET OUTILS (JUNIT & AUTRES OUTILS) Belhassine Amine Fniter Neila Kassis Bassem

PLAN Introduction Tests Unitaires Tests fonctionnels Autres Tests en entreprise Conclusion 2

PLAN Introduction Tests Unitaires Tests fonctionnels Autres Tests en entreprise Conclusion 2

INTRODUCTION Les tests d'une application sont une phase très importante dans les cycles de

INTRODUCTION Les tests d'une application sont une phase très importante dans les cycles de développement et de maintenance d'une application. Ils permettent de: � détecter des bugs � s'assurer que l'application réponde au cahier des charges et aux spécifications. Les tests doivent être réalisés en parallèle du processus de fabrication d'une application 3

INTRODUCTION 4

INTRODUCTION 4

LES TESTS UNITAIRES 5

LES TESTS UNITAIRES 5

TESTS UNITAIRES Le test unitaire : � bout de code qui provoque l’exécution d’un

TESTS UNITAIRES Le test unitaire : � bout de code qui provoque l’exécution d’un autre bout de code et qui en analyse le résultat. 6

TESTS UNITAIRES • Est-ce que mon code fait ce que je veux qu'il fasse

TESTS UNITAIRES • Est-ce que mon code fait ce que je veux qu'il fasse ? • Est-ce qu'il le fait dans toutes les conditions ? pas seulement dans le cas nominal standard � mais aussi en présence d'exception � 7

TESTS UNITAIRES Les tests unitaires peuvent être réalisés de différentes manières : � manuelle

TESTS UNITAIRES Les tests unitaires peuvent être réalisés de différentes manières : � manuelle : par exemple en utilisant les capacités de l'IDE notamment celles du débogueur � manuelle et reproductible : par exemple en créant pour chaque classe une méthode main qui permet d'exécuter des tests. Ce type de tests nécessite un lancement à la main et une analyse humaine des résultats � automatisée avec un framework de tests 8

LES FRAMEWORKS POUR LES TESTS UNITAIRES Plusieurs frameworks open source sont utilisables dans le

LES FRAMEWORKS POUR LES TESTS UNITAIRES Plusieurs frameworks open source sont utilisables dans le monde Java : � JUnit : C'est le plus ancien et le plus répandu � Test. NG JUnit est à l'origine de plusieurs frameworks similaires pour différentes plateformes ou langages notamment n. Unit (. Net), d. Unit (Delphi), cpp. Unit (C++), . . . => Tous ces frameworks sont regroupés dans une famille nommée x. Unit. 9

EXEMPLE AVEC JUNIT 4 import static org. junit. Assert. *; import org. junit. Test;

EXEMPLE AVEC JUNIT 4 import static org. junit. Assert. *; import org. junit. Test; public class String. Test { static String foo; static String bar; @Before // avec cette annotation, cette méthode sera appelée avant chaque test public void setup() { foo = "abc"; bar = "def"; } @After public void tear. Down() {} @Test public void test. Concatenation() { assert. Equals("abcdef", foo + bar); } @Test public void test. Starts. With() { assert. True(foo. starts. With("ab"); } } 10

TESTSUITE import org. junit. Test; public class Test. Partie 1 { @Test public void

TESTSUITE import org. junit. Test; public class Test. Partie 1 { @Test public void test 1() { } } import org. junit. Test; public class Test. Partie 2 { @Test public void test 2() {} } import org. junit. runner. Run. With; import org. junit. runners. Suite. Classes; @Run. With(Suite. class) @Suite. Classes({Test. Partie 1. class, Test. Partie 2. class}) public class Test. Suite { } 11

LES TESTS FONCTIONNELS 12

LES TESTS FONCTIONNELS 12

TEST UNITAIRE VS TEST FONCTIONNEL Les tests unitaires confirment qu'une portion de code fournit

TEST UNITAIRE VS TEST FONCTIONNEL Les tests unitaires confirment qu'une portion de code fournit bien une sortie correcte en fonction de paramètres d'entrées donnés Les tests fonctionnels valident un dispositif complet et non pas une simple conversion d'entrées-sorties reposent sur des scénarios pour valider un processus 13

LES TESTS FONCTIONNELS Vérifier qu’il n’y a pas d’anomalies dans les fonctions réalisées par

LES TESTS FONCTIONNELS Vérifier qu’il n’y a pas d’anomalies dans les fonctions réalisées par l’application ⇒ Valider les spécifications techniques et les exigences fonctionnelles � Appuyer sur la touche A A

AVANTAGES ET INCONVÉÉNIENTS Avantages : Observer l'utilisateur dans un contexte réel d'utilisation Identifier les

AVANTAGES ET INCONVÉÉNIENTS Avantages : Observer l'utilisateur dans un contexte réel d'utilisation Identifier les problèmes rencontrés par les utilisateurs lorsqu'ils se servent du logiciel Effectuer des mesures pendant le test Inconvénients : Les tests doivent etre écrits pour chaque application Les tests peuvent difficilement couvrir l'ensemble de fonctionnalités du logiciel

TYPE DE TEST FONCTIONNEL Il existe plusieurs types de test fonctionnel : Test IHM

TYPE DE TEST FONCTIONNEL Il existe plusieurs types de test fonctionnel : Test IHM : On s’assure de l’ergonomie et des performances de l’IHM. Test des web Services : Tester l’enchainement de web services

TEST IHM : Selenium : un outil de tests d'interfaces distribué sous la licence

TEST IHM : Selenium : un outil de tests d'interfaces distribué sous la licence Apache

TEST IHM Fitness : Fitness est composé d’un wiki qui référence les scénarios de

TEST IHM Fitness : Fitness est composé d’un wiki qui référence les scénarios de tests, d’un moteur d’exécution pour extraire les données des tests

TEST IHM Test Fonctionnel sous Android Robotium est un framework de test a été

TEST IHM Test Fonctionnel sous Android Robotium est un framework de test a été créé pour implémenter des tests automatique puissants et robustes pour les applications Android. .

TEST WEB SERVICE SOAPUI : permet de faire des tests unitaires ainsi que des

TEST WEB SERVICE SOAPUI : permet de faire des tests unitaires ainsi que des tests de charge sur les web services, il permet notamment de tester des Web Services exposés, mais aussi de simuler la présence de Web Services

LES AUTRES TESTS 21

LES AUTRES TESTS 21

LES AUTRES TESTS Test de performance Ces tests sont roulés en appliquant des charges

LES AUTRES TESTS Test de performance Ces tests sont roulés en appliquant des charges anormales ou par la répétition exagérée de certaines actions Test d’installation/ désinstallation : Tester le processus d’installation / désinstallation intégralement, partiellement ou progressivement. Test de sécurité : Tester la manière dont le système protège contre les accès interne ou externes pas autorisés Test de compatibilité : Tester la manière dont un logiciel fonctionne dans une configuration spécifique du système

LES TESTS EN ENTREPRISE 23

LES TESTS EN ENTREPRISE 23

EXTREME PROGRAMMING (XP) • • Méthode agile de PM. Equipes réduites. Pousse à l'extrême

EXTREME PROGRAMMING (XP) • • Méthode agile de PM. Equipes réduites. Pousse à l'extrême des pratiques existantes. Tests dans les pratiques de XP Intégration continue : facilitée par les tests o Tests fonctionnels et unitaires o Programmation en binôme o

TDD • • • Test Driven Developement Ecrire les tests unitaires avant d'écrire le

TDD • • • Test Driven Developement Ecrire les tests unitaires avant d'écrire le code source. RED GREEN REFACTOR ! : o o o Ecrire un test qui échoue : validité du test Ecrire le code puis le tester Quand le test passe on refactorise.

TDD

TDD

INTÉGRATION CONTINUE A chaque nouvelle modification du code ( commit d'un développeur ) on

INTÉGRATION CONTINUE A chaque nouvelle modification du code ( commit d'un développeur ) on lance un build du logiciel. Les tests qui seront éxécutés nous informent si les nouvelles modifications ont été correctement intégrées ou non ( régression ).

INTÉGRATION CONTINUE

INTÉGRATION CONTINUE

INTÉGRATION CONTINUE

INTÉGRATION CONTINUE

MAVEN • • • Outil de build. Appelé par le serveur de CI pour

MAVEN • • • Outil de build. Appelé par le serveur de CI pour effectuer la compilation , le test , le packagin etc. . . Phases de test dans le build lifecyle de Maven : o o Test : teste le code compilé en s'appuyant sur un framework de test : par exemple Junit Integration test : Après déploiement du package les tests fonctionnels sont démarrés.

CODE COVERAGE : COBERTURA Mesure la couverture de votre projet par les tests. Effectue

CODE COVERAGE : COBERTURA Mesure la couverture de votre projet par les tests. Effectue des mesures pour chaque portion de code dans chaque classe, package ou dans l'ensemble du projet. Génère des rapports HTML et XML.

LE MOT DE LA FIN A crash is when your competitor’s program dies. When

LE MOT DE LA FIN A crash is when your competitor’s program dies. When your program dies, it is an “idiosyncrasy. ” Frequently, crashes are followed with a message like “ID 02. ” “ID” is an abbreviation for idiosyncrasy and the number that follows indicates how many more months of testing the product should have had. - Guy Kawasaki In XP, we don't divide and conquer. We conquer and divide. First we make something that works, then we bust that up and solve the little parts. - Kent Beck

CONCLUSION Les tests unitaires, fonctionnels et autres sont l'un des piliers de l'industrialisation du

CONCLUSION Les tests unitaires, fonctionnels et autres sont l'un des piliers de l'industrialisation du développement logiciel. Leur utilisation sur de grands projets et quand cela est nécessaire peut faire gagner du temps et de l'argent pour une équipe de développement. Au contraire si cette pratique est ignorée quand il faut qu'elle ne le soit pas l'équipe de développement cours de gros risques qui peuvent même aller à une faillite de l'entreprise.

MERCI DE VOTRE ATTENTION

MERCI DE VOTRE ATTENTION