Какие доступные программные инструменты используются сегодня для тестирования прошивки? - PullRequest
11 голосов
/ 19 марта 2011

Я инженер-программист, который / может быть нанят инженером по тестированию прошивки.Я просто хочу получить представление о некоторых доступных на рынке программных инструментах, используемых для тестирования микропрограмм.Можете ли вы заявить о них и немного объяснить, какой тип тестирования они предоставляют для прошивки?Заранее спасибо.

Ответы [ 3 ]

13 голосов
/ 20 марта 2011

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

Что касается инструментов, их можно разделить на статический анализ и динамический анализ. Статические инструменты анализируют исходный код без выполнения, тогда как динамический анализ связан с поведением кода во время выполнения. Некоторые (дорогие) инструменты выполняют «абстрактное выполнение», которое представляет собой метод статического анализа, который определяет, как код может потерпеть неудачу во время выполнения без фактического выполнения, этот подход требует больших вычислительных затрат, но может обрабатывать гораздо больше путей выполнения и состояний переменных, чем традиционный динамический анализ.

Самой простой формой статического анализа является проверка кода; заставить человека читать твой код. Существуют инструменты, помогающие даже в этом якобы ручном процессе, такие как SmartBear's Code Collaborator . Аналогично, самая простая форма динамического анализа - просто пройтись по коду в отладчике или даже просто запустить код с различными сценариями тестирования. Первое может быть сделано программистом во время разработки и отладки модуля, а второе больше подходит для приемочного или интеграционного тестирования.

Несмотря на то, что хорошо выполненный анализ кода может удалить большое количество ошибок, особенно ошибок проектирования, он не настолько эффективен, возможно, при поиске определенных типов ошибок, вызванных тонкой или загадочной семантикой языков программирования. Этот тип ошибок поддается автоматическому обнаружению с использованием инструментов статического анализа, таких как Gimpel's PC-Lint и FlexeLint или Programming Research - инструменты QA , хотя и с более низкими затратами, такими как настройка компилятора высокий уровень предупреждения и компиляция с несколькими компиляторами также полезны.

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

Более мощные инструменты / поставщики включают Coverity , PolySpace (инструмент абстрактного анализа), Cantata , LDRA и Klocwork . На нижнем уровне (по цене, не обязательно эффективности) находятся такие инструменты, как PC-Lint и Tessy , или даже splint с открытым исходным кодом (только C) и большое количество из инструментов для модульного тестирования

9 голосов
/ 19 марта 2011

Вот некоторые методы тестирования прошивки, которые я нашел полезными ...

  1. Юнит тест на ПК; т.е. извлеките функцию из прошивки, скомпилируйте и протестируйте ее на более быстрой платформе. Это позволит вам, например, полностью протестировать функцию, в то время как это будет непомерно много времени на месте.

  2. Инструментируйте обработчики прерываний встроенного программного обеспечения, используя автономный аппаратный таймер: отметки при входе и выходе и количество прерываний. Отслеживайте минимальную и максимальную частоту и период для каждого обработчика прерываний. Эти данные могут быть использованы для монотонного анализа скорости или монотонного анализа предельного срока.

  3. Используйте стандартный протокол, такой как Modbus RTU, чтобы сделать массив данных о состоянии доступным по запросу. Это можно использовать для данных конфигурации и проверки.

  4. Встраивание номера версии микропрограммы в код с использованием автоматического процесса сборки, например, путем получения информации о версии из репозитория исходного кода. Сделайте номер версии доступным, используя # 3.

  5. Используйте пух или другой инструмент для статического анализа. Требовать нулевые предупреждения от lint и от компилятора с -Wall.

  6. Дополните ваши инструменты сборки средствами для встраивания CRC прошивки в код и проверки его во время выполнения.

0 голосов
/ 21 марта 2011

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

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

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

...