Tests unitaires, tests fonctionnels et tests de non régression, comment s’y retrouver ?

Publié le : 1 mai 2020

Tester est incontournable tant et si bien que le terme “tests” est utilisé à torts et à travers. Il devient difficile d’y voir clair et, surtout, d’identifier les actions à mener pour tester un logiciel ou une application.

Pour s’y repérer sont référencés 3 « grandes familles » de tests :

  • Tests unitaires pour tester le bon fonctionnement d’une fonction isolée,
  • Tests fonctionnels pour tester l’enchaînement de différentes fonctionnalités et vérifier qu’elles sont conformes aux besoins exprimés par les métiers,
  • Tests de non régression pour vérifier que la version en cours n’a pas généré de régression en regard de la version précédente.

Dans cet article, nous allons voir comment différencier ces 3 types de tests et, surtout, découvrir leurs bénéfices pour votre projet de développement.

Tests unitaires : par qui et quels sont les intérêts ?

Il existe pléthore de définitions sur internet mais on retiendra les synonymes proposés par l’ISTQB pour s’en faire une idée plus précise : “tests de composants” et “tests de module”. En bref, ils permettent de s’assurer que le comportement d’une fonction est correct. Pour cela il faut tester le composant de façon isolée ou avec des bouchons appropriés.

Imaginez un site e-commerce de vente de chaussure. Vous testeriez que l’ajout d’un produit à la “Liste de souhait” soit bien pris en compte. Vous testeriez également que vous pouvez retirer un produit qui s’y trouve. Pour cela vous allez faire 2 tests unitaires.

Pour les mener à bien ce sont les développeurs qui sont les mieux placés. Cela leur permet de contrôler immédiatement si leur code fonctionne comme attendu.

Les avantages d’un test unitaire sont multiples :

  • C’est un retour immédiat sur le développement : ça marche ou ça ne marche pas,
  • Le test étant isolé il est facile de remonter à l’origine du dysfonctionnement (forte probabilité d’une erreur dans le code),
  • Il évite d’accumuler les erreurs techniques et permet de gagner du temps (beaucoup de temps) sur la suite du projet.

Tests fonctionnels : par qui et quels sont les intérêts ?

Dans le prolongement des tests unitaires les tests fonctionnels valident l’enchaînement d’une suite de fonctionnalités. Est-ce que l’application marche dans son ensemble ? Pour répondre à cette question les tests fonctionnels s’appuient sur le cahier des charges là où les tests unitaires ont une approche purement technique.

Il faut partir d’un scénario conçu pour reproduire le parcours attendu d’un utilisateur. Ce scénario intégrera une suite de tests unitaires et des jeux de données. Ces tests sont conduits, en général, par les équipes de testeurs conjointement avec la MOA.

Les tests fonctionnels doivent s’incrémenter parallèlement au développement. Plus ils sont effectués tôt dans le cycle de développement et plus la qualité du livrable sera élevée. Pour assurer la fiabilité dans le temps du logiciel, le patrimoine de tests pourra être utilisé et automatisé pour mettre en place des tests de non régression (nous vous détaillerons comment faire dans notre prochain article).

Les objectifs des tests fonctionnels sont multiples :

  • Valider un bon fonctionnement des parcours utilisateurs,
  • Intégrer des jeux de données,
  • Garantir la qualité du livrable,
  • Valider que le logiciel est conforme aux expressions de besoins.

Tests de non régression : par qui et quels sont les intérêts ?

Si la notion de tests unitaires et tests fonctionnels est claire pour vous, les tests de non régression n’en sont que la suite logique. Ils permettent de valider que la mise en production d’une nouvelle version n’aura pas d’effet de bord sur des fonctionnalités existantes. Ils répondent à la question suivante : si je mets en ligne cette nouvelle version, toutes celles en places continueront-elles à fonctionner ?

Les tests de non régression permettent de comparer une version n à une version n-1, -2, -n …

Plus une régression est identifiée tôt, plus il sera facile de remonter à la racine du dysfonctionnement.

Les avantages des tests de non régression sont multiples :

  • Ils valident une version n par rapport à une version n-1,
  • Ils créent l’historique des versions et une mémoire des tests,
  • En automatisant les tests de non régression vous augmentez considérablement le niveau de qualité de vos livrables,
  • Le Graal : en mettant en place un processus d’intégration continue vous détectez l’éventuelle régression pour une prise en charge immédiate par votre équipe de développement.

Ainsi, vous évitez d’accumuler une « dette de régression » qui ne sera visible, qu’en partie, à la porte de la nouvelle mise en production. Dans ce cas, inéluctablement, votre version comportera des régressions : catastrophique pour l’image et le business !

Vous savez désormais que lorsque l’on parle de tests il convient d’en préciser la typologie. Il n’y a qu’avec cette granularité que vous pourrez augmenter considérablement la qualité de vos livrables.

L’un ne va pas sans les autres et inversement. C’est pour cela qu’il est indispensable de penser et de mettre en place une stratégie de tests en parallèle de la définition du cahier des charges du projet. C’est la garantie d’un projet qui aboutit et dans de bonnes conditions !

Les documents du monde du test

Les livres blancs
Lettre d’information Recevez l’actualité des tests