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