Outil de conversion Nunit vers Team System et présentation du test unitaire dans Team System

On l'avait annoncé depuis un moment, voici la première mouture de notre outil de conversion de vos éventuels tests unitaires NUnit vers les tests unitaires de Team System. Ils sont assez proches et du coup l'outil fonctionne bien.

Il accepte les tests NUnit 2.1 et 2.2 et génère des tests pour la version RTM (finale) de Visual Studio Team Edition for Software Developers ou Testers. Pour plus d'infos et pour le télécharger, voir le blog de James Newkirk.

J'ai dit plus haut que ces deux outils étaient proches, on peut donc se demander pourquoi passer à Team System pour les tests unitaires, au lieu de continuer à utiliser NUnit. En fait, comme pour la plupart des fonctionnalités de Team System, la raison principale c'est l'intégration. Je m'explique.

NUnit vous fournit un framework de gestion de tests unitaires, avec un outil graphique et un outil en ligne de commande selon vos préférences (voir le site nunit). Mais il n'y a quasiment pas d'intégration (EDIT: en tous cas nettement moins que dans Team System). Une fois encore, on se retrouve dans la situation où chaque démarche implique le choix et la prise en main d'un nouvel outil (ici potentiellement test unitaire, couverture de code et intégration de la couverture de code dans Visual Studio : 3 outils). Dans Visual Studio Team System, vous gagnez :

1 - un outil de génération automatique des tests unitaires, en VB, C# ou C++. D'un clic, vous sélectionnez graphiquement les méthodes à tester, le code d'appel de vos méthodes est généré automatiquement, il ne vous reste plus qu'à spécifier les valeurs d'entrée et celles de sortie attendues, et d'indiquer à l'aide d'une grammaire spécifique (assertions) si le test a réussi. Il est également prévu de pouvoir brancher le test sur un jeu de tests externe (fichier Excel, XML, base de données...)

2 - Le test est créé sous la forme d'un projet Visual Studio lié à celui qu'il teste. Il sera forcément stocké avec en gestion de configuration dans Team System, et pourra être ré-exécuté, suivant vos choix, soit automatiquement à chaque check-in du code, en tant que test de non régression, pour vérifier que les modifications qui viennent d'être apportées n'empêchent pas la bonne exécution des tests initialement écrits.

3 - Framework d'exécution des tests aussi bien dans Visual Studio que sur sur le serveur d'intégration, à chaque compilation, ou à certains moments définis par vos soins.

4 - intégration native avec la couverture de code. En effet, là aussi, il existe des outils Open Source, mais leur intégration laisse à désirer. Ici, en quelques clics, on active la couverture de code, et on obtient deux types de résultats dans l'environnement de développement. D'une part des résultats statistiques permettant de voir quelle proportion du code a été testée au niveau du projet puis de façon de plus en plus fine jusqu'à chaque méthode. En complément de cette approche, il est également possible de visualiser directement le code qui a été testé et celui qui ne l'a pas été dans l'éditeur de code. Les lignes de code sont surlignées en couleur en fonction de si elles ont été testées ou pas. En effet, faire des tests unitaires pour obtenir une couverture du code inférieure à 80% est rarement utile. On se rend compte que seuls les scénarios classiques sont testés et non les cas limites.

5 - Enfin, dans bien des équipes où le choix a été fait d'utiliser NUnit pour gérer les tests unitaires, personne n'a de réelle vision globale de la qualité du projet, des développeurs qui effectuent les tests comme prévu et de ceux qui s'y soustraient... Avec les outils de reporting de Visual Studio Team Foundation, on peut avoir une vue d'ensemble synthétique de où, quand et avec quel résultats les tests sont exécutés. Ainsi, la politique de tests unitaires est assurée d'être appliquée.

J'en oublie certainement, n'hésitez pas à compléter, je mettrai à jour le post.

Pour plus d'infos sur les tests unitaires dans Team System, voir le site MSDN.