Rosario - VS Team Dev - Tests unitaires impactés
Voici une autre des nouveautés actuellement présente dans la CTP 12 de Rosario (Team System VNext), qui cible ce coup-ci les versions Developpeur et Testeur du produit: le concept de tests unitaires impactés.
Dans VS 2005 / 2008, la fenêtre "Test View" affiche, pour une solution .NET donnée, la liste des tests MSTest présents dans les différents projets de test.
Depuis cette fenêtre il est possible de sélectionner un ou plusieurs tests, de les grouper (par classe cible testée, par namespace, par projet...), et d'initier leur exécution en mode classique ou en débug.
En 2005 / 2008, dans une approche de développement accompagnée de tests unitaires, il est donc requis, à chaque modification d'un bout de code, d'exécuter l'ensemble des tests le validant. Sur un petit projet, il est aisé l'intégrale des tests, mais sur les projets volumineux possédant quelques centaines de tests... :
- Cela peut être une perte de temps considérable de les faire exécuter tous par l'environnement de développement
- Dans le cas d'une sélection "manuelle" des tests à exécuter, il est possible d'en oublier certains, et ceux-ci perdent leur intérêt
- En travaillant en mode "intégration continue" et en exécutant les tests unitaires sur un serveur de build de manière automatique après chaque check-in, les allers retours avec le contrôleur de source pour corriger en cas de problème sont aussi une perte de temps considérable
La solution dans VS Rosario se place au niveau de l'intelligence de l'environnement de développement, toujours dans la fenêtre "Test View" ou la notion de "Test impacté" fait son apparition. A chaque modification d'un bout de code, Rosario identifie ainsi automatiquement la liste des tests le validant et les groupe sous l'intitulé "Recommanded".
Par exemple, suite à une micro modification dans le code, la liste de tests unitaires présente dans mon projet devient automatique groupée de la sorte:
Au vu de de la modification apportée au code, Visual Studio recommande donc l'exécution de 3 tests.
Il est ainsi nécessaire de sélectionner les trois (ou leur groupe) et de les exécuter pour obtenir le résultat suivant (cliquez pour agrandir l'image):

Dans cet exemple la, 2 tests ont réussit, ils sont donc automatiquent regroupés sous l'intitulé "Verified", vu qu'il n'est plus nécessaire de les exécuter (si le code est de nouveau modifié, il reviendront bien sur dans le groupe "Recommanded"). Le 3eme test a part contre échoué, de ce fait, il reste dans l'état "Recommended" car il est nécessaire de le rejouer (et de modifier le code) jusqu'a ce qu'il fonctionne.
Avec Rosario, il est donc ainsi possible de n'exécuter que les tests unitaires utiles. Attention, l'intégralité des tests doivent toujours être joués régulièrement, mais ce travail entre très bien dans le rôle du serveur de compilation Team Build, chargé de le faire à chaque archivage ou chaque nuit!