Tweet
Partager
Envoyer

Nouvelle plateforme de test .NET : ce qu’il faut savoir

DotNet
 

La nouvelle plateforme de test (Microsoft.Testing.Platform) remplace celle introduite avec Visual Studio 2012. Elle offre une expérience unifiée, afin d’exécuter les tests de manière uniforme, quel que soit le framework utilisé, que ce soit NUnit, XUnit, MsTest ou d’autres.

Elle a été construite sur six piliers fondamentaux : déterminisme, portabilité, intégration, extensibilité, performance et sécurité.

Tests déterministes

L’exécution des mêmes tests avec la même configuration doit produire les mêmes résultats, indépendamment de l’environnement, c’est ce que permet la nouvelle plateforme. Cela inclut les machines locales, les serveurs de build ou les machines des développeurs.

Problèmes avec l’ancienne plateforme

Les tests sur l’ancienne plateforme pouvaient échouer en raison de versions incohérentes des DLL des TestAdapter récupérées depuis le cache NuGet.

Enregistrement statique des extensions

Pour résoudre le problème précédent, la nouvelle plateforme utilise l’enregistrement statique des extensions, éliminant ainsi la recherche par réflexion, la recherche dans des dossiers et la résolution d’assemblage personnalisés, qui pouvaient être source d’erreurs.

Portabilité des tests

La portabilité permet aux projets et aux tests d’être indépendants de leur environnement, facilitant leur exécution sur différents systèmes sans dépendre de configurations spécifiques.

Un problème courant résolu par cette approche est celui des tests qui échouent sur le serveur mais fonctionnent localement, rendant le débogage complexe. Avec la nouvelle plateforme, il suffit de télécharger le dossier de build du serveur pour reproduire le problème localement, sans se soucier des versions du SDK .NET de l’environnement d’exécution.

Intégration dans l’écosystème .NET

La nouvelle solution permet aux projets de test de ne plus être des cas particuliers dans l’écosystème .NET, facilitant ainsi leur intégration comme des applications console classiques.

Cela réduit les efforts nécessaires pour intégrer de nouvelles fonctionnalités ou exécuter les tests dans des outils DevOps.

Extensibilité de la plateforme

La nouvelle plateforme permet aux développeurs d’ajouter des fonctionnalités supplémentaires :

  • Extensibilité interne : la plateforme est construite autour du concept d’extensibilité, de nombreuses fonctions internes étant elles-mêmes des extensions.
  • Extensions externes : des extensions externes peuvent être ajoutées, comme la fonctionnalité de retrying permettent de gérer plus efficacement les tests dits “instables”.
  • Gestion des dépendances : la plateforme ne se s’appuie pas sur des dépendances externes, comme Newtonsoft.Json, mais sur des packages du framework .NET, comme System.Text.Json, ce qui la rend plus évolutive.

Amélioration des performances

Les points significatifs concernant les performances sont les suivants :

  • La plateforme minimise l’utilisation de la mémoire et du CPU, se concentrant principalement sur l’exécution des tests plutôt que sur le fonctionnement de la plateforme elle-même.
  • Les performances sont améliorées d’environ 30%.
  • Le nombre de processus démarrés est réduit au minimum.

Sécurité

Deux aspects améliorent la sécurité de la plateforme :

  • La minimisation des dépendances réduit la présence potentielle de dépendances vulnérables.
  • La plateforme est livrée uniquement sous forme de package NuGet permettant d’identifier et de résoudre plus rapidement les problèmes de sécurité.

 

Nouvelles fonctionnalités

Les nouvelles fonctionnalités les plus significatives apportées par la plateforme sont les suivantes :

Rechargement à chaud (Hot Reload)

Le Hot Reload permet de voir les résultats immédiats au fur et à mesure que les modifications de code sont enregistrées.

Intégration Docker

Les possibilités d’intégration avec Docker sont les suivantes :

  • Exécution des tests dans un conteneur Docker
  • Création d’une image Docker
  • Exécution des tests sous Linux à partir d’un environnement Windows.

Extension Hang Dump

L’extension Hang Dump permet de spécifier un délai d’attente pour les tests, le processus est arrêté si le délai est dépassé et un dump mémoire est généré pour le débogage.

Support natif AOT

La plateforme a été créée pour être compatible nativement avec AOT.

Pour rappel, la compilation AOT (Ahead-Of-Time) est une méthode de compilation qui convertit le code source en code machine natif avant son exécution. Contrairement à la compilation JIT (Just-In-Time) qui compile le code à l’exécution, la compilation AOT permet une exécution plus rapide et une utilisation plus efficace des ressources, le code étant déjà optimisé pour la ressource cible. Cela améliore les performances et la réactivité des applications.

Conclusion

En résumé, la nouvelle plateforme de test Microsoft.Testing.Platform représente une avancée significative par rapport à son prédécesseur. En mettant l’accent sur le déterminisme, la portabilité, l’intégration, l’extensibilité, la performance et la sécurité, elle offre une expérience de test plus fiable et efficace.

 

Les développeurs peuvent désormais compter sur une infrastructure robuste, minimisant les échecs dus aux incohérences de l’environnement et facilitant l’intégration de nouvelles fonctionnalités.

Les innovations telles que le Hot Reload et l’intégration Docker rendent le processus de test encore plus fluide et dynamique, faisant de cette plateforme un outil indispensable pour le développement moderne.

Souhaitez-vous intégrer cette nouvelle plateforme de test dans vos applications ?

CROSS by Micropole est spécialisé dans les technologies .NET, avec une équipe d’architectes et de développeurs senior. Nous mettons notre expertise ainsi que nos retours d’expérience à votre disposition. 

Fabien Lorenzini

Fabien Lorenzini

Lead Tech Microsoft

Pourquoi la modernisation des applications .NET Framework 4.8 vers .NET 8 ou 9 est cruciale en 2025

Pourquoi la modernisation des applications .NET Framework...

Introduction à la modernisation  La modernisation des applications est une démarche essentielle…
Keynote d'ouverture de Microsoft Ignite 2024 : ce qu'il faut retenir

Keynote d'ouverture de Microsoft Ignite 2024 :...

Lors de la keynote de Satya Nadella à Ignite 2024 ce mardi…
Le guide ultime pour la .NET Conf 2024

Le guide ultime pour la .NET Conf...

  Préparez-vous à une semaine exceptionnelle de découvertes, d’innovations et d’échanges autour .NET…
ACCÉLÉREZ AVEC NOUS
ÊTES-VOUS DATA FLUENT ?

Contactez-nous