Nous contacter au +33 1 84 20 44 13

Quelles différences entre tests fonctionnels et tests de non-régression ?

Dans le monde passionnant et incontournable des tests logiciels, on définit différents types de tests en fonction des usages. Quels sont les différents types de tests logiciels ? Qu’est qu’un test fonctionnel ? Qu’est-ce qu’un test de non-régression ? Quels sont leurs objectifs et, surtout, quels sont les bénéfices pour votre application ou logiciel ?

Nous allons tenter d’apporter une réponse à ces questions.

Les tests logiciels, un vaste domaine

Il existe deux grands types de tests logiciels :

  • Les tests statiques : ces tests ne nécessitent pas le lancement du logiciel testé. Il s’agit le plus généralement de revues de documentation, de planning, de code.
  • Les tests dynamiques : ces tests nécessitent d’exécuter une partie ou tout le code du logiciel testé pour s’assurer qu’il réponde correctement. Les tests dynamiques sont utilisés à plusieurs étapes de la phase de développement : tests de composant, d’intégration, système, d’acceptation.

Nous nous concentrerons sur les tests dynamiques dans notre cas et plus particulièrement les tests dits « fonctionnels » : tests systèmes et d’acceptation.

Cloudnetcare_diagramme-tests-de-montee-en-charge

Les tests fonctionnels permettent de valider que les fonctionnalités livrées sur le logiciel correspondent aux attentes du cahier des charges. Ils garantissent que les cas d’usage (workflow) peuvent être déroulés et que les résultats obtenus sont cohérents. Ces tests sont conduits par les équipes MOA ou, directement par les équipes métiers.

Par exemple, un test fonctionnel permettra de vérifier que sur un site e-commerce, il est possible de créer un compte utilisateur, de mettre au panier un article et de le payer.

Les tests fonctionnels peuvent être complétés par des tests non-fonctionnels qui permettent de vérifier que le logiciel fonctionnera correctement en conditions de production (tests de performance, d’utilisabilité, de fiabilité, …)

Autre exemple, un tir de charge nous permettra de vérifier que le site répond toujours correctement lorsque que des milliers de personnes en simultané effectuent le même parcours sur le site.

L’ensemble de ces tests permet de détecter un maximum de défaillances au plus tôt durant le cycle de développement et d’assurer un meilleur niveau de qualité lors de la livraison client et de la mise en production.

Pour assurer la robustesse du logiciel sur du long terme, tous les tests décrits ci-dessus peuvent être réutilisés et automatisés afin d’être transformés en tests de non-régression.

Les tests de non-régression

Les tests de non-régression permettent de valider que la mise en ligne d’une nouvelle fonctionnalité sur un logiciel n’impactera pas les fonctions déjà existantes. Les tests fonctionnels auront bien validé que la nouvelle fonction est opérationnelle mais ce sont les tests de non-régression qui valideront que cette dernière n’impacte pas les autres fonctionnalités du logiciel.

Les tests de non-régression sont déployés sur un environnement de recette et doivent vérifier au minimum que les fonctionnalités principales ou « critiques » du logiciel sont toujours disponibles après la livraison de nouveaux développements.
Ils permettent de réduire les risques projet, de mieux cibler et estimer les impacts des nouveaux développements ou d’une nouvelle infrastructure sur le comportement du logiciel testé.

L’objectif est d’identifier le plus tôt possible d’éventuelles régressions et, dans ce cas, l’automatisation des cas de test prend tout son sens.

Il est pertinent de reprendre, de consolider et d’automatiser les cas de tests fonctionnels et non-fonctionnels préalablement utilisés lors des phases de développement afin de les convertir en tests de non-régression.

Les résultats des tests non-fonctionnels effectués durant la phase d’implémentation d’une fonctionnalité pourront servir de référence en cas d’anomalie ou de dégradation du temps de réponse sur une version.

En mettant en place une couverture de tests automatisés, il est conseillé de définir les tests qui feront partie d’un « socle critique » sur les fonctionnalités principales. Ceci vous permettra plus rapidement en cas de délais restreints d’assurer la couverture minimale de tests sur les fonctionnalités critiques de votre système.

Plus une défaillance est identifiée tôt, plus elle est facile à corriger. En suivant rigoureusement ces différentes étapes de test, vous minimisez les risques.

Pour conclure

Tout au long de la vie d’un projet, des évolutions sont apportées. Les tests fonctionnels peuvent devenir des tests de non-régression à chaque nouvelle mise en production, s’il est pertinent de les rejouer à chaque sprint.

Un maximum de tests logiciels doit être effectués avant une mise en production. Les tests ne garantissent pas l’absence de défauts mais permettent d’assurer la qualité des applicatifs, de gagner du temps tout au long du processus de développement et de permettre aux utilisateurs finaux d’avoir confiance lors des livraisons de nouveaux lots.

Les dernières actualités

Objectifs de tests VERSUS conditions réalistes !

Comment passer d'objectifs de tests à des conditions réalistes ? C’est le premier défi à relever lors de la mise en place de tests automatisés. Même si les objectifs sont légitimes, il faut faire attention à ce que cela implique réellement ...

Présentation de la fonction supervision applicative de la plateforme CloudNetCare.

Votre site internet ou application mobile représente un enjeu de plus en plus stratégique pour la vente, l’acquisition et la fidélisation de nouveaux clients ? Les enjeux sont majeurs et l’attente des utilisateurs est de plus en plus élevée. Vous avez certainement mis en place des tests de non régressions et peut-être même automatisé, voire industrialisé ces derniers pour accélérer les mises en production et améliorer la qualité de vos livrables.

ESSAYER GRATUITEMENT
2019-02-27T10:59:55+01:00