Требуется помощь по автоматическому тестированию API - PullRequest
2 голосов
/ 02 апреля 2010

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

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

Вам повезло с автоматическим тестированием API?Как вы думаете, есть лучший инструмент, который можно использовать для автоматической генерации модульных тестов для кода C?

Ответы [ 2 ]

1 голос
/ 10 января 2011

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

Самый популярный вариант использования этой платформы - быстрый поиск проблем с памятью (segfaults) в библиотеке. Исторически эта платформа использовалась для создания тестовых наборов LSB для слишком больших библиотек, таких как Qt3 и Qt4, которые не могут быть созданы вручную в разумные сроки.

Используйте следующую команду для генерации, построения и выполнения тестов:

api-sanity-checker -l name -d descriptor.xml -gen -build -run

XML-дескриптор - это простой XML-файл, который указывает номер версии, пути к заголовкам и общим объектам:

<version>
    0.3.4
</version>

<headers>
    /usr/local/libssh/0.3.4/include/
</headers>

<libs>
    /usr/local/libssh/0.3.4/lib/
</libs>

Вы можете улучшить сгенерированные тесты, используя специализированные типы для входных параметров.

См. пример сгенерированных тестов для freetype2 2.4.8.

0 голосов
/ 02 апреля 2010

Во-первых, это рецепт катастрофы. Если вы автоматически генерируете модульные тесты, вы получите кучу тестов, которые ничего не значат. Если у вас есть библиотека, которая не включена в автоматизированные тесты, то по определению эта библиотека является устаревшим кодом. Подумайте о том, чтобы придерживаться общепринятого подхода к устаревшему коду ...

За каждое изменение:

  1. Поведение булавки с тестами
  2. Рефакторинг по принципу открытого-закрытого (сложнее сделать с C, но не невозможно)
  3. Изменения диска для нового кода с тестами

Также рассмотрите возможность приобретения копии Эффективная работа с устаревшим кодом .

EDIT:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...