2008-11-28 29 views
5

Je suis sur le point d'apporter des modifications à un module Apache C existant afin de corriger certaines failles de sécurité et de mauvaises pratiques générales. Cependant la fonctionnalité du code doit rester inchangée (sauf dans les cas où il corrige un bug). Les tests de régression standard semblent être en ordre. Je voudrais savoir si quelqu'un connaît un bon moyen d'exécuter des tests unitaires de régression contre le code. Je pense quelque chose dans le sens de l'utilisation de C-Unit mais avec tous les liens avec les APR Apache et les structures de statut, je me demandais s'il y avait un bon moyen de tester cela. Y a-t-il des frameworks pré-construits qui peuvent être utilisés avec l'unité C par exemple?Existe-t-il un cadre pour exécuter des tests unitaires sur les modules Apache C?

Merci

Peter

Répondre

7

J'ai pensé à répondre pendant un certain temps, mais FIGURED quelqu'un d'autre pourrait trouver une meilleure réponse, parce que la mienne est assez peu satisfaisant: non, je ne suis pas au courant de tout cadre de test unitaire.

Je pense que votre meilleur pari est d'essayer de refactoriser votre module C de telle sorte que ses dépendances sur la base de code httpd sont contenues dans une couche de colle très fine. Je ne m'inquiéterais pas trop des dépendances sur APR, qui peuvent facilement être liées à votre code de test unitaire. C'est comme utiliser l'enregistrement de requête que vous devriez essayer d'extraire un peu. Je vais aller aussi loin et suggérer qu'un tel refactoring est une bonne idée si le code est suspecté de contenir des failles de sécurité et de mauvaises pratiques. C'est juste un gros boulot. Ce que vous pouvez également envisager est d'exécuter des tests d'intégration plutôt que des tests unitaires (idéalement les deux), à savoir un ensemble de requêtes et de réponses attendues du serveur, et d'exécuter un programme pour comparer les réponses réelles aux attentes. Donc, pas la réponse que vous cherchiez, et vous avez probablement pensé à quelque chose le long de cette ligne vous-même. Mais au moins je peux vous dire par expérience que si le module ne peut pas être remplacé par quelque chose de nouveau pour des raisons commerciales, alors le refactoring pour la testabilité sera probablement rentable à plus long terme.

1

J'ai passé un peu de temps à regarder les interwebs pour vous car c'est une question que j'étais curieuse moi-même. suis tombé sur un article wiki indiquant que

http://cutest.sourceforge.net/

a été utilisé pour les essais d'exécution c portable apache. pourrait être utile de vérifier cela.