Непрерывная интеграция / модульное тестирование во встроенных системах C ++ - PullRequest
14 голосов
/ 06 мая 2011

Какие инструменты обычно используются для модульного тестирования и особенно для непрерывной интеграции для встроенных систем?

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

Что я мог бы использовать, чтобы уменьшить эти трудности?

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

Ответы [ 5 ]

7 голосов
/ 10 мая 2011

Для модульного тестирования взгляните на Unity. http://sourceforge.net/apps/trac/unity/wiki Это действительно легкий тестовый комплект (2 x .h и 1 x .c файл), поддерживаемый скриптами Ruby. Мы использовали во встроенной целевой системе ARM7 для модульного тестирования (перенаправление отчетов о тестировании через последовательный порт). Он также поддерживается CMock для (сюрприз, сюрприз) Mocking. Несмотря на то, что они не обширны, их отличает простота использования. Что касается CI, то Хадсон очень хорош, если вы работаете на Linux. Также посмотрите на CppUTest и ознакомьтесь с книгой Джеймса Греннинга "TDD для Embedded C" по адресу http://renaissancesoftware.net/

6 голосов
/ 10 мая 2011

На работе использую фреймворк embUnit:

http://embunit.sourceforge.net/embunit/index.html

Хорошая вещь об этой структуре - то, что это - худой. Не требует никаких внешних библиотек (даже libc). Вы можете легко подключить свою собственную функцию вывода, так что если вы работаете в системе, где единственным подключением к внешнему миру является jtag или UART, то embUnit все равно будет работать.

4 голосов
/ 06 мая 2011

Я использовал RCUNIT и CANTATA ++ для модульного тестирования встроенного кода на ПК. Любая Nunit должна легко интегрироваться в любую платформу непрерывного тестирования. Нам было гораздо проще просто смоделировать аппаратное обеспечение на ПК и тестировать только на целевом устройстве во время окончательной интеграции.

Абстракция аппаратного интерфейса имеет решающее значение для модульного тестирования встроенного кода на ПК. Это хорошо работает с непрерывной интеграцией, так как он запускается на ПК с имитацией аппаратного доступа. Приложив немного усилий, мы смогли протестировать 95% кода на ПК для дальнейшей интеграции.

Вы также можете посмотреть на эти вопросы:

0 голосов
/ 03 мая 2017

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

0 голосов
/ 06 мая 2011

Я видел модуль C (pp), используемый в системе, которая позволяет запускать цель с помощью JTAG.

Помогает сортировать консольные сообщения и т. Д.

Но это может работать.

...