Есть ли основа для запуска модульных тестов на модулях Apache C? - PullRequest
5 голосов
/ 28 ноября 2008

Я собираюсь внести некоторые изменения в существующий модуль Apache C, чтобы исправить некоторые возможные недостатки безопасности и общие плохие практики. Однако функциональность кода должна оставаться неизменной (за исключением случаев, когда это исправляет ошибку). Стандартные регрессионные тесты вроде бы в порядке. Я хотел бы знать, знает ли кто-нибудь о хорошем способе запуска некоторых регрессионных модульных тестов против кода. Я думаю что-то вроде использования C-Unit , но со всеми связями с Apache APR и структурами состояния мне было интересно, есть ли хороший способ проверить это. Есть ли какие-нибудь готовые фреймворки, которые можно использовать, например, с C-unit?

Спасибо

Peter

Ответы [ 2 ]

7 голосов
/ 16 апреля 2009

Я некоторое время думал об этом, но подумал, что кто-то другой может придумать лучший ответ, потому что мой довольно неудовлетворительный: нет, я не знаю ни о какой подобной платформе модульного тестирования.

Я думаю, что вам лучше всего попытаться реорганизовать ваш модуль C так, чтобы его зависимости от базы кода httpd содержались в очень тонком слое клея. Я бы не слишком беспокоился о зависимостях от APR, которые можно легко связать с кодом вашего модульного теста. При использовании записи запроса вы должны попытаться немного абстрагироваться.

Я зайду так далеко и предположу, что такой рефакторинг является хорошей идеей, если предполагается, что в коде есть недостатки безопасности и плохие методы. Обычно это довольно большая работа.

То, что вы также можете рассмотреть, - это запуск интеграционных тестов, а не модульных тестов (в идеале, обоих), то есть составление набора запросов и ожидаемых ответов от сервера и запуск программы для сравнения фактических и ожидаемых ответов.

Итак, не тот ответ, который вы искали, и вы, вероятно, подумали о чем-то подобном. Но, по крайней мере, я могу сказать вам по опыту, что если модуль не может быть заменен чем-то новым по деловым причинам, то рефакторинг его для тестируемости, скорее всего, окупится в долгосрочной перспективе.

1 голос
/ 17 апреля 2009

Потратил некоторое время, осматривая вас, потому что это вопрос, который мне самому любопытно. наткнулся на статью вики о том, что

http://cutest.sourceforge.net/

было использовано для тестирования Apache Portable C во время выполнения. возможно, стоит проверить это.

...