Aller au contenu principal

Test automatisé

Objectifs

  • Connaître et différencier les types de tests

Cours

Test automatisé

DevOps

Tester c'est douter

https://www.flickr.com/photos/xapn/37150757250

Pourquoi ?

  • Éviter les bugs et les régressions

  • Vérifier la sécurité et la performance

  • Valider les spécifications

Quand ?

https://www.researchgate.net/figure/IBM-System-Science-Institute-Relative-Cost-of-Fixing-Defects_fig1_255965523

Catégorisation des tests

https://www.softwaretestinghelp.com/types-of-software-testing/

(Non-)Fonctionnel

  • Test fonctionnel

    • Vérifie que le logiciel fait ce qu'il est censé faire selon les spécifications fonctionnelles

    • Exemples: unitaires, intégration, bout en bout

  • Test non-fonctionnel

    • Ne dépends pas des fonctionnalités du logiciel

    • Exemples: sécurité, performance

Types de tests

  • Tests unitaires

  • Tests d'intégration

  • Tests de bout en bout (E2E)

  • Tests d'acceptation

  • Tests de sécurité

  • Tests de performance

Tests unitaires

  • Vérifie un composant isolé (fonction, classe, etc.)

  • Besoin de mocks pour simuler les dépendances

    • Mock au niveau de la classe ou de la méthode

    • Frameworks : Mockito (Java), unittest.mock (Python), etc.

  • Frameworks : JUnit (Java), Jest (JS), unittest (Python), etc.

Tests d'intégration

  • Vérifie l'interaction entre plusieurs composants

  • Appel à un service externe de test (mock)

    • Mock au niveau du service et de sa réponse

    • Connection à une base de données de test

  • Pour Spring (Java), démarrage d'un contexte de test

Tests de bout en bout (end-to-end)

  • Vérifie le fonctionnement de l'application en entier du point de vue de l'utilisateur

  • Simulation depuis le navigateur: Selenium

  • Déploiement de l'application sur un environnement de test

Pyramide

https://openclassrooms.com/fr/courses/6100311-testez-votre-code-java-pour-realiser-des-applications-de-qualite/6440061-choisissez-les-bons-tests-automatises-avec-la-pyramide-de-tests

Glace

https://openclassrooms.com/fr/courses/6100311-testez-votre-code-java-pour-realiser-des-applications-de-qualite/6440061-choisissez-les-bons-tests-automatises-avec-la-pyramide-de-tests

Tests d'acceptation

  • Vérifie que le logiciel répond aux besoins du client

  • Scénarios de test

  • Déploiement de l'application sur un environnement accessible au client

  • Rapport de test

  • Proche du E2E mais orienté métier

Tests de sécurité

Tests de performance

  • Vérifie que le logiciel répond aux exigences de performance

    • Load (charge) : temps de réponse en fonction du nombre d'utilisateurs

    • Endurance : stabilité sur le long terme

    • Stress (surcharge) : stabilité en cas de surcharge

    • Scale : adaptation à une montée en charge

  • Déploiement sur un environnement dédié avec les même ressources que la production

Couverture de code

  • Mesure le pourcentage de code couvert par les tests

  • Couverture des lignes, conditions, fonctions, etc.

  • Fixer un objectif de couverture : p. ex. 80%

  • Bonne couverture bons tests

Random testing

  • Génération aléatoire de données de test

  • Vérification du résultat selon les spécifications

  • Seed pour pouvoir reproduire les tests en cas d'erreur

Test-driven development (TDD)

  • Écriture des tests avant le code

    • Ajouter un test

    • Lancer tous les tests et vérifier l'échec

    • Écrire le code

    • Lancer tous les tests et vérifier le succès

    • Refactor le code

Test-driven development (TDD)

https://commons.wikimedia.org/wiki/File:TDD_Global_Lifecycle.png

Tester ou ne pas tester, telle est la question

https://www.commitstrip.com/fr/2013/04/16/tester-ou-ne-pas-tester-telle-est-la-question/

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Références