Cela fait déjà un bon moment que je mets en place les tests unitaires dans mes projets au niveau des couches métier et d’accès aux données. Il est vrai que cela améliore grandement la qualité finale de la livraison à condition que les tests soient bien écrits et maintenus. Il est aussi vrai que les tests prennent beaucoup de temps à être écrits mais au final nous en gagnons par la suite, quand le produit rentre en mode maintenance ou ajout des fonctionnalités.
En fait à vrai dire, je ne me suis jamais trop préoccupé des tests unitaires liés aux pages web. D’abord parce qu’avant d’apprendre à écrire les tests unitaires « corrects » des couches métier il fallait du temps (et je pense que j’ai encore beaucoup à apprendre) et ensuite parce que je ne savais pas trop comment m’y prendre. J’ai choisi donc d’apprendre d’abord les tests unitaires sans rentrer dans la logique des pages web.
Mais le temps est venu de reconsidérer la question. Le temps que je gagne au final, j’aimerais aussi le gagner en ajoutant les tests à mes pages web. Ne connaissant rien j’ai commencé à jouer avec WatiN mais avant de m’y employer à plein temps j’ai fait ma petite recherche sur les outils existant pour les tests des pages web et voici ce que j’ai trouvé :
- Selenium
- WatiN
- Ivonna
- NUnitAsp
- Team System Web Test
Selenium
http://selenium.openqa.org
C’est un framework de tests d’intégration afin d’automatiser les tests des applications web à travers des plateformes multiples. Il a beaucoup de fonctionnalités mais leur apprentissage peut être très long.
WatiN
http://watin.sourceforge.net
C’est un framework inspiré de Watir (Web application testing in Ruby). Il est open source et permet d’écrire des scripts pour les actions des navigateurs (en C# par exemple).
Ivonna
http://sm-art.biz/Ivonna.aspx
Ivonna me parait vraiment pas mal. C’est un framework de tests unitaires qui permet d’exécuter les tests ASP.NET sans utiliser la vraie session HTTP et les pages (d’après ce que j’ai compris). Les fonctionnalités également appréciable est la compilation des pages à la volé que vous souhaitez tester les contrôles à l’intérieur de ces pages sans le navigateur. Le seul problème est qu’il faut disposer d’une licence de Typemock Isolator framework pour pouvoir en bénéficier (en même temps Ivonna a été écrite en collaboration avec Typemock).
NUnitAsp
http://nunitasp.sourceforge.net
Il n’est plus maintenu donc je ne pense pas qu’il faut s’attendre sur ses fonctionnalités.
Team System Web Test
Il faut avouer que le Team System Web Test a des fonctionnalités intéressantes et parait être un outil très puissant permettant par exemple d’enregistrer et de rejouer les requêtes web pour les pages et vérifier différentes choses pendant l’exécution. Le seul problème est qu’il faut disposer de Visual Studio Team Test ou Team Suite.
Je ne me suis pas penché sur d’autres solutions. Je vais bientôt essayer d’en tester quelques unes et en apprendre d’avantage. Si vous faites ce genre de tests unitaires, je serai contant d’avoir un retour sur votre expérience. Quel framework et pourquoi ? Les avantages et les inconvénients. Les pièges à éviter…
A bientôt
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :