Aller au contenu

Les environnements de test

Est-ce que vous savez que les environnements de tests ont un rôle important dans la stratégie de test ? Comme vous le savez, cette stratégie est un élément essentiel dans le cycle de vie d’un projet. Une stratégie de test mal cadrée peut entraîner des déploiements de développement contenant des bugs. Pour assurer une bonne stratégie, il existe plusieurs types de test qui sont déroulés dans des environnements de test adéquats. Ils sont différents et propres à chaque entreprise.  
Dans cet article, nous allons donc vous expliquer les différents types d’environnements afin de comprendre leur intérêt et leur importance dans la validation de votre projet. 

Sommaire

Qu'est-ce que des environnements de test ?

Afin de pouvoir effectuer les tests d’une fonctionnalité développée ou d’un projet, un des prérequis est de configurer un environnement de test.  

Selon ISTQB, “les environnements de test sont des environnements contenant le matériel, les instruments, les simulateurs, les outils logiciels et les autres éléments de support nécessaires à l’exécution d’un test.
L’environnement de test est un serveur qui est configuré pour pouvoir créer un environnement qui se rapproche de l’environnement de production. Il permet d’assurer la qualité de la livraison.  

les étapes de développement en agilité

Quels sont les types d'environnement de test

Il existe différents environnements de test et chacun répond à un besoin spécifique. Sachant qu’un environnement de test coûte cher (exemple : hébergement serveur, configuration et installation), chaque entreprise configure le ou les environnements en fonction de ses besoins. 

Ci-dessous, les différents environnements qui peuvent exister (l’intitulé dépend aussi de chaque entreprise).  

les environnements de développement

L'environnement de développement

Un environnement de développement (dans le langage courant on dit “en local“) est un ensemble d’applications et outils que les développeurs installent en local, sur leurs machines, afin de pouvoir tester leurs développements. Ceci leur permet ainsi de déboguer leur code. 

Un environnement de développement contient généralement les éléments suivants :  

  • Une stack de développement : une combinaison de composants qui  permettent à un développeur de faire fonctionner son développement.
    Exemple pour le développement backend : il y aura une plateforme de code,  un file system, une base de données, un hébergeur, un web server, un web développement framework, un system d’opération, un éditeur de code source, le déboguer et la gestion des versions  
  • Résumé : l’environnement de développement permet de coder et vérifier que le code développé fonctionne. Il doit contenir ses propres jeux de données* et bases de données. 
    *un jeux de donnée est une donnée de test qui permet de valider une fonctionnalité. 

L'environnement de recette /bout en bout

L’environnement de test prend lieu avant la mise en production d’une fonctionnalité. C’est ici, que les développeurs vont assurer un déploiement continu de leurs fonctionnalités. Ainsi le Quality Analyst (QA) et le Product Owner (PO) peuvent tester ce que les développeurs ont développé.  

Pour assurer le test d’une fonctionnalité, l’environnement de test doit être fonctionnel et opérationnel. C’est un environnement qui doit répondre aux exigences minimales pour que l’application fonctionne. Au sein d’une organisation il peut exister différents environnements de test. 

Comme déjà indiqué, les développeurs vont assurer des déploiement en continu. Par conséquent, parfois cela peut entraîner des indisponibilités de la plateforme ou de l’occurrence de régressions.

Dans un premier temps, le QA va  s’assurer que la fonctionnalité respecte bien les critères rédigés en amont du développement. Ensuite, il va effectuer des tests de bout en bout avec d’autres équipes. Pour cela, il va vérifier que la donnée est bien envoyée et interprétée par l’autre projet et qu’il reçoit le retour attendu.  

Ceci nécessite un alignement entre les différents projets car la fonctionnalité est déployée sur des environnements interbranchés. 

L'environnement de pré-production ou staging

Le passage de la fonctionnalité de l’environnement de recette à l’environnement de pré-production, démontre que l’équipe en charge du projet considère la fonctionnalité assez mature pour être mise à disposition des équipes métier (exemple l’entité marketing) et non pas pour les utilisateurs finaux. Cet environnement est censé être un clone de l’environnement de production mais ne le remplace pas. Il est l’environnement où tous les tests finaux seront effectués avant de passer la fonctionnalité dans l’environnement de production.

L'environnement de production

L’environnement de production est un environnement où la fonctionnalité sera hébergée dans le serveur de production. Elle sera donc accessible par le client final. Cet environnement doit être stable afin d’assurer une continuité du service et une bonne expérience utilisateur. 

Quels sont les types de test par environnement de développement ?

Il existe différents types de tests (test system, test exploratoire …) et chacun doit être effectué sur des environnements bien précis pour avoir des résultats représentatifs sur la qualité du produit et être confiant pour passer à l’étape suivante. Voici quelques exemples de types de test : 

les tests de développement en fonction de la phase de développement
  • Performance tests : le test de performance est un test qui a pour but de vérifier la robustesse d’un environnement à recevoir un taux énorme de trafic ou d’utilisation. Généralement, il est lancé dans l’environnement de performance mais si cet environnement n’existe pas, il sera lancé dans l’environnement de préproduction.  
  • System intégration testing : ce test permet de vérifier comment les modules individuels interagissent les uns avec les autres lorsqu’ils sont intégrés dans un système. Il  se déroule dans l’environnement d’intégration. 
  • Test system : le test système est effectué via des scénarios de test de cas réels pour vérifier que l’ensemble du système fonctionne correctement en référence aux exigences spécifiées. Il doit se dérouler dans l’environnement de recette  
  • Beta tests : ce test permet de rendre l’application accessible à certains utilisateurs pour vérifier le comportement du produit. Généralement ce type de test est lancé dans l’environnement de préproduction. 
  • User acceptance testing (UAT): est la dernière étape de test qui est effectuée par le client pour vérifier qu’une fonctionnalité peut être déployée en production. Ce test est réalisé dans l’environnement de Preprod ou staging.  

Quels sont les enjeux des environnements de test ?

La gestion des environnements est l’un des éléments les plus importants. Cela a un grand impact sur le respect des deadlines de livraison des projets.  
Les conflits entre les environnements est l’un des éléments le plus connu dans les entreprises et qui représente un grand enjeu. 

Les problèmes qui peuvent exister dû à la mauvaise gestion des environnements :  

  • Les conflits entre les branches de merge ce qui entraine l’impossibilité de livrer une fonctionnalité avec succès. 
  • Le manque de visibilité sur l’interdépendance entre 2 projets ce qui implique la coexistence de 2 fonctionnalités qui ont une dépendance mais qui ne doivent pas coexister dans le même environnement lors des tests:  une fonctionnalité doit aller en PROD et pas l’autre. 
  • L’indisponibilité des environnements suite aux déploiements ou problèmes réseaux. 


Par conséquent, il est impératif de vérifier la disponibilité et le branchement des autres SI à l’environnement lors de lancement de la phase de test ! 
 

Pour conclure, la gestion des environnements de test est l’un des éléments les plus importants dans la gestion des projets pour éviter d’entrainer des retards au niveau de la mise en production d’une fonctionnalité/ release. Par conséquent, il est important d’avoir des études d’impact avant les projets. Il faut aussi, bien planifier la gestion des environnements de test, savoir  quels tests, à quel moment et dans quel environnement les effectuer. Enfin, il est important de communiquer auprès des projets avec lesquels la fonctionnalité a des dépendances pour pouvoir assurer le bon déroulement des tests et tenir les délais.