doctest
- Mélange entre la documentation et les tests
- Tests écrits dans les commentaires
- Tests écrits sous forme de documentation
doctest
- Syntaxe intuitive et efficace
- Tests proche du code et à jour
- Exemple : hachoir_core.bits
Tests unitaires
- Tests utilisés pour les fonctions simples
- Réduit aux fonctions sans effet de bord
- Je préfère les écrire sous forme de doctests
- Intérêt limité car ne s'appliquent qu'à peu de cas
Tests fonctionnels
- Teste une fonctionnalité du programme
- Utilise une bibliothèque ou directement le programme
Tests fonctionnels
- Désavantage : un bogue peut impacter de nombreux tests
- (et donc) : difficulté pour isoler le bogue
- Avantage : meilleure couverture du code (que les tests unitaires)
Couverture de code
- Mesure chaque ligne exécutée et le nombre de hits
- Permet de trouver le code mort (non testé)
- Outil trace2html écrit par Olivier Grisel
- Démo. : couverture de code d'Hachoir
(script couverture_code.sh)
Mise en place dans Hachoir
- Besoin de tests : bogues trouvés juste après une release
- Partie doctests
- Création d'un jeu de (fichiers de) test
Mise en place dans Hachoir
Mise en place dans Hachoir
- Écriture d'un script de test global (test_all.sh)
- Lancement quotidient des tests à 5h23 avec cron
- Mes impressions sur les tests
Mise en place dans NuFW
- Expression du besoin : beaucoup de code (22000 lignes), peu de monde pour le tester
- Pare-feu authentifiant écrit en langage C
- Choix entre des tests manuels ou des tests automatisés
- Maquette Python avec le module unittest
Mise en place dans NuFW
- Consulter le dossier tests
- Écriture d'outils pour les tests
- Lancement de tous les tests dans un ordre aléatoire
- Mise en place dans un buildbot : envoi d'un email a l'auteur du bogue