Il y a quelques jours, j'ai commencé à me pencher sur un framework de test unitaire appelé check, et j'ai l'intention d'exécuter le test sur du code c sous Linux.
Maintenant, vérifiez et un code bien conçu et un code de test peuvent m'aider à vérifier. que la fonctionnalité de base est correcte, Je veux dire qu'il est assez facile de regarder les variables en entrée et la réponse en retour, puis de décider si une fonction est correcte ou non.
Mais disons que je veux tester une structure de mémoire dynamique avec beaucoup de malloc et de free, et qu'il s'avère que je peux y mettre des données et récupérer des données correctes. Mais cela ne prouve pas que je n'ai pas cassé de la mémoire au cours du processus, disons que j'ai oublié de libérer la moitié de la mémoire et que j'ai perdu les pointeurs (un memleak classique). Ce code passerait probablement la plupart des tests unitaires.
Passons maintenant à la question : est-ce une bonne idée d'exécuter l'ensemble du code de test unitaire avec, par exemple, Valgrind et de le laisser détecter les problèmes de malloc/free ? (Ou peut-être compiler dans quelque chose comme Electric Fence ?)
C'est une bonne idée, mais je ne sais pas trop dans quoi je m'embarque ici.....
Remerciements Johan
Mise à jour : Merci Douglas et Jonathan, il semble que ce soit une bonne idée et que je devrais continuer :-)
Mise à jour : Valgrind est un outil amusant, mais les premiers memleaks que j'ai trouvés en faisant ceci était dans le framework de test et non dans mon propre code (assez drôle cependant). Donc, un conseil pour les autres est de vérifier que le cadre de test unitaire que vous utilisez ne fuit pas, avant de mettre votre propre code à l'envers. Un scénario de test vide était tout ce dont j'avais besoin dans mon cas, depuis lors, rien d'autre que le cadre de test unitaire ne tourne.