jeudi 2 décembre 2010

Tests super sonics

Hier j'ai assisté à une conférence au Alpes JUG, enfin plutôt deux du même présentateur, David Gageot. Il a d'abord parlé de Git, puis de ce qui m'intéressait plus - comment rendre et les tests très très rapides.

Algodeal tourne leurs 600 classes de test et 60 classes de tests fonctionnels/intégration en moins de 4 minutes!! David n'est pas allé dans le détail des métriques, mais cela couvrirait 60.000 lignes de code.





Voici la liste de conseils que j'ai trouvé pertinents :

  • Effacer du code (et tests) non utilisé (fonctionnalités devenus obsolètes)
  • Faire tout in-memory (DB, mail-server, http-server, ...)
  • Paralléliser (soit les threads junit, soit un projet multi-module)
  • No file access (Apache VFS, Spring ressources)
  • Prenez une suite de tests fonctionnels, découpez en UN test fonctionnel, TOUS les autres cas en tests unitaires.
  • Dans les tests fonctionnels il n'hésite pas à mocker les parties coûteuses
  • Battez-vous contre la complexité de votre application - les utilisateurs veulent une application simple, et il y a un fort lien entre la simplicité de l'utilisation et la simplicité de l'implémentation.
  • Faites un maximum de choses server-side - c'est bcp moins coûteux en temps d'exécution et maintenance de tests.
  • Si vous faites du ajax, encore une fois UN test fonctionnel (éventuellement pas sur plusieurs browsers). Toutes les variations en TU de javascript)
  • Rendez votre application plus rapide, les tests le seront aussi :-)

En regardant cette liste je me dis qu'il n'y a rien d'extraordinaire, mais ça m'a quand même fait l'effet d'une délivrance. C'est une chose d'avoir un sentiment, voire une conviction. C'est autre chose de voir quelqu'un l'appliquer avec succès.

Il a répété plusieurs fois que certes on peut mieux se protéger contre des bugs en prod (et encore je ne suis pas si sûr), mais à quel prix?

Les slides

Il a aussi parlé de GIT. Je m'en sers au quotidien et je savais déjà que c'était génial. Maintenant je sais que c'est mieux que ça.
Les slides